数据库学习续

###主键约束

- 什么是主键:表示数据唯一性的字段称为主键;

- 什么是约束:是创建表时给表字段添加的限制条件

- 主键约束:让该字段的数据唯一且非空(不能重复,不能为null)

- 格式:create table ti(id int primary key,name varchar(10));

###主键约束+自增

- 自增数值只增不减,从历史最大值基础上+1

- 格式:create table t2 (id int primary key auto_increment,name varchar(10));

    eg: insert into t2 values(null,'aaa');

###注释

- 格式:create table t3 (id int primary key auto_increment comment '这是主键' ,name varchar(10) comment '这是名字');

###`的作用

- 用于修饰表名和字段名,可以省略

 create table `t4`(`id` int ,`name` varchar(10));

###冗余

- 由于表的设计不合理导致的大量重复数据称为数据冗余

###事务

- 什么是事务:事务是数据库中执行同一业务多条SQL语句的工作单元,可以保证全部执行成功或全部执行失败。

- 事务相关指令:

    1.开启事务   begin;

    2.提交事务   commit;

    3.回滚           rollback;

- 验证转账流程:

    create table user (id int primary key auto_increment,name varchar(10),money int, status varchar(5));

    insert into user values(null,'超人',50,'冻结'),(null,'蝙蝠侠',5000,'正常'),(null,'灭霸',20,'正常');

- 转账的SQL:

    update user set money=money-2000 where id=2 and status='正常';

    update user set money=money+2000 where id=1 and status='正常';

- 有事务保护的情况下 回滚流程:

   1.开启事务

         begin;

    2.蝙蝠侠-2000;

         update user set money=money-2000 where id=2 and status='正常';

    3.此时在当前终端查询数据时 数据已经发生了改变(因为查询到的是内存中的改动),开启另一个终端查询数据发现数据是没有改变的(因为新的终端查询到的是磁盘的数据)

    4.超人+2000

        update user set money=money+2000 where id=1 and status='正常';

    5.此时从执行结果中发现一条成功一条失败,应该执行回滚操作

          rollback;

- 有事务保护的情况下 提交流程:

 

1.开启事务

 

         begin;

2.蝙蝠侠-2000

 update user set money=money-2000 where id=2 and status='正常';

3.此时仍然是在内存中改动  磁盘数据没有发生改变

4.灭霸+2000

update user set money=money+2000 where id=3 and status='正常';

5.此时两次改动都是在内存中改完,发现两次全部成功,所以执行提交

 commit;

- 保存回滚点:

     begin;

     update user set money=1 where id = 2;

     savepoint s1;

     rollback to s1;

- 事务的ACID特性     **面试常考**

    保证事务正确执行的四大基本要素

1.Atomicity原子性:最小不可拆分  保证全部执行成功或全部执行失败

2.Consistency一致性:从一个一致状态 到另一个一致状态

3.Isolation隔离性:多个事务之间互相隔离 互不影响

4.Durability持久性:当事务提交后数据保存到磁盘中 持久生效

 

###SQL分类

####DDL Data Definition Language数据定义语言

-truncate tabel 表名;

    删除表并创造新表     让自增数值清零

- 包括: create drop alter truncate

- 不支持事务

####DML  Data Manipulation Language 数据操作语言

- 包括:insert update delete select

- 支持事务

####DQL Data Query Language 数据查询语言

- 只包括:select 

####TCL Transaction Control Language 事务控制语言

- 包括:begin,commit,rollback,savepoint xxx,rollback to xxx;

####DCL Data Control Language 数据控制语言

- 负责分配用户权限相关的SQL

 

###数据类型

1.整数:int(m) 和 bigint(m)    m代表的是显示长度 需要结合zerofill使用

   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代表小数长度,超高精度的浮点数decimal(m,d)

         25.234   m=5 d=3

3.字符串:char(m)固定长度   最大长度255     好处执行效率略高

                 varchar(m)可变长度  最大长度65535(但是超过255建议使用text)好处节省空间

                 text(m)可变长度 最大长度65535 

4.日期:

- date:保存年月日

- time:保存时分秒

- datetime:保存年月日时分秒,默认值为null,最大值9999-12-31

- timestamp(时间戳):保存年月日时分秒,默认值为当前系统时间,最大值2038-1-19

###导入*.sql文件

- Windows系统 把文件放在C或者D盘的根目录下

   source d:/*.sql;

- linux系统 把文件放在桌面

   source /home/soft01/桌面/*.sql

 

 

       

 

posted @ 2021-04-07 16:40  LIjunqiang  阅读(51)  评论(0)    收藏  举报