DDL(data definition language)用来定义数据库对象:数据库、表、列
数据库
查询数据库集: show databases;
查询当前使用的数据库: select database();
创建数据库: create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则]
删除数据库: drop database [if exists] 数据库名;
使用(切换到)数据库: use 数据库名;
表
查询当前数据库下所有表名称: show tables;
查询表结构: desc 表名;
查询指定表的建表语句: show create table 表名;
创建表:
create table 表名 (
字段名1 字段类型1 [comment 注释内容],
字段名2 字段类型2 [comment 注释内容],
...
字段名n 字段类型n [comment 注释内容]#不用加空格
#这是个注释,不需要空格 -- 这是个注释,需要加空格
);
删除表: drop table [if exists] 表名;
删除指定表,并重新创建该表:truncate table 表名;
修改表名: alter table 表名 rename to 新表名;
添加字段: alter table 表名 add 字段名 字段类型;
删除字段: alter table 表名 drop 字段名;
修改字段类型: alter table 表名 modify 字段名 新字段类型;
修改字段名和字段类型: alter table 表名 change 旧字段名 新字段名 字段类型;
eg:
DML(data management language)数据库管理语言:添加、修改、删除数据
给指定字段添加数据:insert into 表名(字段名1,字段名2...) values (值1,值2,...)
给全部字段添加数据:insert into 表名 values (值1,值2,...);-- (不建议,建议罗列出全部字段方便查阅)
批量添加: insert into 表名 [(字段名1,字段名2,...)] values (值1,值2,...),(值1,值2,...);
修改数据: update 表名 set 字段名1=值1,字段名2=值2,...[where 条件];-- 一般要加where指定具体的修改
删除数据: delete from 表名 [where 条件];
DQL(data query language)数据库查询语言:查询数据
语法: select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数
基本用法
查询具体字段: select 字段1 [as 别名],字段2 [as 别名]... from 表名; #as可以去掉
查询所有字段: select * from 表名; #不建议,应罗列字段列表以方便阅读
查询并去除重复记录:select distinct 字段列表 from 表名;
条件查询:select 字段列表 from 表名 where 条件;
聚合查询:select 聚合函数(字段列表) from 表名;
count、avg、max、min、sum-- null不参与聚合函数的计算
分组查询:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
分组之前的过滤用where,分组之后的过滤用having,执行顺序是 where>聚合函数>having,且分组之后查询的字段一般为聚合函数和分组字段,查询其他字段无意义
eg:查询年龄小于45岁的员工,并根据工作地址分组且分组数量大于等于3
select workaddress,count(*) as address_count from employee where age<45 group by workaddress having address_count>=3;
排序查询:select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2...;
排序方式:asc生序(默认)、desc(降序)
分页查询:select 字段列表 from 表名 limit 起始索引,查询记录数;
注:
起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数;
分页查询每个数据库有不同实现,limit是mysql的特定。
如果查询的是第一页数据,起始索引可以省略,直接简写limit 10
eg:
1.查询第2页员工数据,每页展示10条数据
select * from employee limit 10,10;-- (页码-1)*每页展示记录数
2.查询第1页员工数据,每页展示10条数据
select * from employee limit 0,10;
select * from employee limit 10;
DQL执行顺序:在使用别名的时候执行顺序就显得重要
sql的数据类型
注:double的两个参数,第一个代表整体长度,第二个代表小数点位数