Home  >  Article  >  Database  >  MySQL自学篇_MySQL

MySQL自学篇_MySQL

WBOY
WBOYOriginal
2016-06-01 13:01:021243browse

创建数据表

1、创建数据表的语法格式

 

数据表属于数据库,在创建数据表之前要使用“USE ”指定操作是在哪个数据库中进行的,如果没有选择数据库,将会出现“No database selected”的错误

创建数据表的语句为:

CREATE TABLE ,

语法规则为:

CREATE TABLE

(

字段1 数据类型 [列级约束条件] [默认值],

字段2 数据类型 [列级约束条件] [默认值],

......

[表级约束条件]

);

使用CREATE TABLE创建表的时候,必须指定以下信息:

(1)要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。

(2)创建表中每一列的名称、数据类型时,如果要创建多个列,要使用逗号。

 

范例:

创建员工表employee。

首先选择创建表的数据库:

USE study

创建employee表的SQL语句:

CREATE TABLE employee

(

id INT(11),

name VARCHAR(25),

deptId INT(11),

salary FLOAT,

);

 

使用SHOW TABLES;查询数据表是否创建成功。

 

2、主键约束

主键,又称主码,是表中一列或多列的组合。逐渐约束要求主键列的数据唯一,并且不允许为空。主键能唯一的表示表中的一条数据,可以结合外键来定义不同数据表之间的关系,并且可以加快数据查询的速度。主键分为两种类型:单字段主键和多字段联合主键。

 

单字段主键

单字段主键是有一个字段组成,SQL语句格式分为以下两种情况:

(1)在定义列的同时指定主键,语法规则如下:

 

字段名 数据类型 PRIMARY KEY [默认值]

范例:

定义数据表employee2,其主键为id

CREATE TABLE employee2

(

id INT (11) PRIMARY KEY,

name VARCHAR(25),

deptId INT(11),

salary FLOAT

);

(2)在定义完所有的列之后指定主键

 

[CONSTRAINT ] PRIMARY KEY(字段名)

 

范例:定义数据表employee3,其主键为id,SQL语句如下

CREATE TABLE employee3

(

id INT(11),

name VARCHAR(25),

deptId INT(11),

salary FLOAT,

PRIMARY KEY(id)

);

 

 

多字段联合主键

多字段联合主键是由多个字段联合组成的,语法规则如下:

PRIMARY KEY [字段1,字段2,......字段n]

 

范例:

定义数据表employee4,假设表中没有主键id,为了唯一确定一个员工,可以把name和deptId联合起来作为主键,SQL语句如下:

CREATE TABLE employee4

(

name VARCHAR(25),

deptId INT(11),

salary FLOAT,

PRIMARY KEY (name,deptId)

);

 

3、使用外键约束

外键用来在两个表之间建立连接,他可以是一列或多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每个外键值必须等于另一个表中主键的某个值。

外键:

外键是表中的一个字段,外键可以不是本表的主键,但是外键应该是另一个表的主键。外加的主要作用就是保存数据引用的完整性,定义外键后,不允许删除在另一表中具有关联关系的行。外键的作用是保持数据的一致性,完整性。例如:部门表department的主键是id,在员工表employee5中有一个键deptId与这个id关联。

 

主表(父表):对于两个具有关联关系的表而言,相关连字段中主键所在的那个表即是主表

 

从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表即是从表

 

创建外键的语法格式:

[CONSTRAINT ] FOREIGN KEY 字段名1 [,字段名2,...]

REFERENCES 主键列1 [,主键列2,....]

“外键名”为定义的外键约束的名称。一个表中不能有相同的外键;“字段名”表示子表需要添加外键约束的字段列;“主表名”即被子表外键所依赖的表的名称;“主键列”表示主表中定义的主键列或列组合

范例:

定义数据表emplpyee5,并在employee5表上创建外键约束。

创建一个部门表department:

CREATE TABLE department

(

id INT(11) PRIMARY KEY,

name VARCHAR(22) NOT NULL;

location VARCHAR(50)

);

 

定义数据表employee5,让它的键deptId作为外键关联到deparment的主键:

create table employee5

(

id int(11) primary key,

name varchar(25),

deptId int(11),

salary float,

constraint foreign_key_emy_dept foreign key(deptId) references department(id)

);

 

以上语句执行成功后,在表emplyee5上添加了名为foreign_key_emy_dept的外键约束。外键名称为的deptId,其依赖于主表department的主键id

 

4、使用非空约束

 

非空约束指的是字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

非空约束的语法规则如下:

字段名 数据类型 not null

 

范例:

定义数据表employee6,指定员工的名称不能为空:

create table employee6

(

id int(11) primary key,

name varchar(25) not null,

deptId int(11),

salary float,

constraint foreign_key_emy_dept2 foreign key(deptId) references department(id)

);

执行后,在employee6中创建了一个name字段,其插入值不能为空。

 

5、使用唯一性约束

 

唯一性约束要求该列唯一,允许为空,但是只能出现一个空值。唯一性约束可以确保一列或者几列不出现重复值。

非空约束的语法规则如下:

(1)在定义列之后直接定义唯一性约束。语法规则如下:

 

字段名 数据类型 UNIQUE

范例:创建department2,指定部门名称唯一:

create table department2

(

id int(11) primary key,

name varchar(22) unique,

location varchar(50)

);

 

(2)在定义完所有的列之后指定唯一性约束,语法规则如下:

 

[CONSTRAINT] UNIQUE ()

范例:

定义数据表department3,指定部门名称唯一。

create table department3

(

id int(11) not null,

name varchar(22),

location varchar(50),

constraint sth unique(name)

);

UNIQUE和PRIMARY KEY的区别:一个表中可以有多个字段声明为UNIQUE,但是只能有一个PRIMARY KEY声明;声明为PRIMARY KEY 的列不允许有空值,但是声明为UNIQUE的字段可以有空值。

 

6、使用默认约束

 

默认约束指定某列的默认值。如男同学较多,性别就可以设置为默认的’男‘。如果插入一条新的记录时没有为这个字段赋值,那么系统会自动将这个字段赋值为’男‘。

默认约束的语法格式:

字段名 数据类型 DEFUALT 默认值

 

范例:

定义数据表employee7,指定员工的部门编号默认为1111:

create table employee7

(

id int(11) primary key,

name varchar(24) not null,

deptId int(11) default 1111,

salary float,

constraint foreign_key_emp_dept4 foreign key(deptId) references department(id);

);

 

7、设置表中的属性值自动增加

 

在数据库中,经常希望在每次插入新纪录时,系统自动生成字段的主键值。可以通过为表的主键添加AUTO_INCREMENT关键字来实现。默认的,在MySQL中,AUTO_INCREMENT的初始值是1,每新增一条记录,字段值自动加1.一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCRE MENT约束的字段可以是任何的整数类型(TINYINT/SAMLLIN/INT/BIGINTD等)

设置自动增加的语法规则:

字段名 数据类型 AUTO_INCREMENT

范例:

 

create table employee8

(

id int(11) primary key auto_increment,

name varchar(25) not null,

deptId int(11)

);

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn