mysql查询语言整理1(个人笔记)
08-08
[MySQL] 常用MYSQL语句
1.SQL SELECT (查询)
一个最常用的方式是将资料从数据库中的表格内选出 从 (FROM) 数据库中的表格内选出 (SELECT)。(表格是一个数据库内的结构,它的目的是储存资料。在表格处理这一部分中,我们会提到如何使用 SQL 来设定表格。) 我们由这里可以看到最基本的 SQL 架构:若要选出所有的店名 (store_Name),我们就打入:
SELECT store_name FROM Store_Information
2.SQL DISTINCT (查询无重字段)
SELECT 指令让我们能够读取表格中一个或数个栏位的所有资料。 这将把所有的资料都抓出,无论资料值有无重复。 在资料处理中,我们会经常碰到需要找出表格内的不同 资料值的情况。换句话说,我们需要知道这个表格/栏位内有哪些不同的值,而每个值出现的次数并不重要。这要如何达成呢?在 SQL 中,这是很容易做到的。我们只要在 SELECT 后加上一个 DISTINCT 就可以了。
DISTINCT 的语法如下:
SELECT DISTINCT "栏位名" FROM "表格名"
SELECT DISTINCT store_name FROM Store_Information
3.SQL WHERE (定义查询条件)
SELECT "栏位名" FROM "表格名" WHERE "条件"
如:
SELECT store_name FROM Store_Information WHERE Sales > 1000
4.SQL AND OR (和,或)
SELECT store_name FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275)
5.SQL IN (范围-值可不连续)
在 SQL 中,在两个情况下会用到 IN 这个指令;这一页将介绍其中之一━━与 WHERE 有关的那一个情况。在这个用法下, 我们事先已知道至少一个我们需要的值,而我们将这些知道的值都放入 IN 这个子句。
IN 指令的语法为下:
SELECT "栏位名" FROM "表格名" WHERE "栏位名" IN ('值一', '值二', ...)
在括弧内可以有一或多个值,而不同值之间由逗点分开。值可以是数目或是文字。 若在括弧内只有一个值,那这个子句就等于 WHERE "栏位名" = '值一' 举例来说,若我们要在Store_Information 表格中找出所有含盖 Los Angeles 或 San Diego 的资料。
SELECT * FROM Store_Information WHERE store_name IN ('Los Angeles', 'San Diego')
6.BET BETWEEN (运用一个范围 (range) 内抓出数据库中的值)
IN 这个指令可以让我们依照一或数个不连续 (discrete) 的值的限制之内抓出数据库中的值,而 BETWEEN 则是让我们可以运用一个范围 (range) 内抓出数据库中的值。
BETWEEN这个子句的语法如下:
SELECT "栏位名" FROM " 表格名" WHERE "栏位名" BETWEEN '值一' AND '值二'
这将选出栏位值包含在值一及值二之间的每一笔资料。
SELECT * FROM Store_Information WHERE Date BETWEEN 'Jan-06-1999' AND 'Jan-10-1999'
7.SQL LINK 在运用 IN 的时候,我们完全地知道我们需要的条件;在运用 BETWEEN 的时候,我们则是列出一个范围。
LIKE 的语法如下: SELECT "栏位名" FROM "表格名" WHERE "栏位名" LIKE {套式} {套式} 经常包括野卡 (wildcard).
以下是几个例子: 'A_Z': 所有以 'A' 起头,另一个任何值的字原,且以 'Z' 为结尾的字串。 'ABZ' 和 'A2Z' 都符合这一个模式,而 'AKKZ' 并不符合 (因为在 A 和 Z 之间有两个字原,而不是一个字原)。 'ABC%': 所有以 'ABC' 起头的字串。举例来说,'ABCD' 和 'ABCABC' 都符合这个套式。 '%XYZ': 所有以 'XYZ' 结尾的字串。举例来说,'WXYZ' 和 'ZZXYZ' 都符合这个套式。 '%AN%': 所有含有 'AN' 这个套式的字串。
如: SELECT * FROM Store_Information WHERE store_name LIKE '%AN%'
8.SQL ORDER BY 小往大 (ascending)(不使用ASC,DESC时默认为ASC) 或是由大往小(descending)
ORDER BY 的语法如下:
SELECT "栏位名" FROM "表格名" [WHERE "条件"] ORDER BY "栏位名" [ASC, DESC]
如: SELECT store_name, Sales, Date FROM Store_Information ORDER BY Sales DESC
以上的例子中,我们用栏位名来指定排列顺序的依据。除了栏位名外,我们也可以用栏位的顺序 (依据 SQL 句中的顺序)。在 SELECT 后的第一个栏位为 1,第二个栏位为 2,以此类推。
在上面这个例子中,我们打以下这一句 SQL 可以达到完全一样的效果:
SELECT store_name, Sales, Date FROM Store_Information ORDER BY 2 DESC
9.SQL 函数 AVG (平均) COUNT (计数) MAX (最大值) MIN (最小值) SUM (总合)
运用函数的语法是:SELECT "函数名"("栏位名") FROM "表格名"
如: SELECT SUM(Sales) FROM Store_Information
10.SQL COUNT
COUNT 让我们能够数出在表格中有多少笔资料被选出来。
它的语法是: SELECT COUNT("栏位名") FROM "表格名"
如: SELECT COUNT(store_name) FROM Store_Information WHERE store_name is not NULL
结果: Count(store_name) 4 COUNT 和 DISTINCT 经常被合起来使用,目的是找出表格中有多少笔不同的资料 (至于这些资料实际上是什么并不重要)。 举例来说,如果我们要找出我们的表格中有多少个不同的 store_name,我们就打入, SELECT COUNT(DISTINCT store_name) FROM Store_Information 结果: Count(DISTINCT store_name) 3
11.SQL HAVING
。HAVING 的语法如下: SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1" HAVING (函数条件) 请读者注意: GROUP BY 子句并不是一定需要的。
如: SELECT store_name, SUM(sales) FROM Store_Information GROUP BY store_name HAVING SUM(sales) > 1500
结果: store_name SUM(Sales)[/td] Los Angeles $1800
12.SQL ALIAS SELECT
"表格别名"."栏位1" "栏位别名" FROM "表格名" "表格别名"

浙公网安备 33010602011771号