天津星创网站建设有限公司,济南房产网官网首页,免费在线代理网页,网站的收录情况怎么查一、约束的概念和分类
约束是作用于表中列上的规则#xff0c;用于限制加入表的数据#xff0c;约束的存在保证了数据库中数据的正确性、有效性和完整性。 1.1、单表约束 利用约束创建表 需要注意的是:
1、主键是一行数据的唯一标识#xff0c;要求非空且唯一。一张表只能…一、约束的概念和分类
约束是作用于表中列上的规则用于限制加入表的数据约束的存在保证了数据库中数据的正确性、有效性和完整性。 1.1、单表约束 利用约束创建表 需要注意的是:
1、主键是一行数据的唯一标识要求非空且唯一。一张表只能有一个主键。
2、默认约束只有在不给值时才会采用默认值。如果给了null那值就是null值。
3、auto_increment一般和主键用在一起,当主键类型为int类型时,不给主键赋值时,主键的值会自动增长。 1.2、多表约束 外键用来让两个表的数据之间建立链接保证数据的一致性和完整性。 利用外键约束创建表,添加外键 dep_id,关联 dept 表的id主键。
创建一个员工表,并使用外键约束和部门表关联到一起。 创建一个部门表 往员工表和部门表中添加元素: 员工表中的dep_id字段是部门表的id字段关联也就是说1号员工张三属于1号部门研发部的员工。现在我要删除1号部门,会发现无法删除。
所以使用了外键约束可以保证数据的一致性和完整性。因为如果此时可以删除1号部门,那么属于1号部门的员工这些数据全部都是错误数据,因为他们的部门没有了。
需要注意的是Mysql中innodb是支持外键的而myisam是不支持外键的。 二、多表查询
多表查询顾名思义就是从多张表中一次性的查询出我们想要的数据。多表查询分为:内连接查询、外连接查询、子查询。 2.1、内连接查询
内连接查询相当于查询 A B 交集数据。内连接查询又分为隐式内连接和显示内连接。
隐识内连接:(平常工作中最常用的)
SELECT 字段列表 FROM 表1,表2… WHERE 条件;
SELECT * FROM emp,dept
WHERE emp.dep_id dept.did; 显示内连接:
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;
select * from emp inner join dept on emp.dep_id dept.did; 两种连接方式在查询结果的功能上是等效的它们都可以实现相同的连接操作。然而在性能和可读性方面存在一些差异。 2.2、外连接查询
左外连接相当于查询A表所有数据和交集部分数据
右外连接相当于查询B表所有数据和交集部分数据 查询emp表所有数据和对应的部门信息左外连接
select * from emp left join dept on emp.dep_id dept.did; 查询dept表所有数据和对应的员工信息右外连接)
select * from emp right join dept on emp.dep_id dept.did; 2.3、子查询
查询中嵌套查询称嵌套查询为子查询。 查询工资高于猪八戒的员工信息。
select * from emp where salary (select salary from emp where name 猪八戒);
括号里面的是子查询,用来查询猪八戒的工资,再把这条查询结果当做条件就形成了嵌套查询。 三、事务
数据库的事务Transaction是一种机制、指的是把一组SQL操作看成一个整体在执行的过程中要么同时成功要么同时失败。
具体的例子:
张三和李四的账户中各有1000块钱现李四需要转500块钱给张三模拟的转账操作为:
第一步查询李四账户余额
第二步从李四账户金额 -500
第三步给张三账户金额 500
现在假设在转账过程中第二步完成后出现了异常第三步没有执行就会造成李四账户金额少了500而张三金额并没有多500。下图就是出现的错误结果。 使用事务可以解决上述问题 从上图可以看到在转账前开启事务如果出现了异常回滚事务三步正常执行就提交事务这样就可以完美解决问题。 3.1、数据库中事务的语法 将上述案例添加事务后的sql: 上面sql中执行成功则选择执行提交事务而出现问题则执行回滚事务。但是在实际工作中我们肯定不会这样操作而是在java代码中进行操作在java中可以抓取异常没出现异常提交事务出现异常回滚事务。 3.2、Mysql和Oracle中关于事务的区别
mysql中的事务是自动提交的。也就是说我们不需要添加3.1中的事务执行sql语句语句执行完毕会自动的提交事务。
Oracle中的事务是手动提交的,执行完sql语句需要我们手动Commit(提交)或者rollback(回滚)。 3.3、查询数据库中事务的提交方式
可以通过下面语句查询默认提交方式
SELECT autocommit;
查询到的结果是1 则表示自动提交结果是0表示手动提交。 3.3、事务的四大特征
原子性Atomicity: 事务是不可分割的最小操作单位要么同时成功要么同时失败
一致性Consistency :事务完成时必须使所有的数据都保持一致状态
隔离性Isolation :多个事务之间操作的可见性
持久性Durability :事务一旦提交或回滚它对数据库中的数据的改变就是永久的