MySQL-02——主键、注释、事务、数据类型相关

MySQL-02——主键、注释、事务、数据类型相关

1、主键约束

主键: 用于表示唯一性的字段称为主键
约束: 创建表时给字段添加的限制条件
主键约束: 让字段不能重复并且不能为空(唯一且非空)
格式:

  • create table t1(id int primary key, name varchar(10));
  • insert into t1 values(1,'AAA');
  • insert into t1 values(1,'BBB'); //报错不能重复.
  • insert into t1 values (null, 'CCC'); //报错不能为null

主键约束+自增

  • 从历史最大值基础上+1
  • 自增数值只增不减
  • 格式: create table t2(id int primary key auto_increment , name varchar(10));

2、注释comment

  • 给字段添加的描述
  • 格式: create table t3(id int primary key auto_increment comment '这是个id',name varchar(10) comment '这是名字');
  • 通过show create table t3; //查看注释

3、` 的作用

  • 用于创建表时修饰表名和字段名,可以省略create table ``t4`` ( ``id`` int);

4、冗余

  • 由于表设计不够合理,导致出现的大量重复数据,称为数据冗余,通过合理拆分表的形式解决冗余问题

5、is null和is not null

  • 判断字段值为null不能用=,要使用is null

6、验证事务回滚流程:

  • 1.开启事务:
    begin;

  • 2.蝙蝠侠 -100:
    update user set money=money-100 where id=2 and status='正常';

  • 3.此时开启另外一个终端查询数据是否发生改变(没变,改变的是内存数据)

  • 4.超人+100:
    update user set money=money+100 where id=1 and status='正常';

  • 5.此时判断出两条SQL只成功了-条,所以需要将内存中的改动回滚: rollback;

7、验证事务提交流程:

insert into user values(3, '灭霸', 8888, '正常');

  • 1.开启事务:
    begin;

  • 2.灭霸- 5000:
    update user set money=money-5000 where id=3 and status=' 正常';

  • 3.蝙蝠侠+5000:
    update user set money=money+5000 where id=2 and status='正常';

  • 4.经过判断两条SQL全部执行成功,此时可以将内存中的改动一次性 提交到磁盘中:
    commit;

事务补充:
事务的四大特性ACID:是保证事务正确执行的四大基本要素

  1. Atomicity:原子性,最小不可拆分,保证全部执行成功或全部失败
  2. Consistency:一致性,从一个一致状态到另一个一致状态
  3. Isolation:隔离性,多个事务之间互相隔离,互不影响。
  4. Durability:持久性,事务提交之后数据保存到磁盘中持久生效

SQL分类

1. DDL :
Data Definition Language, 数据定义语言包括: create、drop、alter、truncate 不支持事务
(truncate table 表名;删除表并创建新表,比 删除全表数据执行效率高,删除数据自增数值不变,这种方式自增数值清零)

2. DML :
Data Manipulation Language, 数据操作语言包括:insert、 delete、update、select (DQL)支持事务

3. DQL :
Data Query Language, 数据查询语言 只包括select。

4. TCL :
Transaction Control Language, 事务控制语言包括: begin、 commit、rollback、savepoint xxx、rollback to XXX

5. DCL:
Date Control Language, 数据控制语言

数据类型

1.整数:
int(m) bigint(m) , bigint对应java中的long,m代表显示长度
create table t_ int(id int,age int(10) zerofill);
insert into t_int values(1,18);
select * from t_int;

2.浮点数:
double(m,d) m代表总长度d代表的是小数长度,25.321 m=5,d=3 , decimal(m,d)是超高精度浮点数只有涉及超高精度运算时使用

3.字符串:
char(m):固定长度, char(10), abc 10, 执行效率高
varchar(m):可变长度, varchar(10), abc 3, 节省空间,最大长度65535, 一般超过255建议使用text;
text(m):可变长度最大长度65535

4.日期:
date:只能保存年月日
time:只能保存时分秒
datetime:保存年月日时分秒,默认值为null,最大值9999-12-31
timestamp:时间戳(距1970年1月1日 08 : 00 : 00毫秒数)保存年月日时分秒


版权声明:本文为qq_43575044原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。