目录
1、SQL SELECT TOP, LIMIT, ROWNUM
MySQL语法:
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
- 在SQL中,LIMIT 和 OFFSET 一起用来限制查询返回的记录数,并且指定从哪一条记录开始返回。LIMIT 指定返回的记录数,而 OFFSET 指定在开始返回记录之前要跳过的记录数。语法格式:LIMIT count OFFSET count1
- LIMIT m,n ; 表示从第m+1条开始,取n条数据。
- LIMIT n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写。
在WHERE子句中使用LIKE运算符来搜索列中的指定模式。?
有两个通配符与LIKE运算符一起使用:
%
?- 百分号表示零个,一个或多个字符_
?- 下划线表示单个字符 注意:?MS Access使用问号(?
)而不是下划线(_
)。百分号和下划线也可以组合使用!
SQL LIKE 语法
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
提示:您还可以使用AND或OR运算符组合任意数量的条件。
下面是一些使用'%'和'_'通配符显示不同LIKE运算符的例子:
LIKE 运算符 | 描述 |
---|---|
WHERE CustomerName LIKE 'a%' | 查找以“a”开头的任何值 |
WHERE CustomerName LIKE '%a' | 查找以“a”结尾的任何值 |
WHERE CustomerName LIKE '%or%' | 在任何位置查找任何具有“or”的值 |
WHERE CustomerName LIKE '_r%' | 在第二个位置查找任何具有“r”的值 |
WHERE CustomerName LIKE 'a_%_%' | 查找以“a”开头且长度至少为3个字符的值 |
WHERE ContactName LIKE 'a%o' | 找到以"a"开头,以"o"结尾的值 |
IN 运算符允许您在 WHERE 子句中指定多个值。
IN 运算符是多个 OR 条件的简写。
SQL IN 语法
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
或者
SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);
BETWEEN运算符用于选取介于两个值之间的数据范围内的值。
BETWEEN运算符选择给定范围内的值。值可以是数字,文本或日期。
BETWEEN运算符是包含性的:包括开始和结束值,且开始值需小于结束值。?
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
要否定BETWEEN运算符的结果,可以添加NOT运算符:
SELECT column_name(s)
FROM table_name
WHERE column_name NOT BETWEEN value1 AND value2;
请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!
在一些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
在一些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
在一些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。因此,请检查您的数据库是如何处理 BETWEEN 操作符!
SQL 中通用的数据类型:
数据类型 | 描述 |
---|---|
CHARACTER(n) | 字符/字符串。固定长度 n。 |
VARCHAR(n) 或 CHARACTER VARYING(n) | 字符/字符串。可变长度。最大长度 n。 |
BINARY(n) | 二进制串。固定长度 n。 |
BOOLEAN | 存储 TRUE 或 FALSE 值 |
VARBINARY(n) 或 BINARY VARYING(n) | 二进制串。可变长度。最大长度 n。 |
INTEGER(p) | 整数值(没有小数点)。精度 p。 |
SMALLINT | 整数值(没有小数点)。精度 5。 |
INTEGER | 整数值(没有小数点)。精度 10。 |
BIGINT | 整数值(没有小数点)。精度 19。 |
DECIMAL(p,s) | 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数小数点后有 2 位数的数字。 |
NUMERIC(p,s) | 精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同) |
FLOAT(p) | 近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。 |
REAL | 近似数值,尾数精度 7。 |
FLOAT | 近似数值,尾数精度 16。 |
DOUBLE PRECISION | 近似数值,尾数精度 16。 |
DATE | 存储年、月、日的值。 |
TIME | 存储小时、分、秒的值。 |
TIMESTAMP | 存储年、月、日、小时、分、秒的值。 |
INTERVAL | 由一些整数字段组成,代表一段时间,取决于区间的类型。 |
ARRAY | 元素的固定长度的有序集合 |
MULTISET | 元素的可变长度的无序集合 |
XML | 存储 XML 数据 |
SQL 语句 | 语法 |
---|---|
AND / OR | SELECT column_name(s) FROM table_name WHERE condition AND|OR condition |
ALTER TABLE | ALTER TABLE table_name ADD column_name datatype or ALTER TABLE table_name |
AS (alias) | SELECT column_name AS column_alias FROM table_name or SELECT column_name |
BETWEEN | SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 |
CREATE DATABASE | CREATE DATABASE database_name |
CREATE TABLE | CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name2 data_type, ... ) |
CREATE INDEX | CREATE INDEX index_name ON table_name (column_name); or CREATE UNIQUE INDEX index_name |
CREATE VIEW | CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition; |
DELETE | DELETE FROM table_name WHERE some_column=some_value; or DELETE FROM table_name; DELETE * FROM table_name; (删除整张表格!) |
DROP DATABASE | DROP DATABASE database_name |
DROP INDEX | DROP INDEX table_name.index_name (SQL Server) DROP INDEX index_name ON table_name (MS Access) DROP INDEX index_name (DB2/Oracle) ALTER TABLE table_name DROP INDEX index_name (MySQL) |
DROP TABLE | DROP TABLE table_name |
GROUP BY | SELECT column_name, aggregate_function(column_name) -- 聚合函数 FROM table_name WHERE column_name operator value? --?比较操作符 GROUP BY column_name |
HAVING | SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value |
IN | SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,..) |
INSERT INTO | INSERT INTO table_name VALUES (value1, value2, value3,....) or INSERT INTO table_name |
INNER JOIN | SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name = table_name2.column_name |
LEFT JOIN | SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name = table_name2.column_name |
RIGHT JOIN | SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name = table_name2.column_name |
FULL JOIN | SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name = table_name2.column_name |
LIKE | SELECT column_name(s) FROM table_name WHERE column_nameLIKE pattern |
ORDER BY | SELECT column_name(s) FROM table_name ORDER BY column_name [ASC|DESC] |
SELECT | SELECT column_name(s) FROM table_name |
SELECT * | SELECT * FROM table_name |
SELECT DISTINCT | SELECT DISTINCT column_name(s) FROM table_name |
SELECT INTO | SELECT * INTO new_table_name [IN externaldatabase] FROM old_table_name or SELECT column_name(s) |
SELECT TOP | SELECT TOP number|percent column_name(s) FROM table_name |
TRUNCATE TABLE | TRUNCATE TABLE table_name |
UNION | SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 |
UNION ALL | SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2 |
UPDATE | UPDATE table_name SET column1=value, column2=value,... WHERE some_column=some_value |
WHERE | SELECT column_name(s) FROM table_name WHERE column_name operator value |