数据库操作-DML与DQL

DML

用于操作数据库对象中所包含的数据
主要有三种形式:

  1. 插入:INSERT
  2. 更新:UPDATE
  3. 删除:DELETE

插入INSERT

sql:INSERT INTO 表名 (字段1,字段2,字段3,…) VALUES (‘值1’,‘值2’,‘值3’);

INSERT INTO users (id, name, password, email, birthday) VALUES (6,'
Hedgehog','123789','ciwei@gamil','2005-01-05');

代表给users表中添加id为6、name为Hedgehog、password为123789、emali为ciwei@gamil、birthday为2005-01-05的一组数据。

  • 注意:有时插入数据会报错:Duplicate entry ‘6’ for key ‘PRIMARY’,原因是因为主键id是唯一的,6这个值已经被使用。

更新、更改UPDATE

sql:UPDATE 表名 SET column_name=value [WHERE condition];
[WHERE condition]可以不加,加上就是筛选的条件,不加的话更改全表的数据。

UPDATE users SET name = 'rock' WHERE id=6;

意为将id为6的name更改为rock。


删除操作DELETE

sql:DELETE FROM 表名 [WHERE condition];

DELETE FROM users WHERE name = 'rock';

执行后,就将name=rock的一组数据全部删除,但主键id已被占用,所以后面使用INSERT时,id不能为该组数据的id。


DQL

数据库查询语句,是数据库语言中最核心,最重要的语句。

查询所有

SELECT * FROM 表名;

数据库操作-DML与DQL_第1张图片


DISTINCT关键字

DISTINCT的作用是去掉SELECT查询返回的记录结果中重复的记录。

SELECT DISTINCT 字段 FROM 表名;

数据库操作-DML与DQL_第2张图片


条件查询

SELECT 字段 FROM 表名 WHERE 字段=;

数据库操作-DML与DQL_第3张图片
条件也可以使用逻辑操作符使查询更加精准:
数据库操作-DML与DQL_第4张图片

SELECT name FROM users WHERE id>1 AND id<4;

返回的结果为id在2,3中的name。


模糊查询

  • 条件查询的一种,用于检索数据表中 符合条件 的记录
    数据库操作-DML与DQL_第5张图片
SELECT email  FROM users WHERE name LIKE 'l%';

数据库操作-DML与DQL_第6张图片

在模糊查询中,"%“表示通配符,例如在"l"后面加%就代表只要首字母是"l"就可以匹配,被搜索到;在"l"前加则表示只要最后一个字符是"l"则可以被匹配到;”%l%“表示只要数据中包含"l"这个字符,就可以被匹配到。
除了”%“还有”_",表示前面或后面有一个字符不确定。


连接查询

数据库操作-DML与DQL_第7张图片

连接查询
如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询
内连接 inner join
查询两个表中的结果集中的交集
外连接 outer join
左外连接 left join
(以左表作为基准,右边表来一一匹配,匹配不上的,返回左表的记录,右表以NULL填充)
右外连接 right join
(以右表作为基准,左边表来一一匹配,匹配不上的,返回右表的记录,左表以NULL填充)

select s.StudentNo,StudentName,SubjectNo,StudentResult
from student as s
inner join result as r
where s.StudentNo=r.StudentNo;

表示当result表中的StudentNo与student表中的StudentNo相同时,查询出符合条件的学生的编号、姓名、学科编号和对应成绩。

select s.StudentNo,StudentName,su.SubjectName,r.StudentResult
from student as s
inner join result as r
inner join  subject as su
on s.StudentNo=r.StudentNo and su.SubjectNo=su.SubjectNo;

需求是因为在上一次查询中学科编号阅读性太差,需要用学科的名称代替,但学科的名称又在subject这张表中,所以需要先将student表与result表相连接,再让result表与subject相连接,于是将使用两次INNER JOIN


自查询

数据表与自身进行连接

思路就是将一张表分解成两张表,通过将这两张表的共通的地方连接起来,从而进行自查询。
例如,下面这张表:
数据库操作-DML与DQL_第8张图片
想要通过pid与categoryid有联系的地方,查询出两个id的对应数据

SELECT a.categoryName as 'fu',b.categoryName as 'zi'
from category as a,category as b
where a.pid=b.categoryid;

数据库操作-DML与DQL_第9张图片


排序

sql: ORDER BY

ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照ASC升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

SELECT * FROM users
ORDER BY id DESC;

数据库操作-DML与DQL_第10张图片

你可能感兴趣的:(MySql)