目录
DQL
MySQL的介绍
MySQL是关系型数据库,对大小写不敏感,可以单行或者多行书写,以分号结束 ;
MySQL语法
MySQL在命令提示符上的使用
下面是MySQL关于数据库的操作命令
| |||||||||||||||
这是MySQL关于数据库中表的操作
-- 3.查看当前数据库所有的表
use mydb1;
show tables;
-- 4.查看指定表的创建语句
show create table student;
-- 5.查看表结构
desc student;
-- 6.删除表
drop table student;
-- 修改表结构
-- 1.添加列:alter table 表名 add 列名 类型(长度) [约束]
alter table student add dept varchar(20);
-- 2.修改列名和类型:alter table 表名 change 旧列名 新列名 类型(长度) [约束]
alter table student change dept department varchar(30);
-- 3.修改表删除列:alter table 表名 drop 列名
alter table student drop department;
-- 4.修改表名:rename table 表名 to 表名
rename table student to stu;
DML
DML是对数据中的表进行增删改操作的。
MySQL的DML操作可以看下表
注意事项
数据插入
insert into mydb1.employee(id,name,gender,salary)
values(1,'张三','男',2000),
(2,'李四','男',1000),
(3,'王五','女',4000);
如果表中所有的列都需要插入数据,那么表名后面的(列名,等等)可以不写,但是在实践开发中最好写上,避免values后面的数写错。
如果要插入多行数据,可以在values(1,'张三','男',2000)后面在写一行数据,用”,“隔开。
数据修改
-- 将姓名为'张三'的员工薪水修改为3000元
update mydb1.employee set salary = 3000 where name = '张三';
where name=”张三“ 是当列name的值等于张三时,修改salary的值为3000,如果没有where条件,就是把所有的salary都修改,一定要注意。
数据删除
-- 删除表中的数据 DELETE FROM 表名 [where条件]
DELETE FROM stu where id=1;
-- 查询表的数据
SELECT * FROM stu;
这个和修改类似,注意where条件
DQL
查询最重要,最常用。
下面是单表查询的基本语法
SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段 HAVING 分组后条件 ORDER BY 排序字段 LIMIT 分页限定 |
1,基本查询
SELECT * FROM stu;-- * 表示查询全部
SELECT name FROM stu; -- 表示查询stu表中的name列的数据
最好不要写* ,把改写的列都写出来,便于阅读
把DISTINCT加在select后面可以去除重复后的内容
列后面加空格或as,再加别名,查询后出现的列名就是你起到别名,易于阅读
2,条件查询
SELECT name FROM stu WHERE id>2;--查询当id>2时,stu表中的name列的数据
where条件的符号
注意:
- null不能和等号运算,要 IS NULL或 IS NOT NULL,而不是=null
- SQL语句没有==,相等是=,没有赋值的概念。
- like 可以用来模糊查询,比如赵%,功能就是查询第一个字是赵,后面的其他字无所谓的,赵_,是只有两个字,第一个字是赵,第二个值随便。如果查询含有赵的数据,则%赵%
3,排序查询
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
语句中的排序方式有两种,分别是:
-
ASC : 升序排列 (默认值)ascending /əˈsendɪŋ/
-
DESC : 降序排列,descending /dɪˈsendɪŋ/
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
比如
SELECT * FROM stu ORDER BY PI DESC,NAME ASC;
-- 查询stu表中所有数据,按pi降序排列,如果pi相等,相等的部分再按name升序
4,聚合函数
基本格式:
SELECT 聚合函数名(列名) FROM 表;
聚合函数:
函数名 | 功能 |
---|---|
count(列名) | 统计数量(选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
注意:null 值不参与所有聚合函数运算
注意:
- 使用count带条件统计数量必须or null,否则是统计总数量(条件是distinct除外)
- 使用sum带条件统计数量不用or null
示例:使用count带条件统计数量如果不加or null,就会统计这个字段总数量
5,分组查询
常常和聚合函数一起用。
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
#根据性别分组,每组统计平均值
select sex, avg(math) from stu group by sex;
查询中的select sec --中的sec必须要写,不然就不知道avg(math)查询的是谁的结果
where 和 having 区别:
执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。执行顺序where>聚合函数>having,不可能判断后面执行的条件
6,分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
表示查询表中列的数据,从起始索引开始,查询个数为查询条目数
当起始索引 = (当前页码 - 1) * 每页显示的条数 ,可以实现翻页