1. DDL(Data Definition Language)数据定义语言
1.1. 增删数据库
-
创建库
create database db1;
-
创建库是否存在,不存在则创建
create database if not exists db1;
-
查看所有数据库
show databases;
-
查看某个数据库的定义信息
show create database db1;
-
修改数据库字符信息
alter database db1 character set utf8;
-
删除数据库
drop database db1;
1.2. 修改删除表
-
查看表结构
desc 表名;
-
查看创建表的SQL语句
show create table 表名;
-
修改表名
alter table 表名 rename to 新的表名;
-
添加一列
alter table 表名 add 列名 数据类型;
-
删除列
alter table 表名 drop 列名;
-
删除表
drop table 表名;
drop table if exists 表名 ;
2. DML(Data Manipulation Language)数据操作语言
2.1. 增加 insert into
-
写全所有列名
insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
-
不写列名 (所有列全部添加)
insert into 表名 values(值1,值2,...值n);
-
插入部分数据
insert into 表名(列名1,列名2) values(值1,值2);
2.2. 删除 delete
-
删除表中数据
delete from 表名 where 列名 = 值;
-
删除表中所有数据
delete from 表名;
-
删除表中所有数据 (高效 先删除表,然后再创建一张一样的表。)
truncate table 表名;
2.3. 修改 update
-
不带条件的修改(会修改所有行)
update 表名 set 列名 = 值;
-
带条件的修改
update 表名 set 列名 = 值 where 列名= UPDATE [IGNORE] table_name SET column_name1 = value1, column_name2 = value2, ... [WHERE clause];
3. DQL(Data Query Language)数据查询语言
3.1. 排序查询 order by
- 语法 order by 子句
SELECT * FROM person ORDER BY math; #默认升序 SELECT * FROM person ORDER BY math desc; #降序
3.2. 聚合函数
- 将一列数据作为一个整体,进行纵向的计算
- count: 计算个数
- max: 计算最大值
- min: 计算最小值
- sum: 计算和
- avg: 计算平均数
3.3. 分组查询 group by
-
语法: group by 分组字段;
-
注意: 分组之后查询的字段: 分组字段、聚合函数
-
按照性别分组。分别查询男、女同学的平均分
SELECT gender,AVG(math) FROM student GROUP BY gender;
-
按照性别分组。分别查询男、女同学的平均分,人数
SELECT gender,AVG(math),COUNT(id) FROM student GROUP BY gender;
3.4. 分页查询
- 语法: imit 开始的索引,每页查询的条数;
- 公式: 开始的索引 = (当前的页码 - 1) * 每页显示的条数;
- limit 是一个MySQL"方言", 每页显示3条记录;
SELECT * FROM student LIMIT 0,3; # 第1页 SELECT * FROM student LIMIT 3,3; # 第2页 SELECT * FROM student LIMIT 6,3; # 第3页
3.5. 子查询
查询中嵌套查询
查询年龄最高的人员信息
- 查询最高的年龄
SELECT MAX(age) FROM emp;
- 查询人员信息,并且年龄等于30的
SELECT * FROM emp WHERE emp.'age' = 30;
- 一条sql就完成这个操作。这就是子查询
SELECT * FROM emp WHERE emp.'salary'=(SELECT MAX(age) FROM emp);
3.6. 连接查询
- 左外连接 -- 查询的是左表所有数据以及其交集部分
select 字段列表 from 表1 left [outer] join 表2 on 条件
- 右外连接 -- 查询的是右表所有数据以及其交集部分
select 字段列表 from 表1 right [outer] join 表2 on 条件