1)字符类型:Char Varchar text blob(大数据字段,存储二进制数据)
2)数值类型:Int integer float double decimal
3)日期类型:Date time datetime timestamp
4)布尔类型: boolean tinyint(1)
#语法: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 原列明 新列名 数据类型; #修改字段名要重新修改数据类型
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=’女’ )
) ;