| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 数据库高级 -> 正文阅读 |
|
[大数据]数据库高级 |
数据库的完整性确保数据的完整性 = 在创建表时给表中添加约束 完整性的分类
实体完整性? 实体:即表中的一行(一条记录)代表一个实体(entity) 实体完整性的作用:标识每一行数据不重复 约束类型: 主键约束(primary key)注:每个表中要有一个主键。 特点:数据唯一,且不能为null
唯一约束(unique) 特点:数据不能重复。
自动增长列(auto_increment)列只能是整数类型
域代表当前单元格 作用:限制单元格的数据正确,不对照此列的其它单元格比较 域完整性约束:数据类型 非空约束(not null) 默认值约束(default) 引用完整性 外键约束:FOREIGN KEY
多表查询关系
一对一的两种建表原则:
多表查询
合并结果集 作用:合并结果集就是把两个select语句的查询结果合并到一起! 合并结果集有两种方式: UNION:去除重复记录,如:SELECT* FROM t1 UNION SELECT * FROM t2; UNION ALL:不去除重复记录,如:SELECT * FROM t1 UNION ALL SELECT * FROM t2。 注意:被合并的两个结果:列数、列类型必须相同。 连接查询 连接查询就是求出多个表的乘积,例如t1连接t2,那么查询出的结果就是t1*t2。
连接查询会产生笛卡尔积 使用主外键关系做为条件来去除无用信息
内连接
外连接 包括左外连接和右外连接 外连接的特点:查询出的结果存在不满足条件的可能。 -- 外联查询 -- 左外联:select 列名 from 主表 left join 次表 on 主表.列名=次表.列名 -- 1.主表数据全部显示,次表数据匹配显示,能匹配到的显示数据,匹配不成功的显示null -- 2.主表和次表不能随意调换位置 使用场景:一般会作为子查询的语句使用 自然连接 自然连接(NATURAL INNER JOIN):自然连接是一种特殊的等值连接,他要求两个关系表中进行连 接的必须是相同的属性列(名字相同),无须添加连接条件,并且在结果中消除重复的列。 子查询 一个select语句中包含另一个完整的select语句。 子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么 就是子查询语句。 子查询出现的位置:
当子查询出现在where后作为条件时,还可以使用如下关键字:
子查询结果集的形式: a. 单行单列(用于条件) b. 单行多列(用于条件) c. 多行单列(用于条件) d. 多行多列(用于表)
多表删除
日期运算函数
数据库优化 (sql层面) 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫 描,如: select id from t where num is null 最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库. 备注、描述、评论之类的可以设置为 NULL,其他的,最好不要使用NULL。 3.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则引擎将放弃使用索引而进行全表扫描。 4.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致 引擎放弃使用索引而进行全表扫描,如:select id from t where num=100 or Name = 'admin' 可以使用select id from t where num = 10 union all select id from t where Name = 'admin' 5.in 和 not in 也要慎用,否则会导致全表扫描,如: select id from t where num in(1,2,3) 对于连续的数值,能用 between 不要用 in : select id from t where num between 1 and 3 很多时候用 exists 代替 in 也是一个好的选择 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:03:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |