一、约束
1.约束:确保字段的完整性,正确性,有效性
* not null ,unique , primary key 非空且唯一 ,foreign key.
* 唯一约束unique
* 唯一约束unique限定的值可以有多个null
* 添加约束
* Alter table 表名 MODIFY 字段名 约束
* 删除约束
* Alter table 表名 MODIFY 字段名
* 删除主键
* Alter table 表名 DROP PRIMARY KEY
* 自动增长:auto_increment
* ALTER TABLE stu MODIFY num INT -- 删除自动增长
* ALTER TABLE stu MODIFY num INT AUTO_INCREMENT -- 添加增长
* 外键约束:
* create table 表名(
* ...
* 外键列
* constraint 外键名称 foreign key 外键列名称 references 主表名称(主表列名称)
* );
*
* 删除外键
* Alter Table 表名 drop foreign key 外键名称
* 添加外键
* Alter Table 表名 add constraint 外键名称 foreign key 外键列名称 references 主表名称(主表列名称) 2. 级联:
* 更新:
* Alter Table 表名 add constraint 外键名称 foreign key 外键列名称 references 主表名称(主表列名称)
* on update cascade
* 删除:
* Alter Table 表名 add constraint 外键名称 foreign key 外键列名称 references 主表名称(主表列名称)
* on delete cascade
二 、多表关系
多表关系:一对一,一对多,多对多
1.操作方式:
* 一对一:在任意的一方建立唯一外键,指向任意的一方的主键。
* 一对多,在多的一方建立外键,指向一的一方的主键。
* 多对多,借助中间表,至少包含两个字段,这两个表作为第三张表的外键,分别指向两张表的主键,联合主键 2. 范式:
* 第一范式:每一列是不可分割的 原子数据项
* 问题:数据冗余;添加新数据不合法;数据删除将删除行所有信息。
* 第二范式:在第一范式基础上,消除非主属性对主码的 部分函数依赖。
* 函数依赖:(A-->唯一B,B依赖于A)
* 完全函数依赖:(如果A是属性组,B的确定需要依赖于A属性组中所有属性值) A(a,b,c)-->B
* 部分函数依赖:(如果A是属性组,B的确定需要依赖于A属性组中部分属性值) A(a,b,c), A(a,c)-->B
* 传递函数依赖: A-->B,B-->C.存在A-->C ,C传递依赖于A
* 码:表中的属性或者属性组被其他所有属性完全依赖,则该属性或者属性值为该表的码。
*
* 第三范式:在第二范式的基础上,任何非主属性不依赖于其他非主属性(消除 传递依赖)
3.数据库备份与还原:
* 命令行:
* 备份:mysqldump -u用户名 -p密码 数据库名称 > 保存的路径
* 还原:
* 登陆,mysql -u用户名 -p密码
* 创建,create database 数据库名称
* 使用,use 数据库名称
* 执行,source 文件路径
三、多表查询
* 多表查询直接查询,组成笛卡尔积,即两个集合的所有组成情况,需要消除无用的数据
*
* 多表查询分类:
* 1.内连接: 确定表 ,字段,条件
* 隐式:
* select xx1,xx2,xxn from table1 t1, table2 t2 where condition
* 显式:
* select 字段 from table1 (inner) join table2 on condition
* 2.外连接:
* 左外连接:查询左表所有数据以及其交集部分
* select 字段 from table1 lift (outer) join table2 on condition
* 右外连接: 查询左表所有数据以及其交集部分
* select 字段 from table1 right (outer) join table2 on condition
* 3.子查询:查询中嵌套查询,被嵌套的部分为子查询
*
* 子查询查询情况不同:
* 单行单列:子查询作为条件,使用运算符判断
* 多行单列:子查询作为条件,使用in判断,
* 多行多列:子查询作为虚拟表查询
四、事务
Transaction
* 基本介绍
* 事务概念:包含多个步骤的业务处理,被事务管理,则要么同时成功,要么同时失败。异常则回滚。
* 操作:开启事务start transaction,回滚rollback,提交commit。
* MySQL中DML(增删改)默认提交事务,持久化更新;如果开启事务不提交,关闭窗口将自动回滚。
* 查看默认提交方式 :Select @@autocommit; 1自动,0手动
* 修改默认提交方式 :Set @@autocommit=1/0;
* 四大特征
* 1.原子性,不可分割的最小操作单位。
* 2.持久性,一旦提交或回滚,数据库会持久化保存数据。
* 3.隔离性,多个事务之间相互独立。
* 4.一致性,数据操作前后,数据总量不变。
* 隔离级别
* 概念:多个事务之间是隔离,相互独立的,但如果多个事务同时操作同一批数据,会引发问题,可通过设置不同隔离级别解决
* 存在问题:
* 1.脏数据:事务读取到另一个事务未提交的数据
* 2.不可重复读(虚读):同一事务中,两次读取到的数据不同
* 3.幻读:一个事务操作数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改
* 隔离级别:
* 1. read uncommitted 读未提交 : 1,2,3
* 2. read committed 读已提交: 2,3
* 3. repeatable read 可重复读: 3
* 4. serializable 串行化:
* 隔离级别从小到大,安全性越来越高,但效率越来越低
* 查询隔离级别: select @@tx_isolation
* 设置隔离级别:set global transaction isolation level 级别字符串;
MySQL多条 查询 mysql查询多张表
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
mysql 查询多张表 汇总 mysql多表查询实验总结
多表查询:1.拼表查询2.子查询
子查询 数据 查询语句 -
MySQL多表查询要先分组还是连表 mysql 多张表查询
mysql数据库 多表查询 多表查询,又称表联合查询,即一条sql语句涉及到的表有多张,数据通过特定的连接进行联合显示。
MySQL多表查询要先分组还是连表 mysql 等值连接 外连接 多表查询 -
SolidWorks支持python吗
目录1、参数2、手动建模2.1方程式驱动曲线画渐开线2.2画基圆、齿根圆、分度圆和齿顶圆2.3画单个齿廓2.4以齿厚拉伸基圆草图2.5以齿厚拉伸单齿廓草图2.6阵列齿数个单齿3、python自动化建模4、总结1、参数模数 "m" = 2齿数"z"= 50压力角 "a"= 20分度圆直径 "d"= "m" * "z"齿顶圆直径 "da"= ( "z" + 2
SolidWorks支持python吗 1024程序员节 python Solidworks 建模