本文最后更新于 824 天前,其中的信息可能已经有所发展或是发生改变。
RIGHT JOIN
关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
DISTINCT
用于返回唯一不同的值。SELECT DISTINCT 列名称 FROM 表名称
DELETE
DELETE FROM 表名称 WHERE 列名称 = 值
DELETE FROM tablename
删除表中所有行
TOP
SELECT TOP 2 * FROM Persons
选取头两条记录。
SELECT TOP 50 PERCENT * FROM Persons
选取 50% 的记录。
LIKE
SELECT * FROM Persons WHERE City LIKE 'N%'
通配符
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist] 或者 [!charlist] 不在字符列中的任何单一字符
LIMIT
- MySQL的方言
SELECT * FROM operation WHERE type = 'SQLStats' AND name = 'SlowLog' ORDER BY create_time LIMIT 1000, 10;
- 数据库也并不知道第1000000条记录从什么地方开始,即使有索引也需要从头计算一次。在前端数据浏览翻页,或者大数据分批导出等场景下,是可以将上一页的最大值当成参数作为查询条件的。SQL 重新设计如下:
SELECT * FROM operation WHERE type = 'SQLStats' AND name = 'SlowLog' AND create_time > '2017-03-16 14:00:00' ORDER BY create_time limit 10;
SQL查询中in
和exists
的区别分析
select * from A where id in (select id from B);
select * from A where exists (select 1 from B where A.id=B.id);
in是在内存里遍历比较,而exists需要查询数据库,所以当B表数据量较大时,exists效率优于in。
UNION
UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。行不重复
UNION ALL
列出所有的值。允许行重复
SELECT INTO
- 从一个表中选取数据,然后把数据插入另一个表中。
- 常用于创建表的备份复件或者用于对记录进行存档。
- 制作 "Persons" 表的备份复件:
SELECT * INTO Persons_backup FROM Persons
IN
子句可用于向另一个数据库中拷贝表:SELECT * INTO Persons IN “Backup.mdb” FROM Persons
UNIQUE
每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束,但是可由多个字段组成主键。
ALTER TABLE Persons ADD UNIQUE (Id_P)
foreign
英 [ˈfɒrən] 美 [ˈfɔːrən] adj.外国的; 涉外的; 外交的; 非典型的; 陌生的
references
英 [ˈrefrənsɪz] 美 [ˈrefrənsɪz] n.说到(或写到)的事; 提到; 谈及; 涉及; 参考; 查询; 查阅; (帮助或意见的) 征求,征询; v.查阅; 参考; 给(书等)附参考资料
FOREIGN KEY
外键
代码语言:javascript复制 CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
);
ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P);
CHECK
用于限制列中的值的范围。
代码语言:javascript复制 CREATE TABLE Persons
(
Id_P int NOT NULL,
City varchar(255),
CHECK (Id_P>0)
)
DEFAULT
用于向列中插入默认值。
代码语言:javascript复制CREATE TABLE Persons
(
Id_P int NOT NULL,
City varchar(255) DEFAULT 'Sandnes'
)
Post Views: 428