MySQL之库表操作详述(3)

enum:单选,只能在给定的范围内选一个值
set:多选,可以在给��的范围内选择一个或多个值
 示例:
  枚举
    CREATE TABLE shirts (name VARCHAR(40),size ENUM('xsmall', 'small', 'medium', 'large', 'x-large'));
      INSERT INTO shirts VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');
    集合
      CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
      INSERT INTO myset VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');

  4,表的完整性约束

  4.1分类

PRIMARY KEY (PK)    标识该字段为该表的主键,可以唯一的标识记录
FOREIGN KEY (FK)    标识该字段为该表的外键
NOT NULL    标识该字段不能为空,不设置默认可以为空的
UNIQUE KEY (UK)    标识该字段的值是唯一的
AUTO_INCREMENT    标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT    为该字段设置默认值,不设置默认为null
UNSIGNED 无符号,不设置默认为有符号的
ZEROFILL 使用0填充


  4.2not null,default,unique,primary key,unsigned

create table t1(id int unsigned not null default 1) #表示id字段为无符号,不可以为空,默认值为1
create table t1(id int unique)    #表示id字段的值不能重复
create table t1(id int ,name char(10),constraint ak_name unique(name))  #这也表示name不能重复
联合唯一:
create table t1(id int,name char(10),unique(id,name))  #表示必须不能出现id和name都相同
主键:相当于not null + unique
create table t1(id int primary key)
create table t1(id int,name char(10),constriaint pk_name primary key(id)  #这是两种方式都可以设置主键,
联合主键:
create table t1(id int,name char(10),primary key(id,name))

  4.3自动增长

create table t1(id int primary key auto_increment,name char(10)
insert into t1(name) values('nnn'),('sss');  #此时没有输入id,但id会从1开始自动增长
insert into t1 values(4,'rrr');          #当我们指定id了,就以指定的为准
insert into t1(name) values('tt')        #现在的id也是自动增长,但是接着上一条的id开始增长
上面插入数据的id分别是:1,2,4,5
对于自动增长的字段,可以用delete删除数据,但再插入值时是按照删除前最后一条数据的id值开始增长
delete from t1
select * from t1;  #现在为空的
insert into t1(name)values('rtsa')  #由于删除前最后一条id为5,所以接上,那这一条id为6
用truncate清空表,在插入数据又是从1开始自增
truncate t1;
insert into t1(name) values('fsdf')    #此时的id为1
在创建表的时候可以设定自动增长的起始值
create table t1(id int auto_increment,name char(10),auto_increment=3);    #这样设定后,表的自动增长就从3开始
创建表以后,也可以修改自增起始值
alter table t1 auto_increment=4;
设置步长
set session auto_increment_increment=2;  #这是设置会话级别的步长
set global auto_increment_increment=2;    #这是设置全局级别的步长
例子:
set global auto_increment_increment=5;
set global auto_increment_offset=3;
最后得到的自动增长值为:1,6,11,16.。。。。。

  4.4外键foreign key:其实就是表明表与表之间的关系,表与表之间有三种关系,一对一,一对多,多对多,在任何情况下都得先把‘一’的表(就相当于被指向的表)创建。

  一对多关系

MySQL之库表操作详述

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1732dc524f6450cc805cff0ba08a6311.html