数据库知识点

这篇具有很好参考价值的文章主要介绍了数据库知识点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1索引

介绍

索引本质上是一张表,保存了主键与索引字段,在对数据做频繁的查询或排序时,可在某些字段上添加索引,提高检索的的效率,降低IO成本,并可以使用索引列,对数据进行排序,降低排序的成本。盲目的添加索引是不正确的。索引表保存数据占用空间,在对数据进行增删改操作时,降低了操作的速度,在更新表的同时不仅要保存操作数据还需要更新索引表中的数据,因此我们可以在频繁的作为查询条件的字段上添加索引,查询中与其他表关联的字段,外检关系建立索引,在高并发下创建组合索引等恰当的使用索引事务场景。索引分为四类有唯一索引,复合索引,主键索引,单值索引。唯一索引的索引列必须是唯一的,但允许有空值,复合索引指一个索引包含多个列。例如用户表需要用户名以及手机号确定一个信息,就需要添加复合索引了。主键索引是一个特殊的唯一索引,非空且默认存在,单值索引,一个索引值包含单个列,一个表可以有多个单列索引。

1.2失效原因

1.索引失效的原因

1.模糊查询like以%开头,
2.数据类型错误
3.对索引字段使用内部函数
4.索引列是null
5.索引列运行四则运算
6.复合索引不按索引列最左特性开始查找

1.3.索引的类型

复合(最左特性)
主键
单值
唯一

1.4 为什么添加了索引查询快了

本质上是因为数据库会根据索引的数据结构(如B+树)构建一个索引树。索引树的结构使得数据库可以快速定位到满足查询条件的数据,而不需要扫描整个表。通过索引树的搜索,数据库可以快速确定需要读取的数据页,并直接读取对应的数据行,从而大大减少了查询所需的读取和比较操作。

1.4如何创建索引

创建主键索引

alter table table_name add primary key(column);

添加UNIQUE(唯一索引)

alter table table_name add unique(column);

添加普通索引

alter table table_name add index index_name(column);

添加多列索引

alter table table_name add index index_name(column1,column2,column3);

2.Sql语句

2.1基础函数

lower

SELECT 'ABC',LOWER('ABC') from dept; --数据转小写

upper

select upper(dname) from dept --数据转大写

length

select length(dname) from dept --数据的长度

substr

SELECT dname,SUBSTR(dname,1,3) FROM dept; --截取[1,3]

concat

select dname,concat(dname,'123') X from dept --拼接数据

replace

select dname,replace(dname,'a','666') X from dept --把a字符替换成666

ifnull

select ifnull(comm,10) comm from dept2 #判断,如果comm是null,用10替换

round四舍五入,ceil向上取整,floor向下取整

select comm,round(comm) from emp–直接四舍五入取整
select comm,round(comm,1) from emp–四舍五入并保留一位小数
select comm,ceil(comm) ,floor(comm) from emp–ceil向上取整,floor向下取整

now

select now() -- 年与日 时分秒
select curdate() --年与日
select curtime() --时分秒

2.2分组

group by

SELECT deptno,job,MAX(sal),AVG(sal) FROM emp
GROUP BY deptno,job #deptno和job都满足的

having

select deptno, AVG(sal) from emp
group by deptno #按部门分组
having AVG(sal)<8000 #查询条件,类似where,但是group by只能配合having

2.3聚合

count

select count(*) from emp --底层优化了
select count(1) from emp --效果和*一样
select count(comm) from emp --慢,只统计非NULL的

max / min

select max(sal) from emp --求字段的最大值
select max(sal) sal,max(comm) comm from emp
select min(sal) min from emp --获取最小值
select min(sal) min,max(sal) max from emp --最小值最大值
SELECT ename,MAX(sal) FROM emp group by ename --分组

sum / avg

select count(*) from emp --总记录数
select sum(sal) from emp --求和
select avg(sal) from emp --平均数

2.4排序

order by

SELECT * FROM emp order by sal #默认升序
SELECT * FROM emp order by sal desc #降序

2.5链接

left join : 左连接,返回左表中所有的记录以及右表中连接字段相等的记录。
right join : 右连接,返回右表中所有的记录以及左表中连接字段相等的记录。
inner join : 内连接,又叫等值连接,只返回两个表中连接字段相等的行。

2.6多表联查

1.子查询
语法:

select  字段名  
from1,表2where1.字段 =2.字段
and 其它查询条件

例:以学生表student和班级表class为例

Select   student.sid,  student.sname,  student.classid, class.classid,  class.classname
from student,class
where student.classid = class.classid

2.join连接
内连接 inner join
语法:

from1
inner join2
on1.字段 =2.字段

外连接:

  1. left join
    语法:
select  字段名  
from1
left join2
on1.字段 =2.字段

2.right join
语法:

select  字段名  
from1
right  join2
on1.字段 =2.字段
  1. left join union right join
    语法:
select  字段名  
from1
left join2
on1.字段 =2.字段
union
select  字段名  
from1
right  join2
​​​​​​​on1.字段 =2.字段

例:

select   student.*  , class.*from student
left join class
on student.classid = class.classid
union
select  student.*  , class.*from student
right join class
on student.classid = class.classid

3.笛卡尔积

select * from t_user, t_address;

2.7条件查询

distinct
使用distinct关键字,去除重复的记录行

SELECT DISTINCT loc FROM dept;

like模糊查询

select * from emp where ename like 'l%' --以l开头的
select * from emp where ename like '%a' --以a结束的
select * from emp where ename like '%a%' --中间包含a的
select * from emp where ename like 'l__' --l后面有两个字符的 _代表一个字符位置

null

select * from emp where mgr is null --过滤字段值为空的
select * from emp where mgr is not null --过滤字段值不为空的

between and

select * from emp where sal between 3000 and 10000

limit
在mysql中,通过limit进行分页查询:

select * from emp limit 0,3 --从第一条开始,展示3条记录--前三条

3.事务

3.1 特性(ACID)

原子性:一个事务要么全部成功,全部失败,不会停在某个阶段
一致性 :事务的前后处于一致状态
隔离性:多个事务同时操作相同数据库的同一个数据时,一个事务的执行不受另外一个事务的干扰
持久性:一个事务一旦提交,则数据将持久化到本地,除非其他事务对其进行修改

3.2隔离级别

1.读未提交,最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读);
2.提交读,一个事务提交后才能被其他事务读取到(会造成幻读、不可重复读),SQL server 的默认级别;
3.可重复读,保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(会造成幻读),
MySQL 的默认级别;
4.序列化,代价最高最可靠的隔离级别,该隔离级别能防止脏读、不可重复读、幻读。

3.3三大范式

第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。
第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。
第三范式:任何非主属性不依赖于其它非主属性。

3.4约束

1.主键约束(Primary Key )
保证数据的唯一性,并且主键列数据不能为空(唯一性,非空性)。

alter table 表名
add constraint 主键名 primary key(约束列名称)

2.唯一约束(Unique ):
保证数据的唯一性,唯一约束的列可以为空(唯一性,可以空,但只能有一个)。

alter table 表名
add constraint 唯一约束名 unique(字段)

3.检查约束(Check ):
保证数据的有效性,让值在有效范围内取值,对该列数据的范围、格式的限制(如:年龄、性别等)

alter table 表名
add constraint 检查约束名 check(约束列名称 between 10 and 40)

4.默认约束(Default ):
保证数据的完整性,如果没有入信息时,会使用默认信息填入,保证数据的完整性。

alter table 表名
add constraint 默认约束名 default(默认值) for 约束列名称

5.外键约束(Foreign Key ):
需要建立两表间的关系并引用主表的列,保证数据的完整性,互相依赖的数据不能缺失。

alter table 子表名
add constraint 约束名称 foreign key(外键列名称) references 主表名称(主键列字段)

6.非空约束
数据列不能为空

ALTER TABLE 表名 
MODIFY 非空约束名 字段类型 NOT NULL;

其他操作
1.删除约束

alter table 表名
drop constraint 约束名

2.关闭约束

alter table 表名
disable constraint 约束名 cascade
//如果没有被引用则不需CASCADE关键字

3.打开约束

alter table 表名
enable constraint 约束名

4. MySQL 问题排查都有哪些手段?

使用 show processlist 命令查看当前所有连接信息。
使用 explain 命令查询 SQL 语句执行计划。
开启慢查询日志,查看慢查询的 SQL。文章来源地址https://www.toymoban.com/news/detail-458744.html

5.Sql优化

到了这里,关于数据库知识点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软考软件设计师 数据库知识点笔记

    了解即可 外模式对应视图 概念模式对应的是数据库管理系统里面的基本表 内模式对应的是数据库里的一些存储文件 上图可直接背下面概念 有内模式跟物理独立性相关,有外模式跟逻辑独立性相关 两级映像其中有一方肯定是模式,如下提d选项 候选码的意思它只能表示那个

    2023年04月13日
    浏览(41)
  • 软考系统架构师知识点集锦九:数据库系统

    2.1.1数据库模式 (1)三级模式:外模式对应视图,模式(也称为概念模式)对应数据库表,内模式对应物理文件。 (2)两层映像:外模式-模式映像,模式-内模式映像;两层映像可以保证数据库中的数据具有较高的逻辑独立性和物理独立性。 (3)物理独立性:即数据库的内模式发生改变时,

    2024年02月07日
    浏览(33)
  • 数据库系统概述——第六章 关系数据理论(知识点复习+练习题)

    🌟 博主: 命运之光 🦄 专栏: 离散数学考前复习(知识点+题) 🍓 专栏: 概率论期末速成(一套卷) 🐳 专栏: 数字电路考前复习 🦚 专栏: 数据库系统概述 ☀️ 博主的其他文章: 点击进入博主的主页​​​​​ 前言: 身为大学生考前复习一定十分痛苦,你有没有过

    2024年02月09日
    浏览(38)
  • 【数据库通关之路】 MySQL 全路线学习知识点梳理(下)

    本文是MYSQL零基础小白学习系列的第三篇文章,点此阅读 上一篇文章 文末 包邮随机送《MySQL数据库进阶实战 》 五本 (点击下方目录直达) 目的:主键是一行数据的唯一标识,要求非空且唯一 添加约束: 建完表后添加主键约束: 删除约束: 目的:保存数据时,未指定值则采

    2024年02月04日
    浏览(37)
  • 数据库系统概述——第一章 绪论(知识点复习+练习题)

    ✨ 博主: 命运之光 🦄 专栏: 离散数学考前复习(知识点+题) 🍓 专栏: 概率论期末速成(一套卷) 🐳 专栏: 数字电路考前复习 🦚 专栏: 数据库系统概述 ✨ 博主的其他文章: 点击进入博主的主页​​​​​ 前言: 身为大学生考前复习一定十分痛苦,你有没有过以

    2024年02月09日
    浏览(41)
  • 【数据库通关之路】 MySQL 全路线学习知识点梳理(上)

    这是一篇 MySQL 通关 硬核经验学习路线,包括数据库相关知识,SQL语句的使用,数据库约束,设计等。专为小白整理,针对数据库零基础的朋友们,手把手带你学习MySQL,让你轻松学会! 文末包邮送《WPS Office高效办公:数据处理与分析 》1本(点击下方目录直达),本文每+1000浏览

    2024年02月04日
    浏览(30)
  • 【数据库通关之路】 MySQL 全路线学习知识点梳理(中)

    本文是 MYSQL零基础小白学习 系列的第二篇文章,点此阅读 上一篇文章 文末包邮送《分布式中间件核心原理与RocketMQ最佳实践 》 (点击下方目录直达)一本,本文每+1000浏览额外加抽一人 需求 :设计包含如下信息的学生表,请注重数据类型、长度的合理性。 编号 姓名,姓名最

    2023年04月20日
    浏览(29)
  • 数据库系统概述——第三章 关系数据库标准语言SQL(知识点复习+练习题)

    🌟 博主: 命运之光 🦄 专栏: 离散数学考前复习(知识点+题) 🍓 专栏: 概率论期末速成(一套卷) 🐳 专栏: 数字电路考前复习 🦚 专栏: 数据库系统概述 ☀️ 博主的其他文章: 点击进入博主的主页​​​​​ 前言: 身为大学生考前复习一定十分痛苦,你有没有过

    2024年02月10日
    浏览(51)
  • Java实现连接数据库验证登录和注册(附详细知识点讲解)

    学完Java基础后,一般会做个项目练手(上一篇博客有讲到 Java在线聊天室课程设计 ) 当中肯定会涉及到 登录验证 ,但没学过数据库 😅,不知道如何操作;只能把用户账户密码预存在一个txt文本当中,然后通过IO流读取验证 ⭐ 最后去搜相应的资料和网课进行学习,现在问题

    2024年02月02日
    浏览(34)
  • 基于Qt数据库项目实现(Sqlite3为例)|考查数据库、绘制(画家)、事件等知识点(进阶)

    坚持最初的梦想,扬帆起航,乘风破浪,永不言败。 01 数据库 数据库是什么?简易言之,就是保存数据的文件。可以存储大量数据,包括插入数据、更新数据、截取数据等。用专业术语来说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计

    2024年02月19日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包