1. INSERT INTO 语句
#
INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO 表名称 (列1, 列2,...) VALUES (值1, 值2,....)
-- 实例
INSERT INTO Persons
VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
INSERT INTO Persons (LastName, Address)
VALUES ('Wilson', 'Champs-Elysees')
2. UPDATE 语句
#
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
-- 实例
UPDATE Person
SET FirstName = 'Fred'
WHERE LastName = 'Wilson'
UPDATE Person
SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'
3. DELETE 语句
#
DELETE FROM 表名称 WHERE 列名称 = 值
4. SELECT INTO 语句
#
- SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
- SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename
-- 制作 "Persons" 表的备份复件:
SELECT *
INTO Persons_backup
FROM Persons
-- IN 子句可用于向另一个数据库中拷贝表:
SELECT *
INTO Persons IN 'Backup.mdb'
FROM Persons
/*
也可以添加 WHERE 子句
通过从 "Persons" 表中提取居住在 "Beijing" 的人的信息,
创建了一个"Persons_backup" 的表:
*/
SELECT LastName,Firstname
INTO Persons_backup
FROM Persons
WHERE City='Beijing'
/*
从一个以上的表中选取数据也是可以做到的
创建一个名为 "Persons_Order_Backup" 的新表,
其中包含了从 Persons 和 Orders 两个表中取得的信息
*/
SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
5. 创建索引
#
- 在表中创建索引,以便更加快速高效地查询数据。用户无法看到索引,它们只能被用来加速搜索/查询。
- 更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
-- 简单创建索引
CREATE INDEX index_name ON table_name (column_name);
-- 创建一个唯一的索引,两个行不能拥有相同的索引值
CREATE UNIQUE INDEX index_name ON table_name (column_name);
-- 以降序索引某个列中的值
CREATE INDEX index_name ON table_name (column_name DESC);
-- 索引不止一个列,可以在括号中列出这些列的名称,用逗号隔开
CREATE INDEX index_name ON table_name (column_name1, column_name2);
6. DROP 语句
#
- 通过使用 DROP 语句,可以轻松地删除索引、表和数据库。
-- 删除表格中的索引
ALTER TABLE table_name DROP INDEX index_name;
-- 删除表(表的结构、属性以及索引也会被删除)
DROP TABLE table_name;
-- 删除数据库
DROP DATABASE database_name;
-- 仅仅需要除去表内的数据,但并不删除表本身
TRUNCATE TABLE table_name;
7. ALTER TABLE 语句
#
- ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
-- 在表中添加列
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
8. AUTO_INCREMENT
#
- 会在新记录插入表中时生成一个唯一的数字
- AUTO_INCREMENT 的默认的开始值是 1,每条新记录递增 1
-- 表中的 "P_Id" 列定义为 auto-increment 主键
CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
);
-- 让 AUTO_INCREMENT 序列以其他的值开始
ALTER TABLE Persons AUTO_INCREMENT=100;
/*
在 "Persons" 表中插入新记录,
我们不必为 "P_Id" 列规定值(会自动添加一个唯一的值)
*/
INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates');
9. VIEW 视图
#
- 视图包含行和列,就像一个真实的表。
- 视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
- 可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以提交数据。
- 数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。
- 视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。
-- 创建一个视图
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_nameWHERE condition;
-- 实例
CREATE VIEW [Current Product List] AS
SELECT ProductID, ProductName
FROM Products
WHERE Discontinued=No
-- 查询上面的视图
SELECT * FROM [Current Product List]
-- 选取 Products 表中所有单位价格高于平均单位价格的产品
CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)
-- 查询上面的视图
SELECT * FROM [Products Above Average Price]
/*
计算在 1997 年每个种类的销售总数。
这个视图会从另一个名为 "Product Sales for 1997" 的视图那里选取数据
*/
CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName
-- 查询上面的视图
SELECT * FROM [Category Sales For 1997]
-- 可以向查询添加条件。假设仅需要查看 "Beverages" 类的全部销量
SELECT * FROM [Category Sales For 1997]
WHERE CategoryName='Beverages'
-- 更新视图
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
-- 向 "Current Product List" 视图添加 "Category" 列
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No
-- 删除视图
DROP VIEW view_name