MySQL进阶

1.mysql高级

1.关系

创建学生成绩关系表

三张表如图

查询一个学生各科成绩的结果

级联操作的类型包括:

restrict(限制):默认值,抛异常

cascade(级联):如果主表的记录删掉,则从表中相关联的记录都将被删除

set null:将外键设置为空

no action:什么都不做

2.连接查询

当需要对有关系的多张表进行查询时,需要使用连接join

连接查询分类如下:

:表A与表B匹配的行会出现在结果中

:表A与表B匹配的行会出现在结果中,外加表A中独有的数据,未对应的数据使用null填充

:表A与表B匹配的行会出现在结果中,外加表B中独有的数据,未对应的数据使用null填充

在查询或条件中推荐使用“表名.列名”的语法

如果多个表中列名不重复可以省略“表名.”部分

如果表的名称太长,可以在表名后面使用' as 简写名'或' 简写名',为表起个临时的简写名称

实例一

创建的两个表

查询员工额编号,姓名,上级的姓名

left

right

查询哪些是经理

实例二

创建的三个表

查询学生的编号,姓名,科目的名称,成绩

实例三

创建的两个表

查询员工的编号,工资和等级

delete from emp1后,表emp1数据为空

实例四

查询各学生的语文、数学、英语的成绩

用视图以后查询的结果如图

事务

当一个业务逻辑需要多个sql完成时,如果其中某条sql语句出错,则希望整个操作都退回,保证数据的正确性。

使用事务可以完成退回的功能,保证业务逻辑的正确性

两个功能:有一个出问题,回滚。都没有问题,提交。(同生共死)

事务四大特性(简称ACID)

原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行

一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致

隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的

持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障

要求:表的类型必须是innodb或bdb类型(表的默认类型就是innodb),才可以对此表使用事务

查看表的创建语句

show create table students;

修改表的类型

alter table '表名' engine=innodb;

事务语句

开启;

提交;

回滚;

示例

用事务来进行测试

3.内置函数

1.字符串函数

2.数学函数

3.日期函数

获取子值,语法如下:

返回date的年份(范围在1000到9999)

返回date中的月份数值

返回date中的日期数值

返回time的小时数(范围是0到23)

返回time的分钟数(范围是0到59)

返回time的秒数(范围是0到59)

日期计算,使用+-运算符,数字后面的关键字为year、month、day、

hour、minute、second

日期格式化date_format(date,format),format参数可用的值如下

获取年%Y,返回4位的整数

获取年%y,返回2位的整数

获取月%m,值为1-12的整数

获取日%d,返回整数

获取时%H,值为0-23的整数

获取时%h,值为1-12的整数

获取分%i,值为0-59的整数

获取秒%s,值为0-59的整数

4.时间与字符串的相互转换

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180626G1IGSH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券