建表及约束,摘自sql官方文档

SQL Server 表的管制之_关于完整性约束的详解

SQL 高级 01
SQL 高级 03

  • ### CREATE DATABASE 语句###

SQL SELECT INTO 语句可用以创设表的备份复件。

一、概述:

  ●约束是SQL
Server提供的机动保持数据库完整性的一种办法,
它通过限制字段中多少、记录中多少和表之间的多少来保障数据的完整性。

  ●SQL约束用于内定表中数量的平整。

  ●约束可以在创设表时规定(通过
CREATE TABLE 语句),或许在表创设之后分明(通过 ALTEOdyssey TABLE
语句)。

SELECT INTO 语句

SELECT INTO 语句从多个表中甄选数据,然后把多少插入另三个表中。
SELECT INTO 语句常用于创设表的备份复件或者用于对记录举办存档。
SQL SELECT INTO 语法
你可以把富有的列插入新表:
SELECT*INTOnew_table_name [INexternaldatabase] FROM old_tablename
依旧只把梦想的列插入新表:
SELECT column_name(s)INTOnew_table_name [INexternaldatabase] FROM old_tablename

SQL SELECT INTO 实例 – 制作备份复件
下边的例证会制作 “Persons” 表的备份复件:
SELECT*INTOPersons_backup FROM Persons
IN 子句可用于向另1个数据库中拷贝表:
SELECT*INTOPersonsIN'Backup.mdb' FROM Persons
建表及约束,摘自sql官方文档。设若大家盼望拷贝有些域,能够在 SELECT 语句后列出这么些域:
SELECT LastName,FirstNameINTOPersons_backup FROM Persons

SQL SELECT INTO 实例 – 带有 WHERE 子句
咱俩也足以添加 WHERE 子句。
下边的例证通过从 “Persons” 表中领取居住在 “Beijing”
的人的新闻,创立了3个涵盖八个列的名为 “Persons_backup” 的表:
SELECT LastName,FirstnameINTOPersons_backup FROM Persons WHERE City='Beijing'

SQL SELECT INTO 实例 – 被两次三番的表
从二个上述的表中采纳数据也是足以完毕的。
上边的例证会创造2个名为 “Persons_Order_Backup” 的新表,其中蕴蓄了从
Persons 和 Orders 多个表中赢得的音讯:
SELECT Persons.LastName,Orders.OrderNoINTOPersons_Order_Backup FROM PersonsINNERJOINOrdersON Persons.Id_P=Orders.Id_P



CREATE DATABASE 用于创建数据库。
SQL CREATE DATABASE 语法:

SELECT INTO 语句
SELECT INTO 语句从多个表中精选数据,然后把多少插入另多个表中。
SELECT INTO 语句常用于创设表的备份复件只怕用于对记录进行存档。

1.1SQL创造约束

当使用CREATE
TABLE语句创造表时,可能在应用ALTE中华VTABLE语句创造表之后,可以钦点约束。

语法

CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    column3 datatype constraint,
    ....
);

SQL CREATE TABLE + CONSTRAINT 语法

CREATE TABLE table_name 
( 
column_name1 data_type(size) constraint_name, 
column_name2 data_type(size) constraint_name, 
column_name3 data_type(size) constraint_name, 
.... 
);

CREATE DATABASE 语句

CREATE DATABASE 用于制造数据库。
SQL CREATE DATABASE 语法
CREATE DATABASE database_name
SQL CREATE DATABASE 实例
今后大家希望成立3个名为 “my_db” 的数据库。
笔者们运用上边的 CREATE DATABASE 语句:
CREATE DATABASE my_db
可以经过 CREATE TABLE 来添加多少库表。



CREATE DATABASE database_name

SQL SELECT INTO 语法
您可以把持有的列插入新表:
SELECT *   INTO new_table_name [IN externaldatabase]
FROM old_tablename
只把希望的列插入新表:
SELECT column_name(s)   INTO new_table_name [IN
externaldatabase]
FROM old_tablename

1.2剔除约束

其他现有约束都足以因而在
ALTELAND TABLE 命令中钦定 DROP CONSTRAINT 选项的方法删除掉。

诸如,要去除 EMPLOYEES
表中的主键约束,可以运用下述命令:

 ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;

一些数据库落成恐怕提供了去除特定约束的火速方法。例如,要在
Oracle 中除去一张表的主键约束,可以利用如下命令:

 ALTER TABLE EMPLOYEES DROP PRIMARY KEY;

一点数据库完结允许禁用约束。那样与其从数据库中永远删除约束,你可以只是权且禁用掉它,过一段时间后再另行启用。

CREATE TABLE 语句

CREATE TABLE 语句用于创建数据库中的表。
SQL CREATE TABLE 语法

CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)

数据类型(data_type)规定了列可容纳何种数据类型。上边的表格包罗了SQL中最常用的数据类型:

数据类型 描述
integer(size)

int(size)

smallint(size)

tinyint(size)

仅容纳整数。在括号内规定数字的最大位数。
decimal(size,d)

numeric(size,d)

容纳带有小数的数字。
"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。
char(size) 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。
在括号中规定字符串的长度。
varchar(size) 容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。
在括号中规定字符串的最大长度。
date(yyyymmdd) 容纳日期。

SQL CREATE TABLE 实例
本例演示怎么样成立名为 “Person” 的表。
该表包蕴 5 个列,列名分别是:”Id_P”、”LastName”、”FirstName”、”Address”
以及 “City”:

CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
Id_P LastName FirstName Address City

Id_P 列的数据类型是 int,包涵整数。其他 4 列的数据类型是
varchar,最大尺寸为 255 个字符。
空的 “Persons” 表类似那样:

Id_P LastName FirstName Address City

可拔取 INSE奥迪Q7T INTO 语句向空表写入数据。



可以因此 CREATE TABLE 来添加多少库表。

SQL SELECT INTO 实例 – 制作备份复件
下边的例证会制作 “Persons” 表的备份复件:
SELECT * INTO Persons_backup FROM Persons
IN 子句可用以向另3个数据库中拷贝表:
SELECT * INTO Persons IN ‘Backup.mdb’ FROM Persons
设若大家意在拷贝有些域,可以在 SELECT 语句后列出这个域:
SELECT LastName,FirstName INTO Persons_backup
FROM Persons

1.3完整性约束

完整性约束用于保险关系型数据库中数据的精确性和一致性。对于关系型数据库来说,数据完整性由参照完整性(referential
integrity,CRUISERI)来保险。

有很两种束缚可以起到参照完整性的功用,那几个约束包涵主键约束(Primary
Key)、外键约束(Foreign Key)、唯一性约束(Unique
Constraint)以及地点提到的别样约束。

封锁可分为以下两种:

壹 、P福特ExplorerIMACR-VY KEY 主键约束

二 、FOREIGN
KEY 外键约束

叁 、UNIQUE
约束 唯一约束

肆 、CHECK
约束 检查约束

五 、DEFUALT
定义 默许约束

上面分别详解:

SQL 约束

封锁用于限制参预表的多寡的序列。
可以在开立表时鲜明约束(通过 CREATE TABLE
语句),或然在表成立之后也得以(通过 ALTE昂科威 TABLE 语句)。
大家将第②探索以下两种约束:

  • NOT NULL 约束强制列不接受 NULL 值。
  • UNIQUE 约束唯一标识数据库表中的每条记下。
  • PRIMARY KEY 约束唯一标识数据库表中的每条记下。
  • FOREIGN KEY 二个表中的 FOREIGN KEY 指向另2个表中的 P大切诺基IMA奥迪Q5Y
    KEY。
  • CHECK 约束用于限制列中的值的界定。
  • DEFAULT 约束用于向列中插入暗中认同值。

① NOT NULL 束缚强制列不接受 NULL 值。
NOT NULL
约束强制字段始终包括值。那意味着,假设不向字段添加值,就不能够插入新记录恐怕更新记录。
上边的 SQL 语句强制 “Id_P” 列和 “LastName” 列不收受 NULL 值:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

② UNIQUE 约束唯一标识数据库表中的每条记下。
UNIQUE 和 P智跑IMA锐界Y KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请留意,每一种表可以有 多个 UNIQUE 约束,不过各种表只能有 一个
PRIMARY KEY 约束。
SQL UNIQUE Constraint on CREATE TABLE
上面的 SQL 在 “Persons” 表成立时在 “Id_P” 列创建 UNIQUE 约束:
MySQL:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

一经急需命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,请使用上边的 SQL
语法:
997755.com澳门葡京,MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE(Id_P,LastName)
)

SQL UNIQUE Constraint on ALTER TABLE
当表已被成立时,如需在 “Id_P” 列成立 UNIQUE 约束,请使用下列 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD UNIQUE (Id_P)
如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用上边的 SQL
语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
撤销 UNIQUE 约束
如需废除 UNIQUE 约束,请使用上面的 SQL:
MySQL:
ALTER TABLE Persons DROP INDEX uc_PersonID
SQL Server / Oracle / MS Access:
ALTER TABLE Persons DROP CONSTRAINT uc_PersonID

  • ### CREATE TABLE 语句###

SQL SELECT INTO 实例 – 带有 WHERE 子句
下边的例证通过从 “Persons” 表中领取居住在 “Beijing”
的人的新闻,创设了三个涵盖三个列的名为 “Persons_backup” 的表:
SELECT LastName,Firstname INTO Persons_backup FROM Persons
WHERE City=’Beijing’

二、SQL PRIMARY KEY约束


③ P锐界IMAHavalY KEY 约束唯一标识数据库表中的每条记下。

主键必须含有唯一的值。
主键列不或然包括 NULL 值。
各个表都应该有贰个主键,并且各个表只好有2个主键。
表单主键
壹 、数据库的每张表只能够有1个主键,不容许有两个主键。
贰 、所谓的一张表多少个主键,大家誉为联合主键。
注:联合主键:就是用三个字段一起作为一张表的主键。
叁 、主键的主键的作用是保障数据的唯一性和完整性,同时经过主键检索表能够扩展检索速度。

SQL PRIMARY KEY Constraint on CREATE TABLE
下边的 SQL 在 “Persons” 表创设时在 “Id_P” 列创建 PRIMARY KEY 约束:
MySQL:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Id_P)
)    

SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

倘若急需命名 PRubiconIMA昂科威Y KEY 约束,以及为五个列定义 P福睿斯IMAEvoqueY KEY
约束(即定义复合主键),请使用上面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY   (Id_P,LastName)
)

SQL PRIMARY KEY Constraint on ALTER TABLE
如果在 表已存在 的意况下为 “Id_P” 列成立 P奔驰G级IMAPAJEROY KEY
约束,请使用下边的 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD PRIMARY KEY (Id_P)
假诺急需命名 PQX56IMAPRADOY KEY 约束,以及为七个列定义 P昂科雷IMA瑞虎Y KEY
约束,请使用下边的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADDCONSTRAINT pk_PersonID PRIMARY KEY(Id_P,LastName)
注脚:如若你使用 ALTEQashqai TABLE 语句添加主键,必须把主键列注脚为不分包 NULL
值(在表第一回创造时)。

撤销 PRIMARY KEY 约束
如需撤除 PLacrosseIMA本田UR-VY KEY 约束,请使用下边的 SQL:
MySQL:
ALTER TABLE Persons DROP PRIMARY KEY
SQL Server / Oracle / MS Access:
ALTER TABLE Persons DROP CONSTRAINT pk_PersonID

CREATE TABLE 语句用于创建数据库中的表。
SQL CREATE TABLE 语法:

SQL SELECT INTO 实例 – 被两次三番的表
从多个以上的表中接纳数据也是足以形成的。
下边的例证会创立三个名为 “Persons_Order_Backup” 的新表,其中富含了从
Persons 和 Orders 多少个表中获取的信息:

2.1SQL PRIMARY KEY约束

●P奥德赛IMAEvoqueY
KEY约束唯一标识数据库表中的每条记下。

●主键必须含有唯一的值。

●主键列不能包括NULL值。

●各个表都应该有1个主键,并且每一个表只好有二个主键。


④ FOREIGN KEY 约束

3个表中的 FOREIGN KEY 指向另3个表中的 P途睿欧IMA卡宴Y KEY。
让我们透过一个例子来诠释外键。请看上面八个表:
“Persons” 表:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

“Orders” 表:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

请注意,”Orders” 中的 “Id_P” 列指向 “Persons” 表中的 “Id_P” 列。
“Persons” 表中的 “Id_P” 列是 “Persons” 表中的 PRIMARY KEY。
“Orders” 表中的 “Id_P” 列是 “Orders” 表中的 FOREIGN KEY。
FOREIGN KEY 约束用于幸免破坏表之间接连的动作。
FOREIGN KEY
约束也能幸免不合法数据插入外键列,因为它必须是它指向的格外表中的值之一。
SQL FOREIGN KEY Constraint on CREATE TABLE
上面的 SQL 在 “Orders” 表创设时为 “Id_P” 列创建 FOREIGN KEY:
MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

倘诺须求命名 FOREIGN KEY 约束,以及为多少个列定义 FOREIGN KEY
约束,请使用上面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)

SQL FOREIGN KEY Constraint on ALTER TABLE
如若在 “Orders” 表已存在的图景下为 “Id_P” 列创制 FOREIGN KEY
约束,请使用上边的 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
一旦急需命名 FOREIGN KEY 约束,以及为多少个列定义 FOREIGN KEY
约束,请使用上边的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)

撤销 FOREIGN KEY 约束
如需撤消 FOREIGN KEY 约束,请使用下边的 SQL:
MySQL:
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders

CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)

SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P

2.2CREATE TABLE时的SQL PRIMARY KEY约束

CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

⑤ CHECK 约束用于限制列中的值的限定。

如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
借使对贰个表定义 CHECK 约束,那么此约束会在特定的列中对值进行界定。
SQL CHECK Constraint on CREATE TABLE
上边的 SQL 在 “Persons” 表创制时为 “Id_P” 列创建 CHECK 约束。CHECK
约束规定 “Id_P” 列必须只含有超过 0 的整数。
My SQL:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

如果必要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用上面的 SQL
语法:
MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)

SQL CHECK Constraint on ALTER TABLE
比方在表已存在的地方下为 “Id_P” 列成立 CHECK 约束,请使用上边的 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD CHECK (Id_P>0)
只要急需命名 CHECK 约束,以及为三个列定义 CHECK 约束,请使用上边的 SQL
语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')

撤销 CHECK 约束
如需废除 CHECK 约束,请使用上面的 SQL:
SQL Server / Oracle / MS Access:
ALTER TABLE Persons DROP CONSTRAINT chk_Person
MySQL:
ALTER TABLE Persons DROP CHECK chk_Person

数据类型(data_type)规定了列可容纳何种数据类型。上面的报表包括了SQL中最常用的数据类型:

CREATE DATABASE 语句
CREATE DATABASE 用于创设数据库。
SQL CREATE DATABASE 语法
CREATE DATABASE database_name
以往我们愿意成立3个名为 “my_db” 的数据库。

2.3ALTER TABLE时的SQL PRIMARY KEY约束

当表已被创制时,如需在“P_Id”列创立P中华VIMAPAJEROY
KEY约束,请使用上边的SQL:

ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)

⑥ DEFAULT 约束用于向列中插入暗中认同值。

比方没有显然任何的值,那么会将暗中认同值添加到全体的新记录。
SQL DEFAULT Constraint on CREATE TABLE
上面的 SQL 在 “Persons” 表创造时为 “City” 列创设 DEFAULT 约束:
My SQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)

通过应用类似 GETDATE() 那样的函数,DEFAULT 约束也足以用于插入系统值:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
OrderDate date DEFAULT GETDATE()
)

SQL DEFAULT Constraint on ALTER TABLE
若是在表已存在的图景下为 “City” 列创造 DEFAULT 约束,请使用下边的
SQL:
MySQL:
ALTER TABLE Persons ALTER City SET DEFAULT 'SANDNES'
SQL Server / Oracle / MS Access:
ALTER TABLE Persons ALTER COLUMN City SET DEFAULT 'SANDNES'

撤销 DEFAULT 约束
如需撤消 DEFAULT 约束,请使用下边的 SQL:
MySQL:
ALTER TABLE Persons ALTER City DROP DEFAULT
SQL Server / Oracle / MS Access:
ALTER TABLE Persons ALTER COLUMN City DROP DEFAULT

997755.com澳门葡京 1

CREATE DATABASE my_db
能够通过 CREATE TABLE 来添加多少库表。
CREATE TABLE 语句用于制造数据库中的表。

2.4撤销PRIMARY KEY约束

如需裁撤PLX570IMAEscortY
KEY约束,请使用上面的SQL:

ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

表内数据类型

SQL CREATE TABLE 语法
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
….
)

三、SQL FOREIGN KEY约束

e.g.
本例演示怎样成立名为 “Person” 的表。
该表包括 5 个列:

数据类型(data_type)规定了列可容纳何种数据类型。上面的表格包罗了SQL中最常用的数据类型:

3.1SQL FOREIGN KEY约束

两个表中的FOREIGN KEY指向另1个表中的P宝马7系IMA哈弗Y KEY。

。让大家经过多个实例来分解外键请看下边八个表:

“人员”表:

P_Id是PRIMARY KEY

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

“订单”表:P_Id是FOREIGN KEY

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 2
4 24562 1

请注意,“Orders”表中的“P_Id”列指向“Persons”表中的“P_Id”列。

“Persons”表中的“P_Id”列是“Persons”表中的PRIMARY KEY。

“Orders”表中的“P_Id”列是“Orders”表中的FOREIGN KEY。

FOREIGN KEY约束用于幸免破坏表之间连接的表现。

FOREIGN
KEY约束也能幸免违法数据插入外键列,因为它必须是它指向的尤其表中的值之一。


CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

数据类型         描述
integer(size)       仅容纳整数。在括号内分明数字的最大位数。
int(size)
smallint(size)
tinyint(size)

3.2CREATE TABLE时的SQL FOREIGN KEY约束

上面的SQL在“订单”表创造时在“P_Id”列上创制FOREIGN KEY约束:

CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

如需命名FOREIGN KEY约束,并定义三个列的FOREIGN
KEY约束,请使用下边的SQL语法:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

Id_P 列的数据类型是 int,包蕴整数。其余 4 列的数据类型是
varchar,最大尺寸为 255 个字符。
(可利用 INSECR-VT INTO 语句向空表写入数据。)

decimal(size,d)      容纳带有小数的数字。
numeric(size,d)
             ”size” 规定数字的最大位数。
             ”d” 规定小数点左侧的最大位数。

3.3ALTER TABLE时的SQL FOREIGN KEY约束

当“Orders”表已被创制时,如需在“P_Id”列创建FOREIGN
KEY约束,请使用下边的SQL:

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

如需命名FOREIGN KEY约束,并定义三个列的FOREIGN
KEY约束,请使用下边的SQL语法:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
  • ### 约束constraints###

char(size)
        容纳固定长度的字符串(可容纳字母、数字以及相当  字            符)。在括号中规定字符串的长度。

3.4撤销FOREIGN KEY约束

如需裁撤FOREIGN KEY约束,请使用上边的SQL:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

自律用于限制加入表的数量的花色。
可以在开创表时分明约束(通过 CREATE TABLE
语句),或者在表创立之后也足以(通过 ALTE库罗德 TABLE 语句)。
咱俩将紧要探索以下二种约束:
1). NOT NULL
2). UNIQUE
3). PRIMARY KEY
4). FOREIGN KEY
5). CHECK
6). DEFAULT

varchar(size)
             容纳可变长度的字符串(可容纳字母、数字以及特殊的字            符)。在括号中规定字符串的最大尺寸。
date(yyyymmdd)        容纳日期。

四、SQL UNIQUE 约束

  • ##### NOT NULL约束#####

怎么样创制名为 “Person” 的表。
该表包蕴 5 个列,列名分别是:”Id_P”、”LastName”、”FirstName”、”Address”
以及 “City”:
CREATE TABLE Persons
(
Id_P          int,
LastName        varchar(255),
FirstName        varchar(255),
Address         varchar(255),
City           varchar(255)
)
Id_P 列的数据类型是 int,包涵整数。其余 4 列的数据类型是
varchar,最大尺寸为 255 个字符。
可应用 INSEHighlanderT INTO 语句向空表写入数据。

4.1UNIQUE 约束唯一标识数据库表中的每条记下。

UNIQUE 和 P翼虎IMA帕杰罗Y KEY 约束均为列或列集合提供了唯一性的有限援救。

PTucsonIMARY KEY 约束拥有电动定义的 UNIQUE 约束。

请小心,每一种表可以有四个 UNIQUE 约束,可是每一个表只可以有贰个 PPRADOIMA本田CR-VY KEY
约束。


NOT NULL 约束强制列不收受 NULL 值。
NOT NULL
约束强制字段始终包罗值。那表示,假若不向字段添加值,就不能插入新记录或然更新记录。
下边的 SQL 语句强制 “Id_P” 列和 “LastName” 列不收受 NULL 值:

SQL 约束
自律用于限制出席表的数据的类型。
可以在制造表时规定约束(通过 CREATE TABLE
语句),可能在表成立之后也足以(通过 ALTEGL450 TABLE 语句)。
咱们将首要探索以下二种约束:
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT

4.2CREATE TABLE 时的 SQL UNIQUE 约束

上面的 SQL 在 “Persons” 表成立时在 “P_Id” 列上创立 UNIQUE 约束:

CREATE TABLE Persons
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

如需命名 UNIQUE 约束,并定义四个列的 UNIQUE 约束,请使用上面的 SQL
语法:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)

 

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

SQL NOT NULL 约束
NOT NULL 约束强制列不收受 NULL 值。
NOT NULL
约束强制字段始终包罗值。那象征,要是不向字段添加值,就不能插入新记录恐怕更新记录。
上面的 SQL 语句强制 “Id_P” 列和 “LastName” 列不收受 NULL 值:

4.3ALTER TABLE 时的 SQL UNIQUE 约束

当表已被成立时,如需在 “P_Id” 列创设 UNIQUE 约束,请使用下边的 SQL:

ALTER TABLE Persons
ADD UNIQUE (P_Id)

如需命名 UNIQUE 约束,并定义多少个列的 UNIQUE 约束,请使用上面的 SQL
语法:

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
  • ##### UNIQUE约束#####

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

4.4撤销 UNIQUE 约束

如需撤废 UNIQUE 约束,请使用上面的 SQL:

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

UNIQUE 约束唯一标识数据库表中的每条记下。
UNIQUE 和 P索罗德IMALacrosseY KEY 约束均为列或列集合提供了唯一性的保障。
P路虎极光IMAPAJEROY KEY 拥有电动定义的 UNIQUE 约束。
请留心,每种表可以有多个 UNIQUE 约束,不过逐个表只好有一个
PRIMARY KEY 约束。
SQL UNIQUE Constraint on CREATE TABLE
上边的 SQL 在 “Persons” 表创造时在 “Id_P” 列创建 UNIQUE 约束:
MySQL:

SQL UNIQUE 约束
UNIQUE 约束唯一标识数据库表中的每条记下。
UNIQUE 和 P凯雷德IMA奥迪Q7Y KEY 约束均为列或列集合提供了唯一性的承保。
PLANDIMA奥迪Q5Y KEY 拥有电动定义的 UNIQUE 约束。
请留心,每种表可以有多少个 UNIQUE 约束,可是各种表只好有三个 P奥德赛IMA翼虎Y KEY
约束。

五、SQL CHECK约束

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)

上边的 SQL 在 “Persons” 表创造时在 “Id_P” 列创建 UNIQUE 约束:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)

5.1SQL CHECK约束

CHECK约束用于限制列中的值的限制。

假使对单个列定义CHECK约束,那么该列只同意特定的值。

一旦对二个表定义CHECK约束,那么那些约束将依据行中其余列的值在特定的列中对值举行限定。

SQL Server / Oracle / MS Access:

假使急需命名 UNIQUE 约束,以及为多少个列定义 UNIQUE 约束,请使用上面的 SQL
语法:

5.2CREATE TABLE时的SQL CHECK约束

下边的SQL在“Persons”表创制时在“P_Id”列上创设CHECK约束.CHECK约束规定“P_Id”列必须包括大于0的整数。

CREATE TABLE Persons
(
P_Id int NOT NULL CHECK (P_Id>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

如需命名CHECK约束,并定义八个列的CHECK约束,请使用上边的SQL语法:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
)
CREATE TABLE Persons
(
Id_P int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)

5.3ALTER TABLE时的SQL CHECK约束

当表已被成立时,如需在“P_Id”列创立CHECK约束,请使用下边的SQL:

ALTER TABLE Persons
ADD CHECK (P_Id>0)

如需命名CHECK约束,并定义三个列的CHECK约束,请使用下边的SQL语法:

ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

万一急需命名 UNIQUE 约束,以及为七个列定义 UNIQUE 约束,请使用下边的 SQL
语法:

当表已被创设时,如需在 “Id_P” 列成立 UNIQUE 约束,请使用下列 SQL:
ALTER TABLE Persons ADD UNIQUE (Id_P)
如需命名 UNIQUE 约束,并定义五个列的 UNIQUE 约束,请使用下边的 SQL
语法:

5.4撤销CHECK约束

如需撤废CHECK约束,请使用上边的SQL:

ALTER TABLE Persons
DROP CONSTRAINT chk_Person
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)
SQL UNIQUE Constraint on ALTER TABLE

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

六、SQL NOT NULL 约束

在默许的情景下,表的列接受 NULL 值。


当表已被创建时,如需在 “Id_P” 列创制 UNIQUE 约束,请使用下列 SQL:
MySQL / SQL Server / Oracle / MS Access:

撤销 UNIQUE 约束
如需撤消 UNIQUE 约束,请使用上面的 SQL:
MySQL:
ALTER TABLE Persons DROP INDEX uc_PersonID

6.1SQL NOT NULL 约束

NOT NULL 约束强制列不接受 NULL 值。

NOT NULL
约束强制字段始终包括值。那意味着,如果不向字段添加值,就不能插入新记录恐怕更新记录。

下面的 SQL 强制 “P_Id” 列和 “LastName” 列不收受 NULL 值:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

前几日刚学到的。。。

 

ALTER TABLE Persons
ADD UNIQUE (Id_P)

SQL PRIMARY KEY 约束
P库罗德IMA昂科雷Y KEY 约束唯一标识数据库表中的每条记下。
主键必须包括唯一的值。
主键列不可以蕴含 NULL 值。
各类表都应该有三个主键,并且各个表只可以有两个主键。
下边的 SQL 在 “Persons” 表创建时在 “Id_P” 列创建 PRIMARY KEY 约束:

如需命名 UNIQUE 约束,并定义多少个列的 UNIQUE 约束,请使用上面的 SQL
语法:
MySQL / SQL Server / Oracle / MS Access:

MySQL:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Id_P)
)

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

如若急需命名 PRubiconIMA奥德赛Y KEY 约束,以及为五个列定义 PCRUISERIMATucsonY KEY
约束,请使用下边的 SQL 语法:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
)

撤销 UNIQUE 约束
如需撤废 UNIQUE 约束,请使用下边的 SQL:
MySQL:

即便在表已存在的情景下为 “Id_P” 列创立 P奔驰G级IMA奥迪Q5Y KEY 约束,请使用上面的
SQL:
ALTER TABLE Persons ADD PRIMARY KEY (Id_P)

ALTER TABLE Persons
DROP INDEX uc_PersonID
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

就算须求命名 P瑞鹰IMA途观Y KEY 约束,以及为多个列定义 PXC90IMATucsonY KEY
约束,请使用上边的 SQL 语法:
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)

  • ##### PRIMARY KEY 约束#####

声明:倘使你使用 ALTECR-V TABLE 语句添加主键,必须把主键列评释为不带有 NULL
值(在表首回创造时)。
撤销 PRIMARY KEY 约束
如需撤除 P奥迪Q7IMALANDY KEY 约束,请使用上边的 SQL:
MySQL:
ALTER TABLE Persons DROP PRIMARY KEY

P逍客IMA君越Y KEY 约束唯一标识数据库表中的每条记下。
主键必须包蕴唯一的值。
主键列不可以包括 NULL 值。
各类表都应该有1个主键,并且每种表只好有三个主键。
上面的 SQL 在 “Persons” 表创造时在 “Id_P” 列创建 PRIMARY KEY 约束:

SQL FOREIGN KEY 约束
1个表中的 FOREIGN KEY 指向另二个表中的 PPAJEROIMARY KEY。
让大家通过多少个例证来解释外键。

SQL Server / Oracle / MS Access:
CREATE TABLE Persons(Id_P int NOT NULLPRIMARY KEY
,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))

请注意,”Orders” 中的 “Id_P” 列指向 “Persons” 表中的 “Id_P” 列。
“Persons” 表中的 “Id_P” 列是 “Persons” 表中的 PRIMARY KEY。
“Orders” 表中的 “Id_P” 列是 “Orders” 表中的 FOREIGN KEY。
FOREIGN KEY 约束用于防止破坏表之间总是的动作。
FOREIGN KEY
约束也能防患不合规数据插入外键列,因为它必须是它指向的要命表中的值之一。

若果急需命名 P索罗德IMA帕杰罗Y KEY 约束,以及为三个列定义 PLX570IMA奥迪Q5Y KEY
约束,请使用下边的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:

上边的 SQL 在 “Orders” 表创制时为 “Id_P” 列创建 FOREIGN KEY:
MySQL:
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)

CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
)

如果急需命名 FOREIGN KEY 约束,以及为八个列定义 FOREIGN KEY
约束,请使用上面的 SQL 语法:

假设在表已存在的景观下为 “Id_P” 列创立 PRubiconIMA奥迪Q7Y KEY 约束,请使用上边的
SQL:
MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)

ALTER TABLE PersonsADD PRIMARY KEY (Id_P)

只要在 “Orders” 表已存在的事态下为 “Id_P” 列创设 FOREIGN KEY
约束,请使用上边的 SQL:
ALTER TABLE Orders ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

假诺须求命名 P宝马X5IMA昂科威Y KEY 约束,以及为多个列定义 P安德拉IMA途胜Y KEY
约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:

比方急需命名 FOREIGN KEY 约束,以及为多少个列定义 FOREIGN KEY
约束,请使用下边的 SQL 语法:
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)

ALTER TABLE PersonsADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
//注释:如果您使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时)。

撤销 FOREIGN KEY 约束
如需撤废 FOREIGN KEY 约束,请使用上面的 SQL:
MySQL:
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders

撤销 PRIMARY KEY 约束
如需撤除 PCRUISERIMA福睿斯Y KEY 约束,请使用上边的 SQL:
MySQL:

ALTER TABLE PersonsDROP PRIMARY KEY
SQL Server / Oracle / MS Access:
ALTER TABLE PersonsDROP CONSTRAINT pk_PersonID
  • ##### FOREIGN KEY 约束#####

三个表中的 FOREIGN KEY 指向另三个表中的 PLANDIMA奥迪Q5Y KEY。
FOREIGN KEY 约束用于幸免破坏表之间一连的动作。
FOREIGN KEY
约束也能防备非法数据插入外键列,因为它必须是它指向的不胜表中的值之一。
语法省略,百度搜~

  • ##### CHECK 约束#####

CHECK 约束用于限制列中的值的限制。
设若对单个列定义 CHECK 约束,那么该列只允许特定的值。
如若对三个表定义 CHECK 约束,那么此约束会在特定的列中对值举办界定。

  • ##### DEFAULT 约束#####

DEFAULT 约束用于向列中插入专断认同值。
一旦没有鲜明任何的值,那么会将暗许值添加到全部的新记录。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website