MySQL数据库-阶段性总结

绝地灬酷狼 2022-11-25 00:51 225阅读 0赞

重点:DDL(create alter drop)数据定义语言—-通过语句创建表、添加修改约束等

掌握4种约束 :主键、唯一键、非空、外键

查询语句:多表连接查询、联合查询、子查询

事务:特性

索引:作用、类别、存储结构(B树索引)—-后续扩展

视图及数据类型

优化SQL语句

5个聚合函数:max min avg sum count

  1. DDL 数据定义语言

create alter drop开头的语句都称为DDL

2.查询:

Select 列名1 as 别名 from 表名 +

Where 条件1 and /or 条件2 【等值判断(=);逻辑判断(and,or,not);不等值(<,>,<=,>=,!=);区间判断(between and);空与非空(is null,is not null);枚举(in(值1,值2 ,值3))】

Order by 条件1 ASC/DESC,条件2

Group by 分组条件1 ,分组条件2

Having 分组查询条件

模糊查询: selecr * from goods where name like ‘%xxx%’;

分支结构查询: select username,gender,

case role

WHEN 0 THEN ‘管理员’

WHEN 1 THEN ‘用户’

END AS 角色 from user

时间查询: sysdate()—-当前系统时间

curdate()/curtime()—获取当前日期/时间

week(date)—获取指定日期为一年中的第几周

year(date)—获取指定日期的年份

hour(date)/minute(date)—获取指定时间的小时/分钟值

datediff(date1,date2)—获取相隔天数

assdate(date,n)—计算date加上n天之后的日期

字符串查询:concat(str1,str2,str3…..)—将多个字符串拼接查询

insert(str,pos,len,newStr)—-将str中指定pos位置开始len长度的内容替换为newStr

lower(str)/upper(str)—-将指定字符串转为小写/大写

substring(str,num,len)—-将str字符串指定num位置开始截取len个内容

聚合函数:SUM(),AVG(),MAX(),MIN(),COUNT()

限定查询(数据库分页): select 列名 from 表名 limit ?,?;

SQL的编写 及 执行顺序:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pocTA2MjU_size_16_color_FFFFFF_t_70

子查询:将子查询到的“一行一列“的结果,作为外部查询条件,进行第二次的查询条件

select * from tb_grades where name>(select tb_grades where name=’xxx’)

子查询分类:

  1. 简单子查询:> >= < <= = != <> 子查询的结果必须是1行1列
  2. In/not in select * from tb_goods where price in(1000,2000)
  3. Any =any 相当于in

any 大于子查询结果的最小值

<any 小于子查询结果的最大值

  1. all >all 大于子查询结果的最大值

<all 小于子查询结果的最小值

联合查询: select * from 表名1 union select * from表名2 (去除重复记录)

select * from 表名1 union all select * from表名2 (保留重复记录)

注:合并结果的两张表,列数须相同,列的数据类型可以不同

连接查询:查询结果来源于多张表

  1. 等值连接查询

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pocTA2MjU_size_16_color_FFFFFF_t_70 1

2.内部连接 内连接

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pocTA2MjU_size_16_color_FFFFFF_t_70 2

【总结】以上两种查询效果相同,表的先后顺序不影响查询结果, 都是把两个表中都符合条件的数据进行关联显示

3.左外连接查询

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pocTA2MjU_size_16_color_FFFFFF_t_70 3

4.右外连接查询 相当于左外连接查询的表顺序颠倒

外连接和内连接的区别是什么?使用场合是什么?

1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。

2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:
1)LEFT JOIN或LEFT OUTER JOIN
左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
2)RIGHT JOIN 或 RIGHT OUTER JOIN
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
3)FULL JOIN 或 FULL OUTER JOIN
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

DML:insert delete update truncate

约束

事务

原理:数据库回味每一个客户端都维护一个空间独立的缓存区(回滚段),一个事务中所有的增删改语句的执行结果都会缓存到回滚段中,只有当事务中所有sql语句均正常结束(commit),才会将回滚段中的数据同步到数据库,否则无论因为哪种原因失败,整个十五将回滚(rollback)

事务特性:

Atomicity(原子性)

表示一个事务内的所有操作是一个整体,要么全部成功,要么全部失败

Consistency(一致性)

表示一个事务内有一个操作失败时,所有的更改过的数据都必须回滚到修改前的状态

Isolation(隔离性)

事务查看数据操作时 数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据

Durability(持久性)

持久性十五完成之后,它对于系统的影响是永久性的

DCL:数据控制语言,创建用户及分配、撤销权限

创建用户:create user 用户名 identified by 密码:

授权: grant all on 数据库,表 to 用户名

撤销: revoke all on 数据库,表名 from 用户名

删除: drop user 用户名

发表评论

表情:
评论列表 (有 0 条评论,225人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Redis 专栏阶段性总结

    > 这篇应该是紧接着 [Redis 基础类型与底层结构及其使用场景梳理][Redis] 发出来的,发出来之后就该去学习别的内容了,但是最近一个月加班(回来就不想系统学习新东西了

    相关 ARTS 阶段性总结

    转眼间十周过去了,回过头去看自己之前写的 ARTS 以及相关文章,感觉还是收获不小,至少我行动了。在这里我首先说说自己为什么要持续写 ARTS。之前在极客时间上看皓叔写的专栏,