一、 对数据库或表的整体操作
1. 创建:create
创建数据库
create database [if not exists] 数据库名 [character set utf8mb4];
这里第二个中括号的代码可以使当前数据库可以使用中文字符集
创建表
create table [if not exists] 表名(field1 datatype1, field2 datatype2...);
2. 删除:drop
删除数据库
drop database [if exists] 数据库名;
删除表
drop table [if exists] 表名;
3. 使用/切换数据库:use
use 数据库名;
二、 对记录的操作
1. 增:insert
insert into 表名[(指定列)] values (field1, field2, ...), (field1, field2, ...), ...;
2. 删:delete
delete from 表名 where 删除条件;
3. 查:select
普通查询
select */[指定列] from 表名 [where 条件];
聚合查询:group by
-
聚合函数
a. sum(列名):计算指定列的和```sql -- 按照指定列分组,并把每组之和计算并显示,行数为组数 select sum(列名)[, 其他列] from 表名 [where 条件] group by 列名; ```
b. avg(列名):计算指定列的平均值
```sql -- 按照指定列进行分组,并把每组计算平均值并显示,行数为组数 select avg(列名)[, 其他列] from 表名 [where 条件] group by 列名; ```
c. min(列名):计算指定列的最小值
```sql -- 按照指定列进行分组,并把每组计算最小值并显示,行数为组数 select min(列名)[, 其他列] from 表名 [where 条件] group by 列名; ```
d. max(列名):计算指定列的最大值
```sql -- 按照指定列进行分组,并把每组计算最大值并显示,行数为组数 select max(列名)[, 其他列] from 表名 [where 条件] group by 列名; ```
e. count(列名):计算指定列的行数
```sql -- 按照指定列进行分组,并计算每组的行数并显示,行数为组数 select count(列名)[, 其他列] from 表名 [where 条件] group by 列名; ```
f. having
在分组查询中,查询条件就分为分组前的查询条件和分组后的查询条件,having是用于设定分组后的查询条件,where是用于设定分组前的查询条件。
联合查询
下面以这两个表进行举例说明各种连接
-
内连接
-- join版本 select */[指定列, ...] from student1 [inner] join score1 on student1.id = score1.student_id; -- where版本 select */[指定列, ...] from student1, score1 where student1.id = score1.student_id;
-
外连接(只能用join):
a. 左连接
b. 右连接
-
自连接:
4. 改:update
update 表名 set 列名=修改的值[, 列名=要修改的值...] where 条件;