MySQL数据类型,建表,约束

1.数据类型

1)字符类型:Char  Varchar  text  blob(大数据字段,存储二进制数据)
2)数值类型:Int  integer  float  double  decimal
3)日期类型:Date  time  datetime  timestamp
4)布尔类型: boolean  tinyint(1)

2.建表语法

#语法:CREATE TABLE  表名 (列名 列属性); 或 CREATE TABLE IF NOT EXISTS  表名 (列名 列属性);

#例:
CREATE TABLE IF NOT EXISTS t_user(
   uuid INT UNSIGNED AUTO_INCREMENT,		--UNSIGNED 就是将数字类型无符号化,例如-1就会报错
   uname VARCHAR(100) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
# ENGINE:指定数据库存储引擎   CHARSET:指定数据库编码

#修改表结构
    1)新增语法:alter table 表名称 add column 列名 数据类型;
    2)删除语法:alter table 表名称 drop column 列名;
    3)修改语法:alter table 表名称 modify column 列名 数据类型; 
    4) 修改字段名: alter table 表名称 change 原列明 新列名 数据类型; 	#修改字段名要重新修改数据类型

3.MySql常见建表约束

1)主键约束(primary key)

  主键约束相当于唯一约束+非空约束。每个表最多只允许一个主键。当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

#基本模式  列级别
create table t_test( 
id int primary key, #列级别约束
name varchar(20)
);

#组合模式,只有表级别可以(当id和name同时相同时才出错)
create table t_test(
tid int ,
tname varchar(20),
pwd varchar(20),
primary key(tid, tname)   #表级别约束
);

#删除主键约束
alter table t_test drop primary key;

#添加主键约束   (如果表中已经出现相同数据的则会添加失败)
alter table t_test add primary key(tid,tname);

#修改主键约束
alter table t_test modify tid int primary key;

2) 外键约束(foreign key)

    外键约束是保证一个或两个表之间的参照完整性,外键值必须和主键值相同

# 基本模式
# 主表
create table t_test(
tid int primary key,
tname varchar(20)
);
-- 副表
create table t_test2(
tid int,
tname2 varchar(20),
classes_id int,
foreign key(tid ) references t_test(tid )
);

-- 多列外键组合(当cid,cnam两个都与classes的cid,cname相同时,student才可添加数据)
# 主表
CREATE TABLE classes(
cid INT,
cname VARCHAR(20),
number INT,
PRIMARY KEY(cid,cname)
);

# 副表
CREATE TABLE student(
sid INT,
sname VARCHAR(20),
sex VARCHAR(20),
/*表级别联合外键*/
CONSTRAINT student_fk FOREIGN KEY(sid,sname) REFERENCES classes(cid,cname) 
);
#注:student_fk是外键名,利于删除,约束都可以加CONSTRAINT 约束名 


# 删除外键约束
alter table student drop foreign key student_fk;

# 增加外键约束
alter table student add foreign key(cid,cname) references classes(sid, sname);

3)非空约束(NOT NULL)

非空值约束:用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。

    语法:CREATE TABLE 表名称(
        列名称 数据类型 NOT NULL,
        ...
    );    

4)  唯一约束(UNIQUE)

唯一约束:指定TABLE的列或列组合不能重复,保证数据的唯一性。

    语法:CREATE TABLE 表名称(
        列名称1 数据类型 NOT NULL,
        列名称2 数据类型,
        列名称3 数据类型,
        unique(列名称1)或unique(列名称1,...,列名称N)
);    

 #新增唯一约束:
  ALTER TABLE 表名 ADD UNIQUE(列名称1[,列名称2,..]);
 #删除唯一约束:其实就是删除指定的唯一约束的索引名称
 ALTER TABLE 表名 DROP INDEX 唯一约束名称;

5)  默认值约束(DEFAULT)

默认值约束:指定列的默认值。

    语法:CREATE TABLE 表名称(
        列名称1 数据类型 DEFAULT '默认值',
        列名称2 数据类型,
        列名称3 数据类型,
        ...
    );   

6) 检查约束(CHECK)

check用来约束字段的范围。但check约束对数据验证没有任何作用。不符合规范的还是插入表中,mysql还没解决这个功能

语法例:create table temp(
sex varchar(2) check(sex=’男’ or sex=’女’ )
) ;

 

你可能感兴趣的:(mysql)