DDL:数据定义语言
查询所有数据库:show databases;
查询当前数据库:show databases();
使用数据库:use 数据库名;
创建数据库:create database [if not exists] 数据库名;
删除数据库:drop database [if exists] 数据库名;
创建表:
create table 表名(
字段1 字段1类型 [约束] [comment 字段1注释 ],
字段2 字段2类型 [约束] [comment 字段2注释 ],
......
字段n 字段n类型 [约束] [comment 字段n注释 ]
) [ comment 表注释 ] ;
create table tb_user (
id int comment 'ID,唯一标识',
username varchar(20) comment '用户名',
name varchar(10) comment '姓名',
age int comment '年龄',
gender char(1) comment '性别'
) comment '用户表';
约束:作用在表中字段上的规则
not null:限制该字段值不能为null
unique:保证字段的所有数据都是唯一、不重复的
primary key:主键是一行数据的唯一标识,要求非空且唯一
default:保存数据时,如果未指定该字段值,则采用默认值
foreign key:让两张表的数据建立连接,保证数据的一致性和完整性
查询当前数据库所有表:show tables;
查询表结构:desc 表名;
查询建表语句:show create table 表名;
删除表:drop table [if exists] 表名;
DML:数据操作语言
向全部字段添加数据:insert into 表名 values (值1, 值2, ...);
向指定字段添加数据:insert into 表名 (字段名1, 字段名2) values (值1, 值2);
批量添加数据(指定字段):insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);
批量添加数据(全部字段):insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);
DQL:数据查询语言
查询多个字段:select 字段1, 字段2, 字段3 from 表名;
查询所有字段:select * from 表名
设置别名:select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] from 表名;
去除重复记录:select distinct 字段列表 from 表名;
条件查询:select 字段列表 from 表名 where 条件列表 ;
聚合函数:select 聚合函数(字段列表) from 表名;
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
分组查询:
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
select job, count(*)
from tb_emp
where entrydate <= '2015-01-01' -- 分组前条件
group by job -- 按照job字段分组
having count(*) >= 2; -- 分组后条件
where和having区别:
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
排序查询:
select 字段列表
from 表名
[where 条件列表]
[group by 分组字段 ]
order by 字段1 排序方式1 , 字段2 排序方式2 … ;
ASC:升序(默认) DESC:降序
分页查询:select 字段列表 from 表名 limit 起始索引, 查询记录数 ;