创建数据表
- 指定库
'USE <数据库名>'指定数据库
- 创建表
CREATE TABLE test_one
(
字段名1 数据类型 约束条件(是否为空) 默认值,
字段名1 数据类型 约束条件 默认值
)
注意:
要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如DROP/ALTER/INSERT等
数据表中每一个列的名称和数据类型,要用逗号隔开,直到最后一个
例:创建如下员工表
字段名称 |数据类型 |备注
--- | --- | --- | ---
id |INT(11) |员工编号
name |VARCHAR(25) |员工名称
deptId |INT(11) |所在部门编号
salary |FLOAT |工资
- 创建数据库 test_db
CREATE DATABASE test_db;
[SQL]CREATE DATABASE test_db;
受影响的行: 1
时间: 0.020s
- 选择数据库
USE test_db;
[SQL]use test_db;
受影响的行: 0
时间: 0.003s
- 创建tb_empl表
CREATE TABLE tb_empl
(
id INT(11) COMMENT '员工编号',
name VARCHAR(25) COMMENT '员工名称',
deptId INT(11) COMMENT '所在部门编号',
salary FLOAT COMMENT '工资'
)
[SQL]CREATE TABLE tb_empl
(
id INT(11) COMMENT '员工编号',
name VARCHAR(25) COMMENT '员工名称',
deptId INT(11) COMMENT '所在部门编号',
salary FLOAT COMMENT '工资'
)
受影响的行: 0
时间: 0.382s
- 查看数据表
SHOW TABLES
+-------------------+
| Tables_in_test_db |
+-------------------+
| tb_empl |
+-------------------+
1 row in set (0.05 sec)
使用主键约束
主键,又称主码,是表中一列或多列的组合。主键约束要求主键列的数据唯一。
主键唯一且不允许为空
-
单字段主键
-
单字段主键主要由一个字段组成,SQL语句格式分为以下两种情况。
(1)在定义列的同时指定主键
字段名 数据类型 PRIMARY KEY (默认值)
(2)在定义完所有列之后指定主键
CREATE TABLE `db_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `author_uid` int(11) DEFAULT NULL COMMENT '用户id', `author_name` varchar(10) DEFAULT NULL COMMENT '作者名称', `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标题', `comments_count` int(11) DEFAULT NULL COMMENT '评论数', `timeline_share_count` int(11) DEFAULT NULL COMMENT '推荐数', `likers_count` varchar(11) DEFAULT NULL COMMENT '点赞数', `read_count` varchar(11) DEFAULT NULL COMMENT '阅读数', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `abstract` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '内容简介', `db_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '发布的类型', `author_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '作者的空间', `topic_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '主题分类', PRIMARY KEY (`id`)
-
-
多字段联合主键
-
主键由多个字段联合组成
PRIMARY KEY [字段1, 字段2, ...., 字段n]
假设表中间没有主键id,为了唯一确定一个员工,可以把name、deptId联合起来作为主键,SQL语句如下:
CREATE TABLE tb_emp4 ( name VARCHAR(25), deptId INT(11), salary FLOAT, PRIMARY KEY(name,deptId) )
-
使用外键约束
-
外键
- 用来关联两个表之间的的连接
-
主表
- 对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表
-
从表
- 对于两个具有关联关系的表而言,相关联字段中外键所在的表就是从表
示例代码:
注意主表必须有主键,,数据类型必须匹配,否则无法建立。
CREATE TABLE tb_emp5 ( id INT(11) PRIMARY KEY, name VARCHAR(25), deptId INT(11), salary FLOAT, constraint fk_tb_empl FOREIGN KEY(deptId) REFERENCES tb_empl(id) ) [SQL]CREATE TABLE tb_emp5 ( id INT(11) PRIMARY KEY, name VARCHAR(25), deptId INT(11), salary FLOAT, constraint fk_tb_empl FOREIGN KEY(deptId) REFERENCES tb_empl(id) ) 受影响的行: 0 时间: 0.246s
使用非空约束
-
非空约束指字段的值不能为空,否则数据库报错。
字段名 数据类型 not null
-
指定员工的名称不能为null,null不是空字符串
CREATE TABLE tb_temp6 ( id INT(11) PRIMARY KEY, name VARCHAR(25) not null, deptId INT(11), salary FLOAT ) [SQL]CREATE TABLE tb_temp6 ( id INT(11) PRIMARY KEY, name VARCHAR(25) not null, deptId INT(11), salary FLOAT ) 受影响的行: 0 时间: 0.121s
-
插入空字符串可以
INSERT INTO tb_temp6(id,name,deptId,salary) VALUES(1,'',26,2500) [SQL]INSERT INTO tb_temp6(id,name,deptId,salary) VALUES(1,'',26,2500) 受影响的行: 1 时间: 0.036s
-
插入null
INSERT INTO tb_temp6(id,name,deptId,salary) VALUES(1,26,2500) [SQL]INSERT INTO tb_temp6(id,name,deptId,salary) VALUES(1,26,2500) [Err] 1136 - Column count doesn't match value count at row 1
使用唯一性约束
-
唯一性约束要求该列唯一,允许为空,但只能出现一个空值,唯一唯一,只能出现一次,两次空也就重复
-
指定唯一约束
- 第一种方法
字段名 数据类型 UNIQUE CREATE TABLE tb_dept2 ( id INT(11) PRIMARY KEY, name VARCHAR(22) UNIQUE, location VARCHAR(50) )
- 第二种方法,末端加约束,类似主键
CREATE TABLE tb_dept3 ( id INT(11) PRIMARY KEY, name VARCHAR(22) UNIQUE, location VARCHAR(50), UNIQUE(name) )
UNIQUE和PRIMARY KEY区别:
UNIQUE 唯一,允许为空 可以设置多个
PRIMARY KEY 主键唯一不允许为空 只能有一个
使用默认约束
-
默认约束指定某列的默认值,如果不指定,就使用默认值
CREATE TABLE tb_dept7 ( id INT(11) PRIMARY KEY, name VARCHAR(22) NOT NULL, location VARCHAR(50) DEFAULT '山西' ) [SQL]CREATE TABLE tb_dept7 ( id INT(11) PRIMARY KEY, name VARCHAR(22) NOT NULL, location VARCHAR(50) DEFAULT '山西' ) 受影响的行: 0 时间: 0.216s
设置表的属性值自动增加
-
一个表中只能有一个字段使用,且必须和PRIMARY KEY配合
- 默认的自增字段id的值从1开始,每次添加一条新记录,该值自动加1
- AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT,SMALLIN,INT,BIGINT)
CREATE TABLE tb_dept8 ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(22) NOT NULL, location VARCHAR(50) DEFAULT '山西' )