SQL记事本
- DDL: Data Definition Language. 定义语言就是定义关系模式、删除关系、修改关系模式以及创建数据库中的各种对象,比如表、聚簇、索引、视图、函数、存储过程和触发器等等。
- DML: Data Manipulation Language.主要是进行插入元组、删除元组、修改元组的操作。主要有insert、update、delete语法组成。
- DQL: Data Query Language
- DCL: Data Control Language。用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,能够对数据库进行监视。
语法
- 删除
DELETE FROM table_name
WHERE condition;
- 更新
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
- 插入 INSERT INTO
//没有指定要插入数据的列名的形式需要列出插入行的每一列数据
INSERT INTO table_name
VALUES (value1,value2,value3,...);
//指定要插入数据的列名的形式
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
- INSERT INTO SELECT 语法
//从一个表中复制所有的列插入到另一个已存在的表
INSERT INTO table2
SELECT * FROM table1;
//只复制指定的列插入到另一个已存在的表
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
eg.
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;
- 别名
//列的 SQL 别名语法
SELECT column_name AS alias_name
FROM table_name;
//表的 SQL 别名语法
SELECT column_name(s)
FROM table_name AS alias_name;
- CREATE INDEX 语法
CREATE INDEX
CREATE UNIQUE INDEX
//简单的索引。允许使用重复的值
CREATE INDEX index_name
ON table_name (column1, column2, ...);
//唯一的索引,两个行不能拥有相同的索引值。
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
- drop
//删除索引
ALTER TABLE table_name DROP INDEX index_name
//删除表
DROP TABLE table_name
//删除数据库
DROP DATABASE database_name
- alter
ALTER TABLE table_name
ADD column_name datatype;
ALTER TABLE table_name
DROP COLUMN column_name;
//更改表中列的数据类型
ALTER TABLE table_name
ALTER COLUMN column_name datatype;
关键词
- DISTINCT(SELECT DISTINCT 语句)
SELECT DISTINCT column1, column2, ...
FROM table_name;
- LIMIT
- BETWEEN
- UNION 操作符
- 约束(Constraints)
IS NULL
请始终使用 IS NULL 来查找 NULL 值。IS NOT NULL
必须使用 IS NOT NULL 操作符选取在 “XX” 列中不带有 NULL 值的记录
FOREIGN KEY 外键
SQL 外键约束:一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。
创建外键
创建表时,创建外键
foreign key (p_id) references Persons(P_Id)
//创建一个外键
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
//创建多个外键
CREATE TABLE 表名
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT 外键约束名 FOREIGN KEY (column1,column2,... column_n)
REFERENCES 外键依赖的表 (column1,column2,...column_n)
ON DELETE CASCADE--级联删除
);
///创建多个外键例子
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);
//命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
修改表时,撤销外键约束
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;
视图
待补充