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.时间与字符串的相互转换
领取专属 10元无门槛券
私享最新 技术干货