- 数据库的五种约束
- 数据库的入门操作:
- 三个创建:创建数据库、数据表、约束
- 四条语句:INSERT、DELETE、UPDATE、SELECT
- 五种约束:主键primary 外键foreign 默认default 唯一unique 检查check
-
- 数据库进阶操作
- 高级查询
- 数据库对象:索引index、视图view、函数function、触发器trigger、子程序procdure、程序包package
-
- 数据库高级操作:
- 数据库优化操作
- 数据库备份还原
- 数据库分布式部署
-
- 认识五种约束
- 主键约束:primary key
任何数据表中,每行数据就是一条独立的记录,或者一个独立的对象
任何两个对象不能相同,相同的对象没有必要在数据表中存储两份。
在数据库设计时,为了表示每一行数据的唯一性,给数据表中每行数据,增加了一个标识列,这一列没有任何实际意义~主要是用来标识这行数据是唯一的:这一列:主键列
|
创建主键:Primary key 设置默认值自动增长:auto_increment |
- 外键约束 foreign key
1对1
1对n
n对n
防止删除被外键约束的数据
|
描述: 创建外键约束时可以在创建表时创建外键约束,但一般情况是在表创建完成后再创建外键约束 # 唯一约束也是这样的格式 []中的内容可写可不写 Alter table 表名 Add [constraint] 外键约束 外键约束名称 (列名) references 表名(列名); |
- 唯一约束:unique
一种简单的约束操作,可以让数据表中某一列,不能存放重复的数据
但是唯一约束不是主键约束!
|
|
- 默认约束:default
在数据处理过程中,要给某些字段增加默认数据,保证数据的完整性,方便数据管理
|
Default 当该列没有添加数据时会 自动添加默认的数据 |
正常情况下~我们给一些指定的列增加默认值约束,这样的情况下,如果在增加数据的时候不给这些列添加数据就会直接使用默认数据填充。
- 检查约束:chack
数据库中为了保证数据的一致性、完整性而出现的简单逻辑处理
性别:男|女
增加数据之前的数据检查操作:检查约束!
|
Not null 添加数据时不能为空 |
提示:创建表时当列名和数据库中的关键字重名时会变成大写,在列名前后加上键盘tab上方的撇键···········``可以将关键字转义成普通的字符,但是这种操作会影响以后的操作尽量别用”
- 数据库对象:索引 INDEX
- 索引:目录:为了数据快速查询而出现的一个数据序列,是一个数据库对象
目的:为了数据的快速查询
数据库:索引:对于添加索引的列进行数据的检索数据的提取
通过条件进行查询数据时,如果查询列支持索引,这个查询操作就会非常快速!
适合场景:某张数据表中的数据,频繁查询修改、很少增加删除-> 给对应的列添加索引
索引特点:查询修改较快,会影响对于数据进行增加删除的性能
给经常作为条件出现的列,增加索引。
千万不要在大数据量的表上,直接增加索引!很容易锁表!
添加索引语法: alter table 表名 add index ‘索引名称’ (列名); |
删除索引语法: Alter table 表明 Drop index ‘索引名称’; |
描述: 添加索引可以一次给多个列增加索引,索引名称是自己起的名字 |
# 索引操作:增加索引 ALTER TABLE emp ADD INDEX `name_index` (NAME); # 删除索引 ALTER TABLE emp DROP INDEX `name_index`; # 索引的存在:就是为了索引列作为条件时,提升查询效率 SELECT * FROM emp WHERE NAME = '关磊涛';
|
- 数据库对象:视图
视图:VIEW:是一种特殊的表格[不能直接称为表格] 是一种可以将复杂的SQL语句执行的结果进行动态结果存储的数据对象 每次查询视图,都会自动更新视图对应的SQL语句查询的结果
|
# 查询每个部门下的员工信息:视图:保存第一个SQL执行的动态结果 # 视图:一种特殊的表格 CREATE VIEW emp_info AS SELECT d.dname, d.ddesc, e.name FROM dept d LEFT JOIN emp e ON d.id = e.dept_id;
# 需要查询每个部门下所有的员工 SELECT * FROM emp_info; SELECT * FROM dept; INSERT INTO dept(dname, darea, dreg_time, ddesc) VALUES('教管部', 'JS101', '2018-08-29', '教学管理部分');
|
描述: View 创建一个视图 Emp_info: 将查询到的每个部门下的员工信息视图信息保存到emp_info表中 通过 select *from emp_info; 就可以查询到两个关联表中部门员工信息,并且emp_info可以根据原表中数据的变化而更新表中的信息,以方便其他人员查询 通过创建大量的视图,来方便管理一些复杂的查询
|
- 事务管理
事务:所谓事务,就是要完成一件事情,在这个事情中包含了多个任务
当所有的任务都执行成功,这个事情就是成功的:所有改动的数据生效
当任意一个任务执行失败,这个事情就是失败的:所有改动的数据回退
对于事务的管理操作:称为事务管理
术语解释:
开启事务[开始记录一个事情中的多个任务]
执行事务SQL语句[正常情况下,一条语句就是一个任务]
提交事务【成功】| 回滚事务【事务】
事务管理关键词
开启事务:start transaction | begin | set autocommit = 0
执行SQL语句à 多条SQL语句
提交事务Commit | 回滚事务 Rollback
语法: |
事务特性:ACID原则 事务Transaction正确执行的四个基本要素 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability
|
扩展:
软件开发过程中的各种术语缩写
CRUD:增删改查
ACID:事务隔离原则
B2B/C2C/B2C:电商网站 商家-用户 定位关系 B:Business C:Customer
B2B:商家对商家,批发网站
C2C:客户对客户,二手网站
B2C:商家对客户,购物网站
CMS:Content managerment system 内容管理系统
OA:Office Automation办公系统
Workflow:工作流
面向对象程序设计开发 五大原则
SRP、OCP、LSP、DIP、ISP
SRP:Single Resposibility Principle 单一职责 : 每个类型、函数,尽量只做一件事情或者一个功能。
OCP:Open Close Principle 开闭原则:软件增加功能时,对于新增代码开放,对于修改原有代码关闭。
LSP:里式替换原则:让程序可配置化[通过抽象和多态,替换原有的硬编码]
DIP:Dependence Inversion Principle 依赖倒置原则;让程序中的代码尽量依赖抽象,不要依赖具体:多用继承扩展代码功能