MySQL_____数据操作之增删改查

一.添加数据

1. 全列添加(creat)

insert into score values(, , ,);

建表
在这里插入图片描述

1.1 单行全列插入

在这里插入图片描述
注意:添加时如果不指定列,那么插入的值的顺序一定要和建表的顺序保持一致。

1.2 多行全列插入

insert into score values( , , , );

在这里插入图片描述

2. 指定列插入

insert into score( , , , ) values( , , , );

在这里插入图片描述
注意:
必须指定列
插入值的顺序一定要和指定列的顺序保持一致
扩展:表和表数据的存储目录(两种方法)
在这里插入图片描述
在这里插入图片描述

二. 查询数据(Retrieve)

1. 全列查询

select * from table_name;

在这里插入图片描述
全列查询可能会出现两个问题:
1.查询的列越多,意味着需要传输的数据量越大,会消耗大量的带宽信息,并且传输的速度会很慢;
2. 可能会影响索引的使用。

2.指定列查询

select 列名 from 表名

在这里插入图片描述

3. 表达式查询

select 表达式 from 表名;

在这里插入图片描述
在这里插入图片描述
SQL表达式的查询,不会修改表的原始数据

4. 别名查询(给指定列起别名)

select 指定列 as 别名 from 表名;

在这里插入图片描述
在这里插入图片描述

可以使用as 也可以不适用

5.去重distinct

5.1 单列去重

select distinct 去重列名 from 表名;

在这里插入图片描述

5.2distinct联合去重

规则:所有字段全部相同才会联合去重,否则不会去重。
在这里插入图片描述

6. 排序 order by

6.1 根据某一列升序asc—从小到大

select * from 表名 order by 列名 asc;

在这里插入图片描述

6.2 根据某一列降序desc—从大到小

select * from 表名 order by 列名 desc;

在这里插入图片描述
如果不指定asc或desc,默认情况下使用asc

6.3 根据总成绩升序

select 列名 from 表名 oeder by 列名 asc;

在这里插入图片描述

6.4 根据总成绩降序,总成绩使用别名

select 列名 from 表名 oeder by 列名 desc;

在这里插入图片描述
注意:order by可以使用别名进行排序
NULL在排序时是最小级别

6.5 多列排序

 select name,math,chinese from score order by math,chinese desc;

在这里插入图片描述

7. 条件查询

在这里插入图片描述
注意:逻辑运算符 and 的执行优先级是高于or的,因此如果在一个查询中既有and查询又有or查询就需要给or查询添加(),作用是增加执行的优先权,加()的SQL语句优先执行。
满足以下两个条件才能发放奖学金:
1.数学成绩>=30或者英语成绩>=40;
2.语文成绩必须>=50.
错误的
在这里插入图片描述

7.1<=> 用法

在这里插入图片描述

7.2 null 用法

在这里插入图片描述

7.3where条件查询

7.3.1***注意事项:***

1.别名可以在 order by 中使用
where 条件查询中不能使用别名

select math+chinese+english as total from score order by total desc;

在这里插入图片描述
在这里插入图片描述

7.3.2.where 条件查询语法:

selest * from table_name where 查询条件;

在这里插入图片描述

为什么别名不能使用在where中,能使用在order by中

mysql执行顺序如下:
1.FROM 阶段
2.WHERE 阶段
3.GROUP BY阶段 分组查询
4.HAVING阶段 分组查询条件
5.SELECT阶段
6.ORDER BY阶段
7.LIMIT阶段 分页查询
别名是产生在第5个查询阶段。
别名有了之后,后面的阶段才能使用,也就是说别名只能是步骤5之后的查询才能被使用。

7.3.3查询英语缺考的人

在这里插入图片描述

7.3.4查询总成绩大于100的人

在这里插入图片描述

7.3.5 字段名 between x and y(可以包含x和y值的)

在这里插入图片描述
在这里插入图片描述
写法更优雅

7.3.6 in查询:所有满足条件集都会被查询出来

在这里插入图片描述

7.3.7 模糊查询like:

%------>可以匹配任意字符

where 字段名 like '% _';

在这里插入图片描述

_------->可以匹配一个任意字符

%和_ 可以用在任意位置
NMySQL所有查询应考虑最左原则,将能过滤最多条数的条件放在最左边
在这里插入图片描述

8.分页查询LIMIT :查询某一页面上的部分信息(截取了部分信息)

limit 3种写法:

  1. 限制 limit n;
select * from table_name limit n;

在这里插入图片描述
限制查询最多时300条,如果数据量不够,那么查询也不会报错
2.limit n offset s 偏移;

limit n offset s  偏移;
                                            查询n条 跳过前s条    

在这里插入图片描述

3.limit s,n;
查询n条,跳过前s条
在这里插入图片描述
注意:2.和3.的顺序是相反的

三. 修改数据

1.全部数据修改(很危险,一不小心改了全部数据)

updata table_name set 修改内容;

在这里插入图片描述

2.部分数据修改

limit
在这里插入图片描述
where
在这里插入图片描述

3.部分数据多列修改

set , , ,
在这里插入图片描述

4. 使用表达式修改

在这里插入图片描述

四. MySQL删除操作

1.delete 删除 DML语言

delete from table_name [where...] [order by...] [limit...]

在这里插入图片描述
删除行数据,表的结构是存在的

2.drop 删除 DDL语言

drop table table_name;

在这里插入图片描述

3.truncate 删除(不会删除表结构,只会删除表中所有数据)

truncate [table] table_name;

在这里插入图片描述

三者区别

1.删除的影响范围:
drop(表结构+数据)>truncate(删除所有数据)>= delete (删除所有或部分数据)
2. 查询条件 :delete可以where表达式添加查询条件,其他删除指令不行。
3. 命令的类型:
drop 属于DDL,
delete 属于DML(执行原理:在***InnoDB数据库引擎***下,delete并不是真正把数据删除掉了,而是给数据打了一个删除标签,标识当前的数据已经被删除了)

   ***truncate 属于 DDL***(执行原理:1.重新创建一个表2.将原来的表删除)

**4.数据恢复不同:**delete数据可以被恢复,但是truncate和drop删除的数据不可以被恢复

如果autocommit =1的情况下,delete可以恢复,删除日志 updata table table_name set iddel = 0;
执行SQL取反操作就可以恢复数据。前提条件是开启了数据库的日志记录。 可以提高数据库的执行性能,对于数据丢失不敏感的系统,可以关闭日志。
**5.执行效率:**drop > truncate > delete
数据量越大 ,上面的执行效率的差距也越大。
6. delete 删除不会重置子增值

猜你喜欢

转载自blog.csdn.net/biteqq/article/details/123421158