本文实例讲述了MySQL数据表基本操作。,具体如下:
1.主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一地识别表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系。
2.字表的外键必须关联父表的主键,且关联字段的数据类型必须匹配。如果类型不一样。创建子表时,就会出现错误:ERROR 1005(HY000):can't create table 'databases.tablesname'(error:150)
3.非空约束指字段的值不能为空。
4.唯一性约束:要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。
5.unique和primary key 的区别:一个表中可以有多个字段声明为unique,但只能有一个primary key声明:声明为关键字的列不允许为空值,但是声明为unique的字段允许空值null的存在。
【例.1】创建员工表tb_emp1
选择创建表的数据库:
USE test_db; |
创建tb_emp1表:
CREATE TABLE tb_emp1(id int(11),name varchar(25),deptId int(11),salary float); |
【例.2】定义数据表tb_emp 2,其主键为id:
CREATE TABLE tb_emp2(id int(11) PRIMARY KEY,name varchar(25),deptId int(11),salary float); |
【例.3】定义完所有列之后指定主键
定义数据表tb_emp 3,其主键为id:
CREATE TABLE tb_emp3(id int(11),name varchar(25),deptId int(11),salary float,PRIMARY KEY(id)); |
【例.4】定义数据表tb_emp4,创建多字段联合主键SQL语句为:
CREATE TABLE tb_emp4(name varchar(25),deptId int(11),salary float,PRIMARY KEY(name,deptId)); |
【例.5】定义数据表tb_emp5,并在tb_emp5表上创建外键约束
创建一个部门表tb_dept1:
CREATE TABLE tb_dept1(id int(11) PRIMARY KEY,name varchar(22) NOT NULL,location varchar(50)); |
定义数据表tb_emp5,让它的键deptId作为外键关联到tb_dept1的主键id:
CREATE TABLE tb_emp5(id int(11) PRIMARY KEY,name varchar(25),deptId int(11),salary float,CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)); |
【例.6】定义数据表tb_emp6,指定员工的名称不能为空,SQL语句为:
CREATE TABLE tb_emp6(id int(11) PRIMARY KEY,name varchar(25) NOT NULL,deptId int(11),salary float,CONSTRAINT fk_emp_dept2 FOREIGN KEY (deptId) REFERENCES tb_dept(id)); |
【例.7】定义数据表tb_dept2,指定部门的名称唯一,SQL语句为:
CREATE TABLE tb_dept2(id int(11) PRIMARY KEY,name varchar(22) UNIQUE,location varchar(50)); |