Mysql从删库到跑路(2)

文章目录

  • Mysql数据管理
    • 对数据表中数据进行增删改查
      • 增添数据
      • 删除数据
      • 修改数据
      • 查询数据(SQL最重要的语句)
        • 单表无条件查询
          • 使用WHERE子句实现条件查询
  • 总结

Mysql数据管理

对数据表中数据进行增删改查

增添数据

1.插入单行数据

添加单行数据
语法:
INSERT INTO 表名(字段名1,字段名2…) VALUES(值1,值2…);

注意:插入数据时,数据与字段要一一对应
例:向student表中添加新记录,记录为:sno:‘194101’,sname:‘王小明’,ssex:‘男’,sbirthday:‘2001-02-14’,sdept:‘d12001’。
在这里插入图片描述
使用insert语句添加记录时,表名后的字段可以与表中定义的字段顺序不一致,他们只需要和values中值的顺序一致即可
也可以省略字段名,但values里面的值要与student表中的字段一一对应
2.插入多行数据

添加多行数据
语法:
INSERT INTO 表名 (字段名1,字段名2…) VALUES(值1,值2…) ,(值1,值2…) ,(值1,值2…) ;

例:向student表中添加3条记录,内容如下(194102,刘星,男),(194103,高火,男)(194104,张苗,女)。
在这里插入图片描述
注意:
INSERT语句执行成功后,通过查询语句查看数据是否添加成功;
添加多条记录时,只需要保证VALUES后面跟随的值列表依照字段在表后面的顺序即可;
若不指定字段名,必须为每个字段添加数据,若指定了字段名,只需要为指定的字段添加数据。

删除数据

数据表中数据的删除(DELETE)
语法:
DELETE FROM 表名 [WHERE条件表达式] ;

1.删除全部数据
例:删除sc表中的所有数据

delete from `sc`;

2.删除部分数据
例:删除sc表中sno为’18101’的记录

delete from `sc` where `sno`='18101';

注意:delete语句不包含where语句时,整个表将会被清空,反之,满足条件的将会清空

数据表中数据的删除(TRUNCATE)
语法:
TRUNCATE 表名;

例:删除sc表中的所有数据

truncate `student`;

DELETE和TRUNCATE的区别:
相同点:都能删除数据,都不会删除表结构
不同点:
a.TRUNCATE会重新设置自增列,计数器会归零
b.TRUNCATE不会影响事务
c.用DELETE删除表后,自动增量不会改变,你再次插入数据的时候,它的自增列还是会按照你以前的自增数继续向下加
d.重启Mysql服务,用DELETE删除数据后的数据表会重置自增列,默认存储引擎是INNODB,它是运行在内存中的,没有保存

关于DELETE删除的问题,重启数据库,现象:
1.INNODB引擎:自增列会从1开始(因为它是运行在内存中的,断电既失)
2.MYISAM引擎:会继续从上一个增量开始(因为它是存在于文件中的,数据包含丢失)

修改数据

数据表中数据的修改(UPDATE)
语法:
UPDATE 表名 SET 字段名1=值1[,字段名2=值2,…] [WHERE 条件表达式];

1.修改全部数据
例:将student表中的sbirthday字段全都修改为’2002-3-25’

update `student` set `sbirthday`='2002-3-25';

2.修改部分数据
根据指定条件修改表中的某一条或者某几条记录,需要使用where子句来指定修改记录的条件
例:将student表中sno字段为18101的sname字段改为’刘大壮’

update `student` set `sname`='刘大壮' where `sno`='18101';

若表中有多条记录都满足where子句中的条件,则满足条件的记录都会被修改。

查询数据(SQL最重要的语句)

SELECT语法:
SELECT [DISTINCT] 字段名1[字段名2,…] FROM 表名
[WHERE 条件表达式]
[GROUP BY 字段名 [HAVING 条件表达式]]
[ORDER BY 字段名 [ASC|DESC]]
[LIMIT [OFFSET] 记录数];

[ ]为可选项,后面会一个一个讲到的

单表无条件查询

1.查询所有字段
例:查询student表的所有字段

select `sno`,`sname`,`ssex`,`sbirthday`,`sdept` from `student`;

说明:在select语句中的查询字段列表中,字段的顺序是可以改变的,无需按照其表中定义的顺序进行排列。

也可以使用" * "通配符来代替所以字段。
语法:
SELECT * FROM 表名;

例:使用星号"*"通配符查询student表中的所有记录

select * from `student`;

注意:一般情况下,不建议使用星号通配符,因为它获取的数据太多,会降低查询效率
2.查询指定字段
例:查询student表中的sname字段

select `sname` from `student`;

也可以在字段后面加上"AS 别名",显示的时候相应会改变查询列的名称
例:查询student表中的sname字段,添加别名为"姓名"。
在这里插入图片描述
注意:这里更改的别名只在显示区有效,并不会更改表中的字段名
3.查询计算结果
select还可以进行数学运算
例:查询2*30+50-11的结果
在这里插入图片描述
4.select查询语句加入DISTINCT关键字后,查询结果去重复
例:查询sc表中所有参加考试学生的学号
在这里插入图片描述
加入DISTINCT关键字后
在这里插入图片描述
5.运用函数查询
例:查询MYSQL系统版本号
在这里插入图片描述
6.查看经过运算后的数据信息
例:查询考试成绩+10分后的信息
在这里插入图片描述
在这里插入图片描述
注意:增加10分只是在显示结果上增加了,并不会修改到表中的数据

使用WHERE子句实现条件查询

1.带关系运算符的查询
MYSQL中常见的关系运算符

关系运算符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于

例:查询student表中sno字段为18101的学生的姓名
在这里插入图片描述
例:查询考试成绩不及格的学生学号
在这里插入图片描述
2.带IN关键字的查询

语法:
SELECT 字段名1[,字段名2,…] FROM 表名 WHERE 字段名 [NOT] IN (元素1,元素2,…);
作用:查询在或不在IN指定集合范围中的记录

例:查询学号为194102,194103,194104的记录在这里插入图片描述
例:查询学号不为194102,194103,194104的记录
在这里插入图片描述
3.带BETWEEN AND 关键字的查询

语法:
SELECT 字段名1 [,字段名2,…] FROM 表名 WHERE 字段名 [NOT] BETWEEN 值1 AND 值2;
作用:查询字段从值1(起始值)到值2(结束值)的记录

例:查询sno字段从’194101’到’194105’之间的记录
在这里插入图片描述
例:查询sno字段不在’194101’到’194105’之间的学生学号和姓名
在这里插入图片描述
4.空值查询

语法:
SELECT 字段名1[,字段名2,…] FROM 表名 WHERE 字段名 IS [NOT] NULL;
作用:查询某字段是否为空值的记录

一定要分清什么是空值:
字段为NULL的才是空值,没有NULL的你看着它里面什么都没有,其实还可能会存在空格字符的情况,就不是空值
在这里插入图片描述
例:查询student表中sphone字段为空值的记录
在这里插入图片描述
例:查询student表中sphone字段不为空值的记录
在这里插入图片描述
5.带DISTINCT关键字的查询

语法:
SELECT DISTINCT 字段名 FROM 表名;
作用:查询结果去重复

例:查询sc表中考试不及格的学生记录
在这里插入图片描述
例:查询sc表中考试不及格的学生记录(查询结果去重复)
在这里插入图片描述
6.带LIKE关键字的查询

语法:
SELECT 字段名1[,字段名2,…] FROM 表名 WHERE 字段名 [NOT] LIKE ‘匹配字符串’;
作用:模糊查询,查询某字段值与 ‘匹配字符串’ 相似的字段

通配符说明
(1)% 通配符(百分号)
说明:可以查询任意多个的字符
例:
M%:表示查询以M开头的任意字符串,如:Mike
%M:表示查询以M结尾的任意字符串,如:ROOM
%m%:表示查询在任意位置包含字母m的所有字符串,如:man,some

(2)_ 通配符(下划线)
说明:查询单个字符,一个下划线代表一个字符
例:
_M:表示查询以任意一个字符开头的,以M结尾的两位字符串,如:AM,PM

H_:表示查询以H开头,后面跟任意一个字符的两位字符串,如:Hi,He
注意:使用_下划线通配符的时候一定要注意,一个下划线仅代表一个字符,要不然会造成查询结果的失效
例:查询student表中sname字段以字符’欧’开头的学生记录
在这里插入图片描述
例:查询生源地不是山东省的学生记录
因为山东省可能也会出现在地址字符串的中间,所以使用%M%通配符
在这里插入图片描述
例:查询sname字段以"欧"开始,以"娜"结束,中间有两个字符的记录
在这里插入图片描述

当用户要查询的字符串本身就含有通配符时,我们可以使用ESCAPE关键字转义字符来进行转义
语法:
SELECT 字段名1[,字段名2,…] FROM 表名 WHERE 字段名 [NOT] LIKE ‘匹配字符串’ [ESCAPE ‘转义字符’];

例:查询"计算机_网络基础"的课程号
在这里插入图片描述
在这里插入图片描述
7.正则表达式

跟LIKE差不多,可以用来模糊查询,比LIKE功能更强大
语法:
SELECT 字段名1[,字段名2,…] FROM 表名 WHERE 字段名 REGEXP ‘操作符’;

常见的字符匹配选项表

选项说明示例
^匹配文本的开始字符^b:匹配以字母b开头的字符串,如:book,big
$匹配文本的结束字符st$:匹配以st结尾的字符串,如:test,persist
.匹配任何单个字符b.t:匹配b和t之间有一个字符串,如:bit,bat,bite
*匹配零个或多个在它前面的字符*n:匹配字符n前面有任意个字符的字符串,如:abandon,afternoon,fan
+匹配前面的字符1次或多次ba+:匹配以ba开头的字符串,如:bar,battle
<字符串>匹配包含指定字符串的文本fa:字符串至少要包含fa,如:fan,fantastic,fat
[字符集合]匹配字符集合中的任何一个字符[xz]:匹配x或z,如:dizzy,zebra,extra
[^]匹配不在括号内的任何字符[ ^abc]:匹配任何不包含a、b、c的字符串
字符串{n,}匹配单面的字符串至少n次b{2,}:匹配两个或更多的b,如bb,bbbb,bbbbb
字符串{m,n}匹配前面的字符串至少m次,至多n次,如果n为0,则m为可选参数b{2,4}:匹配至少2个b,最多4个b,如:bb,bbb,bbbb

哈哈是不是有点多,我也没记住,用的时候再一个一个查吧
例:查询saddress字段以’济’开头的记录
在这里插入图片描述
例:查询学生电话号码中出现66的记录
在这里插入图片描述
在这里插入图片描述
查询的时候可以有很多不同的方法都可以查出来你想要的结果,可以多试试不同的方法哈
8.带AND关键字的多条件查询

语法:
SELECT 字段名1 [,字段名2,…] FROM 表名 WHERE 条件表达式1 AND 条件表达式2 […AND 条件表达式n] ;
作用:查询多个条件都要满足的情况,也就是逻辑与&&

例:查询a01课程不及格学生的学号
在这里插入图片描述
9.带OR关键字的多条件查询

语法:
SELECT 字段名1 [,字段名2,…] FROM 表名 WHERE 条件表达式1 OR 条件表达式2 […OR 条件表达式n] ;
作用:查询多个条件满足任意一种的情况,也就是逻辑或||

例:查询系部为"电子工程系"或学号小于’194105’的学生记录
在这里插入图片描述

总结

这次主要复习了Mysql的增删改查,其实增删改查就只有那几个关键字,记住就好了,最重要的就是查询了,SELECT可以查询出很多东西,像计算结果啊,运用函数啊,查系统变量等等,今天只复习了单表查询,它主要是用WHERE条件语句来查询,WHERE语句里针对不同的查询情况设定了不同的关键字来进行查询,between…and范围查询,like模糊查询,正则表达式,多条件查询等等,多练习几个例子差不多就学会了,加油哦
那就下次见
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部