MySql中常用的DML(数据管理语言)
一、MySql中常用的DML(数据管理语言)
1、向表中增加数据
Insert into 表名(字段列表) values(值列表)
示例如下(向学生表中插入数据)
INSERT INTO student(sname,sex,address,birthday,classid)
VALUES('黄忠','男','长沙','1998-12-11',1);
2、表中数据的修改
Update 表名 set 字段1=值1,...,字段n=值n where 条件表达式1 [and 或者 or ] 条件表达式2
示例如下,修改学生姓名为赵云的班级编号为3
修改学生赵云的班级编号为3
UPDATE student SET classid=3 WHERE sname='赵云';
修改学生编号为2的学生姓名为貂蝉、性别为女 地址为米脂
UPDATE student SET sname='貂蝉',sex='女',address='米脂' WHERE sid=2;
3、删除表中的数据
delete from 表名 [where 条件];
注意:没有条件的删除,则会删除整张表的记录信息
示例如下:
删除学生编号为3的学生信息(但当表中数据被其他表引用,则不能删除)
DELETE FROM student WHERE sid=3;
注意:当表中记录被其他表引用,则该表的记录不能被删除,出现引用参照错误(外键关联异常)
如果删除主表数据,则需要先删除子表数据,再删除主表数据。
二、MySql的DQL语句(查询语言)
1、 查询表中所有记录
Select 字段列表(或者*) from 表名;
示例:
SELECT * FROM student;
2、 按照指定的条件对表中的记录进行查询
Select * from 表名 where 条件表达式1 (and或者or) 条件表达式2...;
查询班级编号为1的所有学生信息
SELECT * FROM student WHERE classid=1;
查询班级编号为1并且,学生姓名为张飞的学生信息
SELECT * FROM student WHERE classid=1 AND sname='张飞';
3、 设置字段和表的别名的查询
Select 表别名.字段1 as 别名1,..., 表别名.字段n as 别名n from 表名 表别名 [where 条件]
示例如下:
使用别名查询表中数据,其中s为student表的别名
SELECT s.sid 编号,s.sname 姓名,s.sex 性别,s.address 地址,s.birthday 生日,
s.classid 班级
FROM student s;
4、 聚合函数(sum、avg、min,max,count)
Select 聚合函数(字段) from 表名;
注意:sum、avg、min、max只能够对数值型字段进行统计操作
示例如下:
统计学生的数量
SELECT COUNT(*) 学生数量 FROM student;
5、 子查询
将一个查询作为另一个查询的查询条件进行的查询方式
Select 字段列表 from 表名 where 字段(=或者in) (select 查询语句);
示例:
和张飞再同一个班级的所有学生信息
/*
先获取张飞所在的班级编号,然后再父查询中根据班级
编号获取所有的同班级学生信息
*/
SELECT * FROM student s WHERE
s.classid
=(SELECT classid FROM student WHERE sname='张飞');
6、 分页查询
Select * from 表名 [where 条件] [order by 排序字段] limit 起始记录,每次获取的记录数;
/**
按照每页2条记录查询学生信息
起始记录=(当前页数-1)*每页记录数
*/
第一页
SELECT * FROM student s WHERE 1=1 ORDER BY sid LIMIT 0,2;
第2页
SELECT * FROM student s WHERE 1=1 ORDER BY sid LIMIT 2,2;
第3页
SELECT * FROM student s WHERE 1=1 ORDER BY sid LIMIT 4,2;
7、 分组统计查询
Select 分组字段,聚合函数(统计字段) from 表名 [where 条件] group by 分组字段
[hiving 按照聚合函数(统计字段)条件表达式进行过滤] [order by 字段 desc或者asc]
示例如下:
统计每个班级的人数
SELECT classid 班级编号,COUNT(*) 班级人数
FROM student WHERE 1=1 GROUP BY classid;
8、 表连接
(1) 内连接,根据主外键字段进行的连接,获取的是交集中的数据
语法:
Select 字段列表 from 表1 join 表2 on 表1.主键或者外键字段=表2.主键或者外键字段
示例如下:
查询学生信息,并显示学生所在的班级名称
SELECT
s.*,
c.cname
FROM student s JOIN clazz c ON s.classid
=c.cid
;
查询学生的课程,显示学生姓名和课程名称
SELECT sc.*,
s.sname
,
c.coursename
FROM stucourse sc,student s,course c
WHERE sc.sid
=s.sid
AND sc.csid
=c.courseid
ORDER BY sc.sid
;
(2) 左外连接和右外连接查询
Select * from 表1 left或者right join 表2 on 表1.字段=表2.字段 ......
此种查询方式是以左表或者右表为基准查询表中的记录。
示例如下:
查询班级中所有的学生信息,如果班级没有学生,则显示班级的名称
SELECT
c.cname
,
s.*
FROM
clazz c
LEFT JOIN student s
ON c.cid
= s.classid
;
近期评论