MySQL数据库(二)

主键约束

  • 约束:创建表时给表字段添加的限制条件
  • 主键:表示数据唯一性的字段称为主键
  • 主键约束:保证字段的值唯一且非空
  • 如何使用: 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)); insert into t2 values(null,‘aaa’); 1 insert into t2 values(null,‘bbb’); 2 insert into t2 values(10,‘ccc’); 10 insert into t2 values(null,‘ddd’); 11 delete from t2 where id>=10;
    insert into t2 values(null,‘eee’); 12 delete from t2; insert into t2 values(null,‘fff’); 13

注释

  • 给表字段添加注释
  • 如何使用: create table t3(id int primary key auto_increment comment ‘这是个主键’,name varchar(10) comment ‘这是名字呵呵’); show create table t3; //查看注释
`符号的作用
  • 用于修饰表名和字段名 可以省略,但不要和单引号搞混 create table t4(name varchar(10));

数据冗余

  • 由于表设计不够合理导致的大量重复数据 称为数据冗余,可以通过拆分表的形式降低或避免冗余的出现

事务

  • 事务是数据库中执行同一业务多条SQL语句的工作单元,可以保证这多条SQL语句全部执行成功或全部执行失败,不会出现部分成功部分失败的情况
  • 验证转账业务:
    1. 创建表 create table user(id int primary key auto_increment,name varchar(10),money int,status varchar(5)); insert into user values(1,‘蝙蝠侠’,20000,‘正常’),(2,‘超人’,50,‘冻结’); insert into user values(3,‘神奇女侠’,20,‘正常’);
    2. 蝙蝠侠给超人转账SQL update user set money=money-2000 where id=1 and status=‘正常’; update user set money=money+2000 where id=2 and status=‘正常’;
验证过程:转账失败
  1. 开启事务 begin;
  2. 执行转账SQL update user set money=money-2000 where id=1 and status=‘正常’; 此时查看内存中数据和数据库中数据(需要开启新的终端窗口) update user set money=money+2000 where id=2 and status=‘正常’; 发现转账失败,把内存中的错误操作回滚回去
  3. 回滚事务: 把内存中的错误操作修改回去 rollback;
验证过程:转账成功
  1. 开启事务 begin;
  2. 执行转账SQL update user set money=money-2000 where id=1 and status=‘正常’; 此时查看内存中数据和数据库中数据(需要开启新的终端窗口) update user set money=money+2000 where id=3 and status=‘正常’; 此时判断两条全部执行成功,认为转账成功,把内存中的改动一次性提交到磁盘中
  3. 提交事务 commit;
事务相关指令
  1. 开启事务 begin
  2. 提交事务 commit
  3. 回滚事务 rollback
  4. 保存回滚点 savepoint xxx;
  5. 回滚到指定回滚点 rollback to xxx;

begin; update user set money=1000 where id=1; savepoint s1; update user set money=2000 where id=1; savepoint s2; rollback to s1;

SQL分类

  1. DDL Data Definition Language:数据定义语言 包括:create,drop,alter,truncate , 不支持事务
  2. DML Data Manipulation Language: 数据操作语言 包括:insert、update、delete、select(DQL),支持事务
  3. DQL Data Query Language:数据查询语言 只包括:select
  4. TCL Transaction Control Language:事务控制语言 包括:begin commit rollback savepoint xxx ,rollback to xxx;
  5. DCL Data Control Language:数据控制语言 分配用户权限相关的SQL
truncate
  • 格式: truncate table 表名;
  • 删除表并创建新表 自增数值清零 create table t5(id int primary key auto_increment,name varchar(10)); insert into t5 values(null,‘aaa’),(null,‘bbb’); truncate table t5; insert into t5 values(null,‘aaa’),(null,‘bbb’);
数据类型
  1. 整数类型
  2. 常用:int(m)和bigint(m) m代表的是显示长度 需要结合zerofill关键字使用 create table t_int(id int,age int(10) zerofill); insert into t_int values(1,18);
  3. 浮点数
  4. 常用:double(m,d) m代表总长度 d代表小数长度 78.386 m=5 d=3
  5. decimal(m,d) 超高精度浮点数 当超高精度运算时使用
  6. 字符串
  7. 常用: char(m) 不可变长度 最大长度255 ,varchar(m) 可变长度 节省资源 最大长度为65535 长度超过255建议使用text text(m)可变长度 最大长度65535
  8. 日期
  9. date:只能保存年月日
  10. time:只能保存时分秒
  11. datetime:年月日时分秒,默认值为null,最大值9999-12-31
  12. timestamp:时间戳,年月日时分秒,默认值为当前系统时间,最大时间2038-1-19
create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);

insert into t_date values('2019-03-20',null,null,null);

insert into t_date values(null,'16:33:30','2019-03-22 15:00:05',null);
导入*.sql文件
  1. windows系统 把文件解压出来 把tables.sql文件放到C盘根目录 source c:/tables.sql;

  2. linux系统 把文件解压出来 把tables.sql文件放到桌面 source /home/soft01/桌面/tables.sql;

    show tables; 如果出现乱码 执行以下代码 set names gbk;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值