5.5 删除
delete命令:
不会影响自增。
1 | delete from `student`; -- 全删了 |
ddelete
和update
一样,也有一个where
子句,可选可不选,最好加上。
truncate命令:完全清空数据库,但表结构 , 索引 , 约束等不变 。
- truncate 重新设置 自增列 计数器归零
- truncate 不会影响事务
1 | truncate `student`; |
delete,drop,truncate 都有删除表的作用,区别在于:
- 1、delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。
- 2、delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。
- 3、执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。
6.DQL:数据库查询语言(最重点)
MySQL 数据库使用SQL SELECT语句来查询数据。它可能是用的最多的语句。
数据库中最核心的语句。
测试数据:
1 | CREATE DATABASE IF NOT EXISTS `school`; |
6.1 指定查询字段
1 | -- 查询表中全部信息,开发中较少用到,要用什么就查什么 |
去重复:distinct
关键字。
作用: 去除select 查询出来的结果中重复的数据,只显示一条。
1 | SELECT `studentno` `学号` FROM `result`; |
SELECT
的其他用法:
1 | SELECT VERSION() -- 查询系统版本(函数) |
select
语法格式:select 表达式 from 表
。
完整语法:子句顺序不能换。
1 | SELECT [ALL | DISTINCT] |
6.2 where
条件子句
作用:检索数据中符合条件
的值。
where
子句在一条语句中只能用一次,多个过滤条件用and
连接。
逻辑运算符:
尽量使用英文字母(如AND
之类的),有语法高亮。
1 | -- 查询一个区间内的学生成绩 |
模糊查询(重点):
本质就是一些比较运算符。
运算符 | 语法 | 描述 |
---|---|---|
is null | a is null | 操作符null,结果真 |
is not null | a is not null | |
between and | a between b and c | |
like | a like b | SQL匹配,如果匹配,真 |
in | a in (a1,a2,…) | 假设a在a1,或者a2,…其中一个返回真 |
LIKE
操作符配合通配符进行模糊查询。
参考文章:http://c.biancheng.net/view/7395.html。
“%”是 MySQL 中最常用的通配符,它能代表任何长度的字符串,字符串的长度可以为 0。例如,a%b
表示以字母 a 开头,以字母 b 结尾的任意长度的字符串。该字符串可以代表 ab、acb、accb、accrb 等字符串;%e%
表示所有包含字母e
的任意长度的字符串。
“_”只能代表单个字符,字符的长度不能为 0。例如,a_b
可以代表 acb、adb、aub 等字符串。
注意:匹配的字符串必须加单引号或双引号。
NOT LIKE
表示字符串不匹配时满足条件。
“%”不能匹配到NULL,这是唯一的例外。
默认情况下,LIKE 关键字匹配字符的时候是不区分大小写的。如果需要区分大小写,可以加入 BINARY 关键字,LIKE BINARY
。
1 | -- 以张开头 |
IN
操作符:
查询具体的一个或多个值,不能模糊查询。
1 | SELECT `studentno`,`studentname`,`address` FROM student |
1 | -- 查询地址为空的同学,空字符串或者NULL |