2021-08-13日笔记

3.数据的完整性

作⽤:保证⽤户输⼊的数据保存到数据库中是正确的。确保数据的完整性 = 在创建表 时给表中添加约束

完整性的分类:实体完整性,域完整性,引⽤完整性.

3.1实体完整性

  • 实体定义

    即表中的⼀⾏(⼀条记录)代表⼀个实体(entity)实体完整性的作⽤:标识每⼀⾏数据不重复。

  • 约束类型

主键约束(primary key)

特点:每个表中要有⼀个主键。特点:数据唯⼀,且不能为null

唯⼀约束(unique)

特点:数据不能重复。(可⻅null不算重复)

自动增长列(auto_increment)

sqlserver数据库 (identity) oracle数据库( sequence)

特点:默认从最⼤值开始+1操作

给主键添加⾃动增⻓的数值,列只能是整数类型

3.2域完整性

  • 域完整性的作⽤:

限制此单元格的数据正确,不对照此列的其它单元格⽐较,域代表当前单元格

  • 域完整性约束分类:

    数据类型 ⾮空约束(not null)

    默认值约束(default)

    check约束(mysql不支持)check(sex='男' or sex='⼥')

  • 数据类型:

数值类型、⽇期类型、字符串类型

  • ⾮空约束:not null

  • 默认值约束 default

3.3引用完整性(参照完整性)

外键约束:FOREIGN KEY

-- 撤销外键
先选中外键所在的表,在右下⻆找到info选项,拉到最后,找到创建score表的信息,我
们可以发现主外键关联的标识score_ibfk_1
ALTER TABLE score DROP FOREIGN KEY score_ibfk_1
​
第⼆种添加外键⽅式。
​
ALTER TABLE score ADD CONSTRAINT fk_stu_score FOREIGN KEY(sid)
REFERENCES stu(sid);

3.4表与表之间的关系

  • ⼀对⼀

  • ⼀对多(多对⼀)

  • 多对多

4.多表查询

4.1多表查询分类

合并结果集 UNION 、UNION ALL

了解连接查询内连接 [INNER] JOIN ON

外连接 OUTER JOIN ON

左外连接 LEFT [OUTER] JOIN

右外连接 RIGHT [OUTER] JOIN

全外连接(MySQL不⽀持)FULL JOIN

⾃然连接 NATURAL JOIN

4.2合并结果集

  • 作用

合并结果集就是把两个select语句的查询结果合并到⼀起!

要求:被合并的两个结果:列数、列类型必须相同。

5.子查询

  • 定义

⼀个select语句中包含另⼀个完整的select语句。

⼦查询就是嵌套查询,即SELECT中包含SELECT,如果⼀条语句中存在两个,或两个 以上SELECT,那么就是⼦查询语句了。

  • 子查询出现的位置:

where后,作为被查询条件的⼀部分;

from后,作表;

注意:当⼦查询出现在where后作为条件时,还可以使⽤如下关键字:(很少⽤)any all

  • 子查询结果集的形式:

单⾏单列(⽤于条件)

单⾏多列(⽤于条件)

多⾏单列(⽤于条件)

多⾏多列(⽤于表)

5.自连接

  • ⾃⼰连接⾃⼰,起别名

6. MySQL中的函数

6.1常用系统函数

6.1.1日期函数

ADDTIME (date2 ,time_interval )将time_interval加到date2
CURRENT_DATE ( )当前⽇期
CURRENT_TIME ( )当前时间
CURRENT_TIMESTAMP ( )当前时间戳
DATE (datetime )返回datetime的⽇期部分
DATE_ADD (date2 , INTERVAL d_value d_type )在date2中加上⽇期或时间
DATE_SUB (date2 , INTERVAL d_value d_type )在date2上减去⼀个时间
DATEDIFF (date1 ,date2两个⽇期差
NOW ()当前时间
YEAR|Month|Day(datetime )年⽉⽇

6.1.2字符串函数

CHARSET(str)返回字串字符集
CONCAT (string2 [... ])连接字串
INSTR (string ,substring )返回substring在string中出现的位置,没 有返0
UCASE (string2 )转换成⼤写
LCASE (string2 )转换成⼩写
LEFT (string2 ,length )从string2中的左边起取length个字符
LENGTH (string)string⻓度
REPLACE (str ,search_str ,replace_str )在str中⽤replace_str替换search_str
STRCMP (string1 ,string2 )逐字符⽐较两字串⼤⼩
SUBSTRING (str , position [,length ])从str的position开始,取length个字符
LTRIM (string2 ) RTRIM (string2 ) trim去除前端空格或后端空格

6.1.3 常规函数

ABS (number2 )绝对值
BIN (decimal_number )⼗进制转⼆进制
CEILING (number2 )向上取整
CONV(number2,from_base,to_base)进制转换
FLOOR (number2向下取整
FORMAT (number,decimal_places )保留⼩数位数
HEX (DecimalNumber )转⼗六进制
LEAST (number , number2 [...])求最⼩值
MOD (numerator ,denominator )求余
RAND([seed])RAND([seed])

7.自定义函数

7.1什么是函数

mysql中的函数与存储过程类似,都是⼀组SQL集;

7.2与存储过程的区别

函数可以return值,存储过程不能直接return,但是有输出参数可以输出多个返回 值;

函数可以嵌⼊到sql语句中使⽤,⽽存储过程不能;

函数⼀般⽤于实现较简单的有针对性的功能(如求绝对值、返回当前时间等),存储过程⽤于实现复杂的功能(如复杂的业务逻辑功能);

函数的关键字是function 存储过程是:procedure

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值