Mysql操作命令大全(二)

/*

  • ClassName: TestMysql
  • Description:
  • Mysql的约束:
  • 目的:
  • 使得数据更准确,更完整
  • 1、键约束
  •  (1)主键约束
    
  •  (2)唯一键约束
    
  •  (3)外键约束
    
  • 2、非空约束
  • 3、默认值约束
  • 4、自增约束
  • 5、检查约束
  • 三、主键约束:
  • 1、关键字:primary key
  • 2、特点:增加主键约束的列(字段)的值必须是非空的+唯一的
  • 3、作用:保证表中不会出现两条无法区分的记录
  • 4、要求:每一张表都必须有主键约束
  • 5、分类
  • 单列主键约束
  • 复合主键约束
  • (二)使用主键约束
  • 1、创建主键约束
  •  (1)在建表是指定主键约束
    
  •  create table [数据库名.]表名称(
    
  •      字段1 数据类型 primary key,
    
  •      字段2 数据类型
    
  •  );
    
  •  create table dept(
    
  •        id int primary key,
    
  •        name varchar(20),
    
  •        description varchar(100)
    
  •    );
    
  •  create table [数据库名.]表名称(
    
  •      字段1 数据类型 ,
    
  •      字段2 数据类型,
    
  •      primary key(字段1)
    
  •  );
    
  •  或者
    
  •  create table dept(
    
  •      id int ,
    
  •      name varchar(20),
    
  •      description varchar(100),
    
  •      primary key(id),
    
  •   );
    
  •  (2)建表后指定主键约束
    
  •  create table dept(
    
  •        id int ,
    
  •        name varchar(20),
    
  •        description varchar(100),
    
  •        primary key(id),
    
  •     );
    
  •   修改表结构:
    
  •   alter table dept add primary key(id);
    
  • 2、删除主键约束
  •  修改表结构
    
  •  alter table 表名称 drop primary key;
    
  •  alter table dept drop primary key;
    
  • 3、复合主键
  •  (1)建表时指定主键约束
    
  •  create table [数据库.]表名称(
    
  •      字段1 数据类型,
    
  •      字段2 数据类型,
    
  •      字段2 数据类型,
    
  •      primary key(字段列表)
    
  •  );
    
  •  说明:复合主键不能在列后面加,需要单独指定
    
  •  例如:
    
  •  create table stu(
    
  •      sid int primary key,#学号
    
  •      sname varchar(20)#姓名
    
  •  );
    
  •  create table course(
    
  •      cid int primary key,#课程编号
    
  •      cname varchar(20)  #课程名称
    
  •  );
    
  •  create table score(
    
  •      id int      #没有业务意义,只是唯一标记一行
    
  •      sid int,    #学号
    
  •      cid int,    #课程编号
    
  •      score int   #对应的成绩
    
  •  );
    
  •  insert into stu values (1,"张三"),(2, "李四");
    
  •  insert into course values(1001,"java"),(1002,"mysql");
    
  •  (2)建表后指定主键约束
    
  •  alter table 表名称 add primary key(字段列表);
    
  •  alter table score add primary key(sid, cid);
    
  • 四、唯一键约束
  • (一)概述
  • 1、关键字:unique key
  • 2、特点:指定了唯一键的列值必须唯一,不能重复
  • 3、作用:给主键意外的列,限定唯一性
  • 唯一键和主键的区别:
  • (1)主键不能为空,唯一键可以为空
  • (2)主键约束,一个表只能有一个,而唯一键可以有多个
  • (二)使用唯一键
  • 1、如何创建、指定唯一键
  • (1)在建表时:
  •  create table[数据库.]表名称(
    
  •      字段1 数据类型 primary key,
    
  •      字段2 数据类型 【unique key】,
    
  •  );
    
  •  create table emp(
    
  •      eid int primary key,#员工编号
    
  •      ename varchar(20), #姓名
    
  •      cardid varchar(18) unique key, #身份证号
    
  •      tel varchar(11) unique key
    
  •  );
    
  • (2) 在建表后:
  • alter table[数据库名.]表名称 add unique key(字段名);
  • alter table[数据库名.]表名称 add unique key(字段列表);#复合唯一
  • 2、删除唯一键:
  • 修改表结构:
  • alter table【数据库名.】表名称 drop index 索引名;
  • 如果不知道索引名,可以用如下语句查询:
  • show index from 表名称;
  • alter table emp drop index carid;
  • 五、非空和默认值约束
  • 1、如何指定非空约束
  • (1)建表时:
  •  create table emp(
    
  •      eid int primary key, #员工编号
    
  •      ename varchar(20) not null, #姓名
    
  •      cardid varchar(18) unique key,#身份证号
    
  •      tel varchar(11) unique key not null,
    
  •      gender char not null default '男'
    
  •  );
    
  • (2)建表后:
  • create table[数据库.]表名称(
    •      字段1 数据类型 primary key,not null
      
    •      字段2 数据类型 【unique key】,
      
    •  );
      
  • create table emp(
  •  eid int primary key, #员工编号
    
  •  ename varchar(20) not null, #姓名
    
  •  cardid varchar(18) unique key,#身份证号
    
  •  tel varchar(11) unique key not null,
    
  •  gender char
    
  • );
  • alter table emp modify cardid varchar(18) unique key not null;
  • alter table emp modify tel varchar(11) not null;
  • alter table emp modify gender char not null default ‘男’;

*2、如何去掉非空和默认值约束
*

  • alter table emp modify gen char
  • 六、自增约束
  • 1、关键字:auto_increment
  • 2、特点:
  • (1)一个表只能有一个自增列
  • (2)自增列必须是整型的
  • (3)自增列必须是键列,例如:主键,唯一键
  • 3、如何指定自增
  • create table emp(
  •  eid int primary key auto_increment,
    
  •  ename varchar(20) not null
    
  • );
  • 七、外键约束
  • 外检约束不是必须的,而且数据量比较大是,不建议在数据库层面设计外键
  • 因为这样数据库压力大
  • (一)概述
  • 1、关键字:foreign key
  • 2、特点:
  • (1)需要两张表,或者一张表虚拟成两张表
  • (2)两张表分为主表和从表
  •  外键的建立是在从表上建立的
    
  • (3)被参考的表为主表,主表的被参考列必须是主键和唯一键
  • (二)如何指定外键
  • 1、在建表的时候指定外键
  • 要求:
  •  (1)建表的顺序
    
  •  先建立主表,在建从表
    
  •  create table[数据库.]表名称(
    
  •      字段1 数据类型 primary key,not null,
    
  •      字段2 数据类型 【unique key】【not null】 [default 默认值],
    
  •      字段3 数据类型 【unique key】【not null】 [default 默认值],
    
  •      ......
    
  •      foreign key (从表的外键列) references 主表名(主表被参考的列名)
    
  •  );
    
  • 部门表:
  • create table dept(
  •  did int primary key,
    
  •  dname varchar(20) not null unique key,
    
  •  description varchar(100)  #部门简介
    
  • );
  • 职位表:
  • create table job(
  •  jid int primary key,
    
  •  title varchar(20) not null,
    
  •  description varchar(100)
    
  • );
  • 员工表:
  • create table emp(
  •  eid int primary key,
    
  •  ename varchar(20) not null, #员工姓名
    
  •  deptid int #所在的部门编号
    
  •  foreign key(deptid) references dept(did);
    
  •  foreign key(jobid) references job(jid);
    
  • );
  • (2)删表顺序
    
  •  先删除从表,在再删除主表
    
  • (3)添加数据、修改从表数据
    
  •  先添加主表的记录,然后从表引用它,引用的主表的列值必须是存在的。
    
  • (4)删除、修改主表记录
    
  •  A、默认情况下,如果主表的被参考列的值被引用了,那么就不能轻易的被删除和修改。
    
  •  B、如果在建立外键,指定了“级联”的策略,那么可以做到级联修改和删除
    
  •      foreign key(从表的外键列) references 主表名(主表被参考的列名)【on update cascade】 【on delete cascade】
    
  •  C、如果建立在外键是,指定了“置空”的策略,那么可以做到级联修改和删除,从表的对应字段
    
  •      foreign key(从表的外键列) references 主表名(主表被参考的列名)【on update set null】 [on delete set null】
    
  • 2、建表后指定外键
  • alter table 从表名称 add foreign key(从表的字段) references 主表名(主表被参考的列名)
  • 3、同一张表,自引用
  • create table emp(
  •  eid int primary key,   #员工编号
    
  •  ename varchar(20) not null,#员工姓名
    
  •  managerid int ,             #他的领导编号,因为他是领导也是员工
    
  •  foreign key (managerid) references emp(id),
    
  • );
  • 4、如何删除外键
  • alter table 从表名称 drop foreign key 外键约束名
  • 如何查看外键约束名:
  • select * from information_schema.table_constraints where table_name = “表名称”;
  • date: 19-9-26 下午8:30
  • @author: hadoop
  • @since JDK 1.8
    */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值