SQL学习之高级篇

发布时间:2024年01月12日

目录

1、SQL SELECT TOP, LIMIT, ROWNUM

2、SQL LIKE 运算符

3、SQL?IN?运算符

4、SQL BETWEEN 运算符

?5、SQL?通用数据类型

SQL 语句快速参考?

1、SQL SELECT TOP, LIMIT, ROWNUM

  • SELECT TOP 子句用于指定要返回的记录数量。
  • SELECT TOP子句在包含数千条记录的大型表上很有用。返回大量记录会影响性能。

MySQL语法:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
  1. 在SQL中,LIMIT 和 OFFSET 一起用来限制查询返回的记录数,并且指定从哪一条记录开始返回。LIMIT 指定返回的记录数,而 OFFSET 指定在开始返回记录之前要跳过的记录数。语法格式:LIMIT count OFFSET count1
  2. LIMIT m,n ; 表示从第m+1条开始,取n条数据。
  3. LIMIT n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写。

2、SQL LIKE 运算符

 在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"结尾的值

3、SQL?IN?运算符

 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);

4、SQL BETWEEN 运算符

 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 操作符!

?5、SQL?通用数据类型

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 语句快速参考?
SQL 语句语法
AND / ORSELECT column_name(s)
FROM table_name
WHERE condition
AND|OR condition
ALTER TABLEALTER TABLE table_name
ADD column_name datatype

or

ALTER TABLE table_name
DROP COLUMN column_name

AS (alias)SELECT column_name AS column_alias
FROM table_name

or

SELECT column_name
FROM table_name AS table_alias

BETWEENSELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
CREATE DATABASECREATE DATABASE database_name
CREATE TABLECREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name2 data_type,
...
)
CREATE INDEXCREATE INDEX index_name
ON table_name (column_name);

or

CREATE UNIQUE INDEX index_name
ON table_name (column_name);

CREATE VIEWCREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition;
DELETEDELETE FROM table_name
WHERE some_column=some_value;

or

DELETE FROM table_name;

DELETE * FROM table_name;

(删除整张表格!)

DROP DATABASEDROP DATABASE database_name
DROP INDEXDROP 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 TABLEDROP TABLE table_name
GROUP BYSELECT column_name, aggregate_function(column_name) -- 聚合函数
FROM table_name
WHERE column_name operator value? --?比较操作符
GROUP BY column_name
HAVINGSELECT 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
INSELECT column_name(s)
FROM table_name
WHERE column_name
IN (value1,value2,..)
INSERT INTOINSERT INTO table_name
VALUES (value1, value2, value3,....)

or

INSERT INTO table_name
(column1, column2, column3,...)
VALUES (value1, value2, value3,....)

INNER JOINSELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name = table_name2.column_name
LEFT JOINSELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name = table_name2.column_name
RIGHT JOINSELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name = table_name2.column_name
FULL JOINSELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name =
table_name2.column_name
LIKESELECT column_name(s)
FROM table_name
WHERE column_nameLIKE pattern
ORDER BYSELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC|DESC]
SELECTSELECT column_name(s)
FROM table_name
SELECT *SELECT *
FROM table_name
SELECT DISTINCTSELECT DISTINCT column_name(s)
FROM table_name
SELECT INTOSELECT *
INTO new_table_name [IN externaldatabase]
FROM old_table_name

or

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_table_name

SELECT TOPSELECT TOP number|percent column_name(s)
FROM table_name
TRUNCATE TABLETRUNCATE TABLE table_name
UNIONSELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
UNION ALLSELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
UPDATEUPDATE table_name
SET column1=value, column2=value,...
WHERE some_column=some_value
WHERESELECT column_name(s)
FROM table_name
WHERE column_name operator value
文章来源:https://blog.csdn.net/weixin_46653974/article/details/135512380
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。