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 ;

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1