一、创建数据表
创建数据表之前,先选择数据库:
USE <数据库名称>
1、创建表基本形式
先选择数据库 USE <数据库名称>
CREATE TABLE <表名称>
(
字段名1,数据类型 [列级别约束条件] [默认值],
字段名2,数据类型 [列级别约束条件] [默认值],
.....
[表级别约束条件]
);
创建表时注意事项:
a、表名称不区分大小写 不能使用sql关键字 如drop alter insert等
b、每一列名称和数据类型 如果要创建多个列用逗号隔开
例如:
USE test_db; CREATE TABLE tb_emp1 ( id INT(11), name VARCHAR(25), deptId INT(11), salary FLOAT );
查看数据表是否创建成功 SHOW TABLES;
2、使用主键约束
主键(primary key constraint)
主键列数据唯一 不允许为空
主键分为2种类型:单字段主键和多字段主键
2-1、单字段主键
单字段主键由一个字段组成,也分为2种情况:
a. 定义列的同时指定主键
字段名 数据类型 PRIMARY KEY [默认值]
例如:
CREATE TABLE tb_emp2 ( id INT(11) PRIMARY KEY, /*定义主键*/ name VARCHAR(25), deptId INT(11), salary FLAOT );
b.在定义完所有列之后指定主键
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
例如:
CREATE TABLE tb_emp3 ( id INT(11), name VARCHAR(25), deptId INT(11), salary FLOAT, PRIMARY KEY(id) /*定义主键*/ );
2-2、多字段联合主键
PRIMARY KEY [字段1,字段2,...字段n]
主键由多个字段联合组成
PRIMARY KEY [字段1,字段2...字段n]
CREATE TABLE tb_emp4 ( name VARCHAR(25), deptId INT(11), salary FLOAT, PRIMARY KEY(name,deptId) /*多字段联合主键*/ );
3、使用外键约束
[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [字段名2,...]
REFERENCES <主键名> 主键列 [,主键列2,...]
例如:
CREATE TABLE tb_dept1 ( id INT(11) PRIMARY KEY, name VARCHAR(22) NOT NULL, location VARCHAR(50) ); CREATE TABLE tb_dept5 ( id INT(11) PRIMARY KEY, name VARCHAR(25), deptId INT(11), salary FLOAT, CONSTRAINT fk_emp_detp1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id) );
4、非空约束
非空约束(not null constraint) 指字段的值不能为空
如果用户在添加时没有指定值 数据库系统会报错
字段名 数据类型 not null
CREATE TABLE tb_emp6( id INT(11) PRIMARY KEY, name VARCHAR(25) NOT NULL, /*非空约束*/ deptId INT(11), salary FLOAT );
5、使用唯一约束
唯一约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值,唯一约束可以确保一列或者几列不出现重复值。
5-1、在定义完列之后直接指定唯一约束
字段名 数据类型 UNIQUE
# 使用唯一性约束 CREATE TABLE tb_dept2 ( id INT(11) PRIMARY KEY, name VARCHAR(22) UNIQUE,/*唯一约束*/ location VARCHAR(50) );
5-2、在定义完所有列之后指定唯一约束
[CONSTRAINT <约束名>] UNIQUE (<字段名>)
CREATE TABLE tb_dept3( id INT(11) PRIMARY KEY, name VARCHAR(22), location VARCHAR(50), CONSTRAINT STH UNIQUE(name) /*唯一约束*/ );
UNIQUE 和PRIMARY KEY 区别:
一个表中可以有多个字段声明为UNIQUE 但只能有一个PRIMARY KEY 声明
声明为PRIMARY KEY的列不允许为空值
但声明为UNIQUE 的字段允许空值(NULL)的存在
6、使用默认约束
Default Constraint 指定某列的默认值,
字段名 数据类型 DEFAULT 默认值
# 使用默认约束 CREATE TABLE tb_emp7( id INT(11) PRIMARY KEY, name VARCHAR(25) NOT NULL, deptId INT(11) DEFAULT 1111, /*默认约束*/ salary FLOAT );
7、设置表的属性值自动增加
AUTO_INCREMENT 初始值为1
每次新增一条 字段值就增加1 一个表中只能有一个字段使用该值 该字段必须为主键的一部分 可以是任意类型(TINYINT SMALLIN INT BIGINT )
字段名 数据类型 AUTO_INCREMENT
# 设置表的属性自动增加
CREATE TABLE tb_emp8( id INT(11) PRIMARY KEY AUTO_INCREMENT, /*表属性自动增加*/ name VARCHAR(25) NOT NULL, deptId INT(11), salary FLAOT );