目录
[SQL CREATE DATABASE 语句](#SQL CREATE DATABASE 语句)
[SQL CREATE DATABASE 语句](#SQL CREATE DATABASE 语句)
[CREATE DATABASE 实例](#CREATE DATABASE 实例)
[SQL DROP DATABASE 语句](#SQL DROP DATABASE 语句)
[SQL DROP DATABASE 语句](#SQL DROP DATABASE 语句)
[DROP DATABASE 实例](#DROP DATABASE 实例)
[SQL Server 的 SQL 数据库备份](#SQL Server 的 SQL 数据库备份)
[SQL 完整备份](#SQL 完整备份)
[SQL 差异备份](#SQL 差异备份)
[SQL CREATE TABLE 语句](#SQL CREATE TABLE 语句)
[SQL CREATE TABLE 语句](#SQL CREATE TABLE 语句)
[CREATE TABLE 实例](#CREATE TABLE 实例)
[SQL DROP TABLE 语句](#SQL DROP TABLE 语句)
[SQL DROP TABLE 语句](#SQL DROP TABLE 语句)
[DROP TABLE 实例](#DROP TABLE 实例)
[TRUNCATE TABLE 语句](#TRUNCATE TABLE 语句)
[SQL ALTER TABLE 语句](#SQL ALTER TABLE 语句)
[SQL ALTER TABLE 语句](#SQL ALTER TABLE 语句)
[ALTER TABLE - 添加列](#ALTER TABLE - 添加列)
[ALTER TABLE - 删除列](#ALTER TABLE - 删除列)
[ALTER TABLE - 修改列](#ALTER TABLE - 修改列)
[SQL ALTER TABLE 实例](#SQL ALTER TABLE 实例)
[更新 数据类型 实例](#更新 数据类型 实例)
[SQL 约束 (Constraints)](#SQL 约束 (Constraints))
[SQL 创建约束](#SQL 创建约束)
[SQL 约束](#SQL 约束)
[SQL NOT NULL 约束](#SQL NOT NULL 约束)
[SQL NOT NULL 约束](#SQL NOT NULL 约束)
[SQL UNIQUE 约束](#SQL UNIQUE 约束)
[SQL UNIQUE 约束](#SQL UNIQUE 约束)
[创建表时的 UNIQUE 约束](#创建表时的 UNIQUE 约束)
[修改表时的 UNIQUE 约束](#修改表时的 UNIQUE 约束)
[撤销 UNIQUE 约束](#撤销 UNIQUE 约束)
[SQL PRIMARY KEY 约束](#SQL PRIMARY KEY 约束)
[SQL PRIMARY KEY 约束](#SQL PRIMARY KEY 约束)
[创建表时的 PRIMARY KEY 约束](#创建表时的 PRIMARY KEY 约束)
[修改表时的 PRIMARY KEY 约束](#修改表时的 PRIMARY KEY 约束)
[撤销 PRIMARY KEY 约束](#撤销 PRIMARY KEY 约束)
SQL CREATE DATABASE 语句
SQL CREATE DATABASE 语句
CREATE DATABASE 语句用于创建新的SQL数据库。
【语法】
sql
CREATE DATABASE databasename;
CREATE DATABASE 实例
以下SQL语句创建一个名为 "testDB" 的数据库:
【实例】
sql
CREATE DATABASE testDB;
注: 在创建任何数据库之前,请确保您具有管理员权限。创建数据库后,可以使用以下SQL命令在数据库列表中检查它: SHOW DATABASES;
SQL DROP DATABASE 语句
SQL DROP DATABASE 语句
DROP DATABASE 语句用于删除现有SQL数据库。
【语法】
sql
DROP DATABASE databasename;
注: 删除数据库之前要小心。删除数据库将导致数据库中存储的完整信息丢失!
DROP DATABASE 实例
以下SQL语句删除现有数据库 "testDB":
【实例】
sql
DROP DATABASE testDB;
SQL Server 的 SQL 数据库备份
SQL 完整备份
BACKUP DATABASE 语句在SQL Server中用于创建现有SQL数据库的完整备份。
【语法】
sql
BACKUP DATABASE databasename
TO DISK = 'filepath';
SQL 差异备份
差异备份仅备份自上次完整数据库备份以来已更改的数据库部分。
【语法】
sql
BACKUP DATABASE databasename
TO DISK = 'filepath'
WITH DIFFERENTIAL;
完整备份实例
以下SQL语句将现有数据库 "testDB" 的完整备份创建到 D 盘:
【实例】
sql
BACKUP DATABASE testDB
TO DISK = 'D:\backups\testDB.bak';
注: 始终要将数据库备份到与实际数据库不同的驱动器。如果发生磁盘崩溃,则不会丢失全部备份文件和数据库。
差异备份实例
以下SQL语句创建数据库 "testDB" 的差异备份:
【实例】
sql
BACKUP DATABASE testDB
TO DISK = 'D:\backups\testDB.bak'
WITH DIFFERENTIAL;
注: 差异备份缩短了备份时间(因为只备份更改)。
SQL CREATE TABLE 语句
SQL CREATE TABLE 语句
CREATE TABLE 语句用于在数据库中创建新表。
【语法】
sql
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
column1 参数指定表中列的名称。
datatype 参数指定列可以保存的数据类型(例如varchar、integer、date等)。
CREATE TABLE 实例
以下示例创建了一个名为"Persons"的表,该表包含五列:PersonID、LastName、FirstName、Address 和 City:
【实例】
sql
CREATE TABLE Persons (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
PersonID 列的类型为 int,将包含一个整数。
LastName、FirstName、Address和City列的类型为 varchar,将包含字符,这些字段的最大长度为255个字符。
空的 "Persons" 表类似这样:
PersonID | LastName | FirstName | Address | City |
---|---|---|---|---|
注: 可使用 INSERT INTO 语句向空表写入数据。
使用另一个表创建表
还可以使用 CREATE TABLE 创建现有表的副本。
新表获得相同的列定义。可以选择所有列或特定列。
如果使用现有表创建新表,则新表将使用旧表中的现有值填充。
【语法】
sql
CREATE TABLE new_table_name AS
SELECT column1, column2,...
FROM existing_table_name
WHERE ....;
下面的SQL创建了一个名为"TestTables"的新表(它是"Customers"表的副本):
【实例】
sql
CREATE TABLE TestTable AS
SELECT customername, contactname
FROM customers;
SQL DROP TABLE 语句
SQL DROP TABLE 语句
DROP TABLE 语句用于删除数据库中的现有表。
【语法】
sql
DROP TABLE table_name;
注: 删除表前要小心。删除表将导致表中存储的完整信息丢失!
DROP TABLE 实例
以下SQL语句删除现有表"Shippers":
【实例】
sql
DROP TABLE Shippers;
TRUNCATE TABLE 语句
TRUNCATE TABLE 语句用于清空表中的数据,但不删除表本身。
【语法】
sql
TRUNCATE TABLE table_name;
SQL ALTER TABLE 语句
SQL ALTER TABLE 语句
ALTER TABLE 语句用于添加、删除或修改现有表中的列。
ALTER TABLE 语句还用于添加和删除现有表上的各种约束。
ALTER TABLE - 添加列
要在表中添加列,请使用以下语法:
sql
ALTER TABLE table_name
ADD column_name datatype;
以下SQL将"Email"列添加到"Customers"表中:
【实例】
sql
ALTER TABLE Customers
ADD Email varchar(255);
ALTER TABLE - 删除列
要删除表中的列,请使用以下语法(请注意,某些数据库系统不允许删除列):
sql
ALTER TABLE table_name
DROP COLUMN column_name;
以下SQL从"Customers" 表中删除 "Email" 列:
【实例】
sql
ALTER TABLE Customers
DROP COLUMN Email;
ALTER TABLE - 修改列
要更改表中列的数据类型,请使用以下语法:
【SQL Server / MS Access】
sql
ALTER TABLE table_name
ALTER COLUMN column_name datatype;
【My SQL / Oracle (prior version 10G)】
sql
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;
【Oracle 10G and later】
sql
ALTER TABLE table_name
MODIFY column_name datatype;
SQL ALTER TABLE 实例
请看 "Persons" 表:
ID | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
现在我们想在"Persons"表中添加一个名为"DateOfBirth"的列。
我们使用以下SQL语句:
sql
ALTER TABLE Persons
ADD DateOfBirth date;
注:请注意,新列"DateOfBirth"的类型为date,将保存一个日期。数据类型指定列可以保存的数据类型。
现在,"Persons" 表将如下所示:
ID | LastName | FirstName | Address | City | DateOfBirth |
---|---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes | |
2 | Svendson | Tove | Borgvn 23 | Sandnes | |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
更新 数据类型 实例
现在我们要更改"Persons"表中名为"DateOfBirth"的列的数据类型。
我们使用以下SQL语句:
sql
ALTER TABLE Persons
ALTER COLUMN DateOfBirth year;
注:请注意,"DateOfBirth" 列现在是 year 类型,将以两位数或四位数的格式保存一年。
删除实例
接下来,我们要删除"Persons"表中名为"DateOfBirth"的列。
我们使用以下SQL语句:
sql
ALTER TABLE Persons
DROP COLUMN DateOfBirth;
现在,"Persons" 表将如下所示:
ID | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
SQL 约束 (Constraints)
SQL 约束用于为表中的数据指定规则。
SQL 创建约束
可以在使用 CREATE TABLE 语句创建表时或在使用 ALTER TABLE 语句创建表之后指定约束。
【语法】
sql
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....
);
SQL 约束
SQL 约束用于为表中的数据指定规则。
约束用于限制可以进入表中的数据类型。这确保了表中数据的准确性和可靠性。如果约束和数据操作之间存在任何冲突,则操作将中止。
约束可以是列级或表级。列级约束应用于列,表级约束应用于整个表。
SQL 中通常使用以下约束:
NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。
DEFAULT - 规定没有给列赋值时的默认值。
INDEX - 索引用于非常快速地从数据库中创建和检索数据。
SQL NOT NULL 约束
SQL NOT NULL 约束
默认情况下,列可以包含 NULL 空值。
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
创建表时不为空
以下SQL确保在创建"Persons"表时,"ID"、"LastName"和"FirstName"列不接受空值:
【实例】
sql
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);
修改表时不为空
要在已创建"Persons"表的"Age"列上创建 NOT NULL 约束,请使用以下 SQL:
sql
ALTER TABLE Persons
MODIFY Age int NOT NULL;
SQL UNIQUE 约束
SQL UNIQUE 约束
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
创建表时的 UNIQUE 约束
以下 SQL 在创建"Persons"表时,在"ID"列上创建唯一约束:
【SQL Server / Oracle / MS Access】
sql
CREATE TABLE Persons (
ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
【MySQL】
sql
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
UNIQUE (ID)
);
要命名唯一约束,并在多个列上定义唯一约束,请使用以下SQL语法:
【MySQL / SQL Server / Oracle / MS Access】
sql
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT UC_Person UNIQUE (ID,LastName)
);
修改表时的 UNIQUE 约束
要在已创建表的 "ID" 列上创建唯一约束,请使用以下 SQL:
【MySQL / SQL Server / Oracle / MS Access】
sql
ALTER TABLE Persons
ADD UNIQUE (ID);
要命名唯一约束,并在多个列上定义唯一约束,请使用以下SQL语法:
【MySQL / SQL Server / Oracle / MS Access】
sql
ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);
撤销 UNIQUE 约束
如需撤销 UNIQUE 约束,请使用下面的 SQL:
【MySQL】
sql
ALTER TABLE Persons
DROP INDEX UC_Person;
【SQL Server / Oracle / MS Access】
sql
ALTER TABLE Persons
DROP CONSTRAINT UC_Person;
SQL PRIMARY KEY 约束
SQL PRIMARY KEY 约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
创建表时的 PRIMARY KEY 约束
下面的 SQL 在 "Persons" 表创建时在 "ID" 列创建 PRIMARY KEY 约束:
【MySQL】
sql
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);
【SQL Server / Oracle / MS Access】
sql
CREATE TABLE Persons (
ID int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL 语法:
【MySQL / SQL Server / Oracle / MS Access】
sql
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);
注: 在上面的示例中,只有一个主键(PK_Person)。但是,主键的值由两列组成(ID+LastName)。
修改表时的 PRIMARY KEY 约束
如果在表已存在的情况下为 "ID" 列创建 PRIMARY KEY 约束,请使用下面的 SQL:
【MySQL / SQL Server / Oracle / MS Access】
sql
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL 语法:
【MySQL / SQL Server / Oracle / MS Access】
sql
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);
注: 如果您使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时)。
撤销 PRIMARY KEY 约束
如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:
【MySQL】
sql
ALTER TABLE Persons
DROP PRIMARY KEY;
【SQL Server / Oracle / MS Access】
sql
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;