CREATE DATABASE 用于创建数据库。
SQL CREATE DATABASE 语法 CREATE DATABASE database_name
CREATE TABLE 语句用于创建数据库中的表。
SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, …. )
约束用于限制加入表的数据的类型。
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 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。 PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
在MySQL CREATE TABLE Persons( Id_P int NOT NULL, UNIQUE (Id_P)
p.s. 当表已被创建时,如需在 “Id_P” 列创建 UNIQUE 约束(MySQL / SQL Server / Oracle / MS Access): ALTER TABLE Persons ADD UNIQUE (Id_P)如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束: MySQL / SQL Server / Oracle / MS Access: ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
撤销 UNIQUE 约束 MySQL: ALTER TABLE Persons DROP INDEX uc_PersonID
PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。主键列不能包含 NULL 值。 每个表都应该有一个主键,并且每个表只能有一个主键。
FOREIGN KEY 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。 上一篇给出的例子 “Persons” 表中的 “Id_P” 列是 “Persons” 表中的 PRIMARY KEY。 “Orders” 表中的 “Id_P” 列是 “Orders” 表中的 FOREIGN KEY。
MySQL: CREATE TABLE Orders ( Id_O int NOT NULL, PRIMARY KEY (Id_O), FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) ) 需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束 CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
CHECK 约束用于限制列中的值的范围。 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
CREATE TABLE Orders ( CHECK (Id_P>0) )
DEFAULT 约束用于向列中插入默认值。 如果没有规定其他的值,那么会将默认值添加到所有的新记录。
CREATE TABLE Orders ( City varchar(255) DEFAULT ‘Sandnes’ )
CREATE INDEX 语句用于在表中创建索引。 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
索引 用户无法看到索引,它们只能被用来加速搜索/查询。 注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。SQL CREATE INDEX 语法 在表上创建一个简单的索引,允许使用重复的值: CREATE INDEX index_name ON table_name (column_name) p.s. “column_name” 规定需要索引的列。 SQL CREATE UNIQUE INDEX 语法 在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。 CREATE UNIQUE INDEX index_name ON table_name (column_name)
e.g.1、以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC: CREATE INDEX PersonIndex ON Person (LastName DESC) 2、希望索引不止一个列,在括号中列出这些列的名称,用逗号隔开: CREATE INDEX PersonIndex ON Person (LastName, FirstName)
DROP INDEX DROP INDEX 命令删除表格中的索引
ALTER TABLE table_name DROP INDEX index_name 不同的数据库会有所不同
DROP TABLE DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除):
DROP TABLE 表名称
DROP DATABASE DROP DATABASE 语句用于删除数据库:
DROP DATABASE 数据库名称
TRUNCATE TABLE 仅仅除去表内的数据,但并不删除表本身(仅仅删除表格中的数据):
TRUNCATE TABLE 表名称
ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
SQL ALTER TABLE 语法 表中添加列: ALTER TABLE table_name ADD column_name datatype 删除表中的列: ALTER TABLE table_name DROP COLUMN column_name
p.s.某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。
改变数据类型 ALTER TABLE table_name ALTER COLUMN column_name datatype我们通常希望在每次插入新记录时,自动地创建主键字段的值。 我们可以在表中创建一个 auto-increment 字段。
用于 MySQL 的语法 下列 SQL 语句把 “Persons” 表中的 “P_Id” 列定义为 auto-increment 主键: CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREMENT, )