1、表复制
(1)复制表的结构
①create table 新表 like 原表
(2)复制表结构+数据
①Create table 新表 select * from 原表
(3)只复制部分数据
①Create table 新表 select 列表 from 原表 where 筛选条件
(4)只复制某些字段
①Create table 新表 select 列表 from 原表 where 1=2
2、常见的数据类型
(1)数值型
①整型
②小数
(2)字符型
①较短文本
1)Char、varchar
②较长文本
1)text、blob
(3)日期型
①Date
②Time
③Year
④Datetime
⑤Timestamp
(4)整型
①Tinyint =》1
②Smallint =》2
③Mediumint =》3
④Int、integer =》4
⑤Bigint =》8
(5)小数
①分类
1)浮点型
a.float(M,D)
b.Double(M,D)
2)定点型(精准:财务计算)
a.decimal(M,D)
b.建议使用时,设置长度
备注:M:整数位数+小数位数,D:小数位数
(6)字符型
①Char:定长
1)常用:状态码、性别 等
②Varchar
1)非定长的字符串
2)默认长度:255
③较长的文本
1)text
2)Blob(二进制)
④其他类型
1)Enum:枚举
2)Set:集合
(7)日期类型
①Date:只保存日期
②Time:只保存时间
③Year:只保存年份
④Datetime:保存 日期+时间
⑤Timestamp:保存 日期+时间
⑥Datetime 与 timestamp 区别
3、约束
(1)概念
①一种限制,用于限制表中的数据,为了保证表中数据的准确和可靠性
(2)约束的种类
①默认:default
②非空约束:NOT Null
③主键约束:PRIMARY KEY
④唯一约束:UNIQUE
⑤检查约束:CHECK(mysql不支持)
⑥外键约束:FOREIGN KEY
(3)添加约束的分类
①列级约束
1)六大约束语法都支持,但是外键约束没有效果
②表级约束
1)除了 非空、默认,其他都支持
(4)案例:(列级别约束)
(5)案例:(表级别约束)
注意:检查约束 无效
(6)案例:(表级别约束:自定义约束名称)
4、约束的修改
(1)添加列级别约束
①Alter table 表名 modify column 字段名 字段类型 新约束;
(2)添加表级别约束
①Alter table 表名 add 【constraint 约束名】 约束类型(字段名)【外键引用】
(3)案例:
(4)删除约束
(5)主键约束 与 唯一约束对比
5、自增长:(经常与主键配合使用)
(1)自增长:可以不用手动的插入值,系统提供默认的序列值
(2)使用形式:
①auto_increment(mysql支持)
②sequence (序列:oracle支持)
(3)案例:
(4)是否可以设置自增长的步长???
①默认的步长:1
②set auto_increment_increment = 步长;
6、事务:transaction
(1)什么是事务
①一个完整的业务逻辑单元,不可再分
(2)和事务相关的语句:insert、delete、update
①为什么?
1)因为这三个语句都是和数据库中的数据有关,事务的存在主要是为了保证诗句的完整性、安全性
(3)事务的特性:ACID
①A:原子性
1)事务是最小的工作单元,是不可再分
②C:一致性
1)事务必须保证多条DML语句同时成功或同时失败
③I: 隔离性
1)事务与事务之间是相互独立,互不影响
④D:持久性
1)持久性就是说最终数据必须持久化到硬盘文件中,事务才算成功结束
(4)Mysql中事务模式是:自动提交的
①如何关闭自动提交?
1)start transaction
(5)事务隔离级别
①第一级别:读未提交(read uncommitted)
1)对方事务还没有提交,我们当前事务就可以读到对方未提交的数据
2)读未提交存在:脏读
②第二级别:读已提交(read committed)
1)对方事务提交之后,我们才可以读取
2)解决了脏读现象
③第三级别:可重复读(repeatable read)
④第四级别:序列化读/串行化读
⑤注意:
1)Mysql默认:可重复读
2)Oracle默认:读已提交
(6)如何查看隔离级别?
①select @@global.tx_isolation;
(7)设置隔离级别
①set gloal transaction isolation level 隔离级别;
②例如:
(8)自己测试:隔离级别的改变