==数据库==
1、创建数据库
create database [IF NOT EXISTS] 数据库名;

2、删除数据库
drop database [IF EXISTS] 数据库名;

3、切换数据库
select database();

4、查询数据库
show databases;

————————————————————————————

==数据表==
1、创建数据表
create table 表名(
  字段名1 字段类型1(字段长度) [ 约束 ] [ comment 字段1注释 ], — 不是 ; 号
  字段名2 字段类型2(字段长度) [ 约束 ] [ comment 字段2注释 ],
  ….
  字段名n 字段类型n(字段长度) [ 约束 ] [ comment 字段2注释 ] — 最后一列后面是没有,的
) [ comment 表注释 ];

2、删除数据表
==删除表==: drop table [ if exists ] 表名

3、修改数据表
==添加字段==: alter table 表名 add 字段名 类型(长度)

==修改字段类型==: alter table 表名 modify 字段名 新数据类型(长度)

==修改字段名和字段类型==: alter table 表名 change 旧字段名 新字段名 类型 (长度)

==删除字段==: alter table 表名 drop column 字段名

==修改表名==: rename table 表名 to 新表名

4、查询数据表
==查询当前数据库所有表==: show tables

==查询表结构==: desc 表名

==查询建表语句==: show create table 表名

————————————————————————————

==数据==

1、添加数据
==指定字段添加数据==: insert into 表名 (字段名1, 字段名2) values (值1, 值2)

==全部字段添加数据==: insert into 表名 values (值1, 值2, …)

==批量添加数据(指定字段)==: insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2)

==批量添加数据(全部字段)==: insert into 表名 values (值1, 值2, …), (值1, 值2, …)

2、删除数据
==删除数据==: delete from 表名 [ where 条件 ]

3、修改数据
==修改数据==: update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , …. [ where 条件 ]

4、查询数据
==查询指定字段==: select 字段1, 字段2, 字段3 from 表名

==查询所有字段==: select * from 表名

==设置别名==: select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] from 表名

==去除重复记录==: select distinct 字段列表 from 表名

==条件查询==: select 字段列表 from 表名 `where 条件列表 `

==聚合函数==: 将一列数据作为一个整体,进行纵向计算,语法为: select `聚合函数(字段名)` from 表名

==分组过滤==: select 分组字段,聚合函数() from 表名 `group by 分组字段名` `having 分组后过滤条件`

==排序:== select 字段列表 from 表名 order `by 字段1 排序方式1 , 字段2 排序方式2`
ASC:升序(默认值)DESC:降序

==分页:== select 字段列表 from 表名 `limit 起始索引, 查询记录数`

select 集合函数() from 表 [where 条件] [group by 分组] [having 过滤] [order by 排序] [limit 截取]
1. 普通条件: where
2. 排序: order by 列 asc升序(默认) desc降序
3. 聚合函数: count(列)
4. 分组: group by 列
5. 过滤: having 过滤条件
6. 截取: limit 开始,几个

————————————————————————————

==外键约束==
1、创建表的时候添加
create table 表名(
  列名 列类型,
  [constraint 约束名: 外键列_fk] foreign key (列名) references 主表(主键)
)
2、创建表之后单独添加
alter table 表名 add [constraint 约束名] foreign key (列名) references 主表(主键)

————————————————————————————

==连接==

==交叉连接==:select * from 左表,右表

==内连接==
隐式内连接:select * from 左表,右表 where 连接条件
显示内连接:select * from 左表 [inner] join 右表 on 连接条件

==左外连接==
select * from 左表 left [outer] join 右表 on 连接条件

==右外连接==
select * from 左表 right outer join 右表 on 连接条件

==子查询==
单个值,使用 = > < 等进行条件判断 : SELECT 字段列表 FROM 表 WHERE 字段名 = (子查询);
多个值,使用in、not in进行条件判断 : SELECT 字段列表 FROM 表 WHERE 字段名 in (子查询);
一张表,将此结果声明为临时表来使用 : SELECT * FROM (子查询) AS 表 JOIN 表 ON 条件;