赞
踩
目录
SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准化查询语言。
在关系型数据库中,常见的数据库对象包括以下几种
对象名称 | 关键字 | 描述 |
表格 | table | 用于存储数据的结构,由列(字段)和行(记录)组成 |
视图 | view | 虚拟表格,基于查询结果生成,用于简化复杂查询 |
索引 | index | 用于提高数据查询的速度,存储特定列的副本 |
约束 | constraint | 数据校验的规则,用于确保数据完整性和一致性 |
存储过程 | procedure | 预定义的一组SQL语句,可多次调用,用于执行常见任务 |
触发器 | trigger | 与表格相关联的代码段,监听到特定事件发生时自动执行该代码段 |
函数 | function | 一组预定义的操作,接受输入参数并返回计算结果 |
数据库 | database | 数据容器,包含多个表格、视图、索引等对象 |
类型名 | 关键字 | 描述 |
整数类型 | int、smallint、tinyint、bigint | 4字节、2字节、1字节、8字节整数 |
浮点数类型 | float(M)、double(M, D) | 单精度、双精度浮点数 |
定点数类型 | decimal(M, D) | 精确小数 |
字符串类型 | char(N)、varchar(N)、text | 固定长度、可变长度字符串、文本 |
日期和时间类型 | date、time、datetime、timestampyear | 日期、时间、日期和时间、时间戳、年份 |
二进制数据类型 | blob、binary(N)、varbinary(N) | 二进制大对象(图片、视频等)、固定长度、可变长度二进制 |
SQL语句可以分为以下几类,每一类都有特定的功能和用途:
1、DDL( Data Definition Language ): 数据定义语言,用于定义数据库结构和对象。
2、DML( Data Manipulation Language): 数据操作语言,用于插入、修改和删除数据。
3、DQL(Data Query Language):数据查询语言,用于从数据库中检索数据。
4、DCL(Data Control Language):数据控制语言,用于管理数据库用户的权限和访问控制。
5、TCL (Transaction Control Language): 事务控制语言,用于管理数据库事务。
create:创建数据库、表格、视图、索引等。
alter:修改数据库对象的结构,如添加、修改列等。
drop:删除数据库对象,如删除数据库、表格等。
truncate:删除表格中的所有数据,但保留表格结构。
insert:将新数据插入到表格中。
update:更新表格中的现有数据。
delete:从表格中删除数据。
select:从一个或多个表格中查询数据
from:指定要查询数据的表格
where:筛选满足特定条件的数据
distinct:查询结果清除重复数据
like:匹配关键字,用于模糊查询
order by:排序,(asc、desc: 升序、降序)
group by:将数据按照指定列进行分组
having:对分组后的数据进行条件筛选
order by:对检索到的数据进行排序
limit: 分页查询,限制查询记录的条数
grant:授予用户特定的权限
revoke:撤销用户特定的权限
begin:开启事务
commit:手动提交事务,并将所有的修改保存到数据库
rollback:事务回滚,撤销事务中的所有修改
savepoint:在事务中设置保存点,可在特定点回滚事务
数据库表的约束是定义了表格中列(字段)的值必须满足的条件,用于确保数据完整性和一致性的规则或限制。
约束名 | 关键字 | 描述 |
主键约束 | primary key | 确保每行具有唯一的标识符,通常用于一个或多个列上,主键对应列中的数据不能重复 |
外键约束 | foreign key | 建立表格之间的关联关系,确保外键引用另一个表格的主键 |
非空约束 | not null | 要求列中的值不能为空值 |
唯一约束 | unique | 确保列中的值是唯一的,但可以包括一个或多个NULL |
默认约束 | default | 规定在未提供值的情况下,列将自动设置为指定的默认值 |
检查约束 | check | 规定一个或多个列中的值必须满足特定条件,如数值范围、正则表达式、自定义函数等 |
多表查询是指在关系型数据库中同时查询多个表格以获取相关数据的操作。
指在多表查询中,表与表之间没有指定连接条件从而导致一种错误的查询结果集。
隐式内连接:通过 from where 语句定义连接条件来实现,而不是使用显式的jion关键字。
显式内连接:使用 inner join 关键字来明确指定连接条件,将两个或多个表格连接起来。
左外连接(left join): 返回左表格中的所有行,以及右表格中与左表格中交集部分的数据。
右外连接(right join)与左外连接相反,返回右表格中的所有行,以及左表格中与右表格中交集部分的数据。
全外连接(full join):返回左表格和右表格中的所有行,即两张表格数据的并集。
又称嵌套查询,子查询返回一个结果集,该结果集用于主查询的条件或操作。使用内连接通常用于查找两个表格之间的交集数据,而外连接用于查找匹配和非匹配数据,以满足不同的查询需求。一般来说外连接使用 left join,只需要调换主表和从表的位置顺序即可。
1、内置函数:
数据库系统自带的预定义函数,包括:字符串函数(concat、 upper、 substring...)、数学函数(round、ceil、mod...)、日期和时间函数(curdate、now、datediff...)、聚合函数(sum、avg、max...)等。
2、自定义函数:
用户根据具体需求自行创建的函数(使用function关键字创建自定义函数)。
原子性(Atomicity) | 事务是不可分割的单元,要么全部成功提交,要么全部失败回滚 |
一致性(Consistency) | 事务在执行前后数据库必须保持一致性状态 |
隔离性(Isolation) | 多个事务可以并发执行,但每个事务都是独立运行,不受其他事务影响 |
持久性(Durability) | 一旦事务成功提交,其更改将永久保存在数据库中 |
脏读 | 一个事务读取到另一个事务尚未提交的数据 |
不可重复读 | 在一个事务内,同一行数据在不同时间点被多次读取,但数据的内容不一致 |
幻读 | 一个事务在两次查询之间,另一个事务插入了新数据,导致两次读取数据的数量不一致 |
隔离级别 | 是否可能发生的并发问题 | ||
脏读 | 不可重复读 | 幻读 | |
读未提交 | 是 | 是 | 是 |
读已提交 | 否 | 是 | 是 |
可重复读 | 否 | 否 | 是 |
串行化 | 否 | 否 | 否 |
大多数数据库默认是可重复读的隔离级别,隔离级别越高,安全性越高,但性能越差。
存储过程是一组预定义的SQL语句的集合,需要以调用的方式执行,通常用于封装、重用和简化复杂的数据库操作,同时提供了一定程度的安全性和性能优化。
- #存款的存储过程
- CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_saving`(IN money INT, IN userID INT, OUT result VARCHAR(20))
- BEGIN
- UPDATE account SET balance = balance + money WHERE id = userID;
- SET result = '存款成功!';
- SELECT @output_result;
- END
游标用于在SQL查询结果集中逐行地遍历数据(类似于指针的作用),通常在存储过程、触发器或函数中使用,以实现对查询结果的迭代处理。
触发器是与表相关联的一段数据库代码,当特定事件(如插入、更新、删除数据)发生时自动触发执行。
数据库设计的三大范式(Normal Forms)是一组用于优化关系型数据库结构的规范,有助于提高数据完整性和一致性。
1. 第一范式 (1NF):每列都只包含原子值,无重复组或数组。
2. 第二范式 (2NF):非主键列完全依赖于主键,无部分依赖。
3. 第三范式 (3NF):非主键列之间无传递依赖,每列直接依赖主键。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。