CREATE DATABASE database_name;
DROP DATABASE database_name;
BACKUP DATABASE databasename
TO DISK = 'filepath';
BACKUP DATABASE databasename
TO DISK = 'filepath'
WITH DIFFERENTIAL;
DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
CREATE TABLE new_table_name AS
SELECT column1, column2,...
FROM existing_table_name
WHERE ....;
DROP TABLE table_name;
TRUNCATE TABLE table_name;
1)修改表的列名
alter table 表名 change 原列名 新列名 类型;
2)修改表的类类型
alter table 表名 modify 列名 类型 ;
3)删除表的某一列
alter table 表名 drop 列名;
4)在x列后添加某一列
alter table 表名 add 列名 类型 after column_x;
5)修改表名
alter table 表名 rename 新表名;
Constraints can be column level or table level.
约束可以是列层次,也可以是表层次。
Constraints are used to limit the type of data that can go into a table. This ensures the accuracy and reliability of the data in the table. If there is any violation between the constraint and the data action, the action is aborted. 约束用于限制可以放入表中的数据的类型。这确保了表中数据的准确性和可靠性。如果约束与数据操作之间有任何冲突,则该操作将被中止。
Syntax:
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....
);
The following constraints are commonly used in SQL:
例,当Persons表已存在时,给Age列的数据类型增加约束-NOT NULL:
主键是NOT NULL和UNIQUE的组合,唯一地识别表中的每一条记录。
① 创建表时:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);
以多字段作为主键:
In the example there is only ONE PRIMARY KEY (PK_Person). However, the VALUE of the primary key is made up of TWO COLUMNS (ID + LastName).
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);
② 表已存在时:
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
以多列为主键:
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);
Note: 如果你使用ALTER TABLE来添加一个主键,主键列必须被声明为不包含NULL值(当表第一次被创建时)。
③ 删除主键
ALTER TABLE Persons
DROP PRIMARY KEY;
FOREIGN KEY是一个表中的一个字段(或字段的集合),它引用另一个表中的PRIMARY KEY。
具有外键的表称为子表,具有主键的表称为引用表或父表。
FOREIGN KEY约束可以防止无效数据被插入到外键列中,因为它必须是父表中包含的一个值
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
注:Person是父表,Orders是子表
重命名外键:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
当表存在时,创建外键:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
以多列为外键:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
删除外键:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;
CHECK(condition)
① 建表时:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);
给多列加CHECK:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);
② 给已存在表加CHECK:
ALTER TABLE Persons
ADD CHECK (Age>=18);
给多列加CHECK:
ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
③ 删除CHECK:
ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;
① 建表时设置默认值
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255) DEFAULT 'Sandnes'
);
CREATE TABLE Orders (
ID int NOT NULL,
OrderNumber int NOT NULL,
OrderDate date DEFAULT GETDATE()
);
② 给已存在表设置默认值
ALTER TABLE Persons
ALTER City SET DEFAULT 'Sandnes';
③ 删除默认值
ALTER TABLE Persons
ALTER City DROP DEFAULT;
索引用于比其他方法更快地从数据库中检索数据。用户不能看到索引,它们只是用来加速搜索/查询。更新有索引的表要比更新没有索引的表花费更多的时间(因为索引也需要更新)。因此,只在频繁搜索的列上创建索引。
括号里放多个列的话,是create an index on a combination of columns;
① 创建索引:允许重复值
CREATE INDEX index_name
ON table_name (column1, column2, ...);
② 创建去重索引:不允许重复值
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
③ 删除索引
ALTER TABLE table_name
DROP INDEX index_name;