1、sql 新增语句

  • 表中插入数据
    • insert into + 表名 values(字段1value1,字段2value1,字段3value1),(字段1value2,字段2value2,字段3value2)
mysql> insert into t_student values(1,"zhangsan",18,"boy"),(2,"wangwu",20,"girl");

mysql> select * from t_student;
+----+----------+------+------+
| id | name     | age  | sex  |
+----+----------+------+------+
|  1 | zhangsan |   18 | boy  |
|  2 | wangwu   |   20 | girl |
+----+----------+------+------+
  • 对表中指定字段插入数据
    • insert into +表名(字段1,字段2) values (字段1值,字段2值)
mysql> insert into t_student(id,name,age,sex)values(3,"zhaoliu",19,"boy");

mysql> select * from t_student;+----+----------+------+------+
| id | name     | age  | sex  |
+----+----------+------+------+
|  1 | zhangsan |   18 | boy  |
|  2 | wangwu   |   20 | girl |
|  3 | zhaoliu  |   19 | boy  |
+----+----------+------+------+

 

2、sql 删除语句

  • 删除表中指定数据
    • delete from + 表名 where 条件  
    • delete from + 表名  --->     清空表
# 删除 t_student 表中 id = 4 的数据mysql> delete from t_student where id = 4# 清空 t_student 表mysql> delete from t_student

 

3、sql 修改语句

  • 更新表中指定字段数据
    • update + 表名 set 字段名=值 where 条件  
# 修改 t_student 表中 wangwu 的性别为 boymysql> update t_student set sex = "boy" where name = "wangwu";

mysql> select * from t_student;
+----+----------+------+------+
| id | name     | age  | sex  |
+----+----------+------+------+
|  1 | zhangsan |   18 | boy  |
|  2 | wangwu   |   20 | boy  |
|  3 | zhaoliu  |   19 | boy  |
+----+----------+------+------+

 

4、sql 单表查询语句

  • 查询表中所有数据
    • * 代表所有
    • select * from + 表名
# 查询 t_student 表中所有数据mysql> select * from t_student;+----+----------+------+------+
| id | name     | age  | sex  |
+----+----------+------+------+
|  1 | zhangsan |   18 | boy  |
|  2 | wangwu   |   20 | boy  |
|  3 | zhaoliu  |   19 | boy  |
+----+----------+------+------+
  •  查询某个字段的数据
    • select 字段 from + 表名
# 查询出 t_student 表中 name 字段的所有数据mysql> select name from t_student;+----------+
| name     |
+----------+
| zhangsan |
| wangwu   |
| zhaoliu  |
+----------+
  • 查询多个字段的数据
    • select 字段1,字段2 from + 表名
# 查询出 t_student 表中 name,age 两个字段的所有数据mysql> select name,age from t_student;+----------+------+
| name     | age  |
+----------+------+
| zhangsan |   18 |
| wangwu   |   20 |
| zhaoliu  |   19 |
+----------+------+
  • 查询满足某个条件的所有数据
    • where 后面接满足的条件
    • select * from + 表名 where 字段=值
mysql> select age,sex from t_student where name = "zhaoliu";+------+------+
| age  | sex  |
+------+------+
|   19 | boy  |
+------+------+
  • 查询不满足某个条件的所有数据
    • != 代表不等于,也可以用符号 <> 代表不等于  
    • select * from + 表名 where 字段 != value
mysql> select age,sex from t_student where name != "zhaoliu";+------+------+
| age  | sex  |
+------+------+
|   18 | boy  |
|   20 | boy  |
+------+------+mysql> select age,sex from t_student where name <> "zhaoliu";+------+------+
| age  | sex  |
+------+------+
|   18 | boy  |
|   20 | boy  |
+------+------+
  • 查询同时满足多个条件数据
    • and 关键字左右的两个条件必须同时满足
    • select * from + 表名 where 条件1 and 条件2
# 查询出性别为 boy 且班级为 2 班的学生信息mysql> select * from t_student where sex = "boy" and class = 2;+----+---------+------+------+-------+
| id | name    | age  | sex  | class |
+----+---------+------+------+-------+
|  3 | zhaoliu |   19 | boy  | 2     |
+----+---------+------+------+-------+
  • 查询满足至少 1 个条件的数据
    • or 关键字左右的两个条件至少满足 1 个,否则返回空
    • select * from + 表名 where 条件1 or 条件2
# 查询出年纪为 18 岁 或者班级为 2 班的学生信息mysql> select * from t_student where age = 18 or class = 2;+----+----------+------+------+-------+
| id | name     | age  | sex  | class |
+----+----------+------+------+-------+
|  1 | zhangsan |   18 | boy  | 1     |
|  3 | zhaoliu  |   19 | boy  | 2     |
+----+----------+------+------+-------+
  • 查询一个条件范围内的数据
    • between...and ... 指定一个范围
    • select * from + 表名 where 字段 between m and n
# 查询出年纪在 19 - 20 之间的学生信息mysql> select * from t_student where age between 19 and 20;+----+---------+------+------+-------+
| id | name    | age  | sex  | class |
+----+---------+------+------+-------+
|  2 | wangwu  |   20 | boy  | 1     |
|  3 | zhaoliu |   19 | boy  | 2     |
+----+---------+------+------+-------+
  • 查询字段满足在指定的集合中的数据
    • select * from + 表名 where 字段 in(值1,值2,值3)
mysql> select * from t_student where age in (18,19);+----+----------+------+------+-------+
| id | name     | age  | sex  | class |
+----+----------+------+------+-------+
|  1 | zhangsan |   18 | boy  | 1     |
|  3 | zhaoliu  |   19 | boy  | 2     |
+----+----------+------+------+-------+
  • 查询字段不满足在指定集合中的数据
    • select * from + 表名 where 字段 not in (值1,值2,值3)
mysql> select * from t_student where age not in (18,19);+----+--------+------+------+-------+
| id | name   | age  | sex  | class |
+----+--------+------+------+-------+
|  2 | wangwu |   20 | boy  | 1     |
+----+--------+------+------+-------+
  • 查询字段值为空的数据
    • 注意:字段是空不能写成 字段 = null
    • select * from + 表名 where 字段 is null  
mysql> select * from t_student where class is NULL;+----+------+------+------+-------+
| id | name | age  | sex  | class |
+----+------+------+------+-------+
|  4 | lisi |   22 | girl | NULL  |
+----+------+------+------+-------+
  • 查询字段不为空的数据
    • select * from + 表名 where 字段 is not null
mysql> select * from t_student where class is not NULL;+----+----------+------+------+-------+
| id | name     | age  | sex  | class |
+----+----------+------+------+-------+
|  1 | zhangsan |   18 | boy  | 1     |
|  2 | wangwu   |   20 | boy  | 1     |
|  3 | zhaoliu  |   19 | boy  | 2     |
+----+----------+------+------+-------+
  • 查询某个字段模糊匹配成功的数据  
    • % 用于匹配字段开头和结尾
    • select * from +表名 where 字段 like "%值%"
# 查询出表中姓 zhang 的学生信息mysql> select * from t_student where name like "zhang%";+----+----------+------+------+-------+
| id | name     | age  | sex  | class |
+----+----------+------+------+-------+
|  1 | zhangsan |   18 | boy  | 1     |
+----+----------+------+------+-------+# 查询出表中姓名中带有 ng 的学生信息mysql> select * from t_student where name like "%ng%";+----+----------+------+------+-------+
| id | name     | age  | sex  | class |
+----+----------+------+------+-------+
|  1 | zhangsan |   18 | boy  | 1     |
|  2 | wangwu   |   20 | boy  | 1     |
+----+----------+------+------+-------+
  • 查询限定的数量的数据
    • m 指下标,n 指限定的数量,下标为 m 的开始的 n 条数据
    • select * from + 表名 limit m,n    
# 查询出表中 第 2,3 两行学生信息mysql> select * from t_student limit 1,2;+----+---------+------+------+-------+
| id | name    | age  | sex  | class |
+----+---------+------+------+-------+
|  2 | wangwu  |   20 | boy  | 1     |
|  3 | zhaoliu |   19 | boy  | 2     |
+----+---------+------+------+-------+
  • 查询的数据根据某个字段从小到大排序
    • order by ...asc 从小到大排序
    • select * from + 表名 order by 字段 asc  
# 查询表数据,按照 age 字段升序排序mysql> select * from t_student order by age asc;+----+----------+------+------+-------+
| id | name     | age  | sex  | class |
+----+----------+------+------+-------+
|  1 | zhangsan |   18 | boy  | 1     |
|  3 | zhaoliu  |   19 | boy  | 2     |
|  2 | wangwu   |   20 | boy  | 1     |
|  4 | lisi     |   22 | girl | NULL  |
+----+----------+------+------+-------+
  • 查询的数据根据某个字段从大到小排序
    • order by ... desc 从大到小排序
    • select * from + 表名 order by 字段 desc  
# 查询表数据,按照 age 字段降序排序mysql> select * from t_student order by age desc;+----+----------+------+------+-------+
| id | name     | age  | sex  | class |
+----+----------+------+------+-------+
|  4 | lisi     |   22 | girl | NULL  |
|  2 | wangwu   |   20 | boy  | 1     |
|  3 | zhaoliu  |   19 | boy  | 2     |
|  1 | zhangsan |   18 | boy  | 1     |
+----+----------+------+------+-------+
  • 查询的数据根据某个字段进行分组
    • group by ... 根据条件分组
    • select * from + 表名 group by 字段
mysql> select * from t_student group by class;+----+----------+------+------+-------+
| id | name     | age  | sex  | class |
+----+----------+------+------+-------+
|  4 | lisi     |   22 | girl | NULL  |
|  1 | zhangsan |   18 | boy  | 1     |
|  3 | zhaoliu  |   19 | boy  | 2     |
+----+----------+------+------+-------+
  • 查询的数据根据某个字段进行分组再条件过滤
    • having 跟在 group by 后面,作用相当于 where
    • select * from + 表名 group by 字段 having 条件
mysql> select * from t_student group by class having sex = "girl";+----+------+------+------+-------+
| id | name | age  | sex  | class |
+----+------+------+------+-------+
|  4 | lisi |   22 | girl | NULL  |
+----+------+------+------+-------+
  • 聚合函数
    • select count(*) from + 表名
    • 统计查询数据的数量  
# 统计表中有多少行数据mysql> select count(*) from t_student;+----------+
| count(*) |
+----------+
|        4 |
+----------+
    • select sum(字段) from + 表名
    • 查询某个字段求和
# 求出所有学员年纪之和mysql> select sum(age) from t_student;+----------+
| sum(age) |
+----------+
|       79 |
+----------+
    • select avg(字段) from + 表名
    • 查询某个字段进行平均值
# 求出平均年纪mysql> select avg(age) from t_student;+----------+
| avg(age) |
+----------+
|  19.7500 |
+----------+
    • select max(字段) from + 表名
    • 查询某个字段最大值
# 求出最大年纪mysql> select max(age) from t_student;+----------+
| max(age) |
+----------+
|       22 |
+----------+
    • select min(字段) from + 表名
    • 查询某个字段最小值
# 求出最小年纪mysql> select min(age) from t_student;+----------+
| min(age) |
+----------+
|       18 |
+----------+
    • select distinct(字段) from + 表名
    • 对某个字段进行去重
# 对 class 字段去重mysql> select distinct(class) from t_student;+-------+
| class |
+-------+
| 1     |
| 2     |
| NULL  |
+-------+