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 "表格名" "表格别名"

 

 

 

 

 

posted @ 2012-08-13 09:05  hlp鹏  阅读(124)  评论(0)    收藏  举报