您的位置:首页 > 数据库 > MySQL

MySQL数据库的基本用法(四)-约束和索引

2019-05-20 21:22 92 查看

约束
约束:约束就是给字段添加的限制条件
非空约束 not null
字段的值不能为null
create table 表名(字段名 字段类型,字段名 字段类型not null);
唯一约束 unique
字段的值不能重复
create table 表名(字段名 字段类型,字段名 字段类型 unique);
数据重复则插入失败
默认约束 default
给字段设置默认值
触发默认值生效
主键约束 primary key
主键约束: 插入数据必须是唯一且非空的
主键:用于表示数据唯一性的字段称为主键
约束: 就是创建表的时候给字段添加的限制条件
主键约束+自增 primary key auto_increment
自增数值只增不减
从历史最大值基础上+1
外键约束
外键:用于建立关系的字段
外键约束: 为了保证两张表之间建立正确的关系,外键字段的值可以为null,可以重复,不能是另外一张表中不存在的数据,建立好关系后被依赖的数据不能先删除,被依赖的表不能先删除

  • 如何使用外键约束
  • constraint 约束名称 foreign key(外键字段名) references 被依赖的表名(被依赖的字段名) ;
  • 例:
  1. 先创建部门表
    create table dept(id int primary key auto_increment,name varchar(10));
  2. 创建员工表
    create table emp(id int primary key auto_increment,name varchar(10),deptid int,constraint fk_dept foreign key(deptid) references dept(id));
    索引
    1.索引:索引是数据库中用于提高查询效率的技术,工作原理类似于目录
    2.为什么使用索引:如果不使用索引,数据会零散的保存到每一个磁盘块中,查找数据时需要逐个遍历每一个磁盘块 直到找到数据为止,使用索引后磁盘块会以树桩结构保存,查找数据时可以大大减低磁盘块的访问量,从而提高查询效率
    3.有索引就一定好吗?
    不是,如果数据量比较小,有索引反而会降低查询效率
    创建索引
    1.创建索引
    create index 索引名 on 表名(字段名(?字段长度));
    例:create index i_item_title on item2(title);
    2.索引是越多越好吗?
    不是,只针对常用的查询字段创建索引,因为索引会占磁盘空间
    查看索引
    show index from 表名;
    删除索引
    drop index 索引名 on 表名;
    复合索引
    通过多个字段创建的索引称为复合索引
    例:create index i_item_title_price on item2(title,price);
    事务
    1.数据库中执行同一业务多条SQL语句的工作单元,可以保证多条SQL全部执行成功或全部执行失败
    2.事务的ACID特性,此特性是保证事务正确执行的四大基本要素
    Atomicity:原子性,最小不可拆分,保证全部成功或全部失败
    Consistency:一致性,保证从一个一致状态到另一个一致状态
    Isolation:隔离性,多个事务直接互不影响
    Durability:持久性,事务提交后数据持久保存到磁盘中
    事务相关指令
    1 开启事务 begin;
    2 提交事务 commit;
    3 回滚事务 rollback; rollback to xxx;
    4savepoint; 保存回滚点  savepoint xxx;
    SQL分类
    DDL: Data Definition Language
    数据定义语言,包括:create 、drop 、alter、 truncate ,不支持事务
    truncate table 表名:删除表并创建新表 自增数值清零
    DML: Data Manipulation Language
    数据操作语言,包括:insert、delete、update、select(DQL),支持事务
    DQL: Data Query Language
    数据查询语言,包括:select
    TCL: Transaction Control Language
    事务控制语言,包括:begin、commit、rollback、savepoint xxx、rollback to xxx
    DCL: Data Control Language
    数据控制语言,分配用户权限相关SQL
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: