1. 程式人生 > >SQL語句:基礎語句和高階函式學習總結

SQL語句:基礎語句和高階函式學習總結

基本查詢語句:(基礎、重要

         1、distinct  select distinct 列名 from 表名   去重,查詢不同的資料時。

         2、where   select 列名 from 表名 where 運算子 值  限制查詢條件

         下列的運算子可以在where中使用:

操作符

描述

=

等於

<> 

不等於

大於

小於

>=

大於等於

<=

小於等於

BETWEEN

在某個範圍內

LIKE

搜尋某種模式

3、單引號的使用:

         數值不加單引號,文字值加單引號。

4、AND 和 OR 運算子

5、order_by  排序  預設正序  ,  倒序desc。

6、insert  into   插入  

7、update  set   更新

8、delete        刪除

9、top字句於規定要返回的記錄的數目。  在MySQL中相當於limit,用於SQL的查詢分頁  在Oracle中相當於rownum。

10、like操作符:見名知意   像…,指定搜尋的模式,多用於模糊查詢。

         Select 列名 from 表名   where 列名 like ‘%t條件%

%%為定義萬用字元,SQL 萬用字元必須與 LIKE 運算子一起使用,萬用字元包括以下幾個:常用的有‘_和%’。

萬用字元

描述

%

替代一個或多個字元

_

僅替代一個字元

[charlist]

字元列中的任何單一字元

[^charlist]

或者

[!charlist]

不在字元列中的任何單一字元

         11、IN操作符:IN 操作符允許在 WHERE 子句中規定多個值。

                   例子:selectname from table

                                     Wherename IN (select……..

)

12、between…and   會選取介於兩個值之間的資料範圍。這些值可以是數值、文字或者日期。

         不同的資料庫對 BETWEEN...AND 操作符的處理方式是有差異的。某些資料庫會列出介於 "Adams" 和 "Carter" 之間的人,但不包括 "Adams" 和 "Carter" ;某些資料庫會列出介於 "Adams" 和 "Carter" 之間幷包括 "Adams" 和 "Carter" 的人;而另一些資料庫會列出介於 "Adams" 和 "Carter" 之間的人,包括 "Adams" ,但不包括 "Carter" 。

13、alias  ==  as 可以為列名稱和表名稱指定別名

    Select snamefrom  student as s

14、join  連結兩個表或者多個表 

         Join型別:  內連線 inner join    與 join相同

                              左外連結 left join  會從左表返回所有的行,即使在右表中沒有匹配的行。

                              右外連線 right join 會從右表返回所有的行,即使在左表中沒有匹配的行。

                              滿外連結 full join  會從左表和右表中返回所有的行

15、select into..from….. 常用於複製備份

         16、SQL的資料型別

                   MySQL:

在 MySQL 中,有三種主要的型別:文字、數字和日期/時間型別。

Text 型別:

資料型別

描述

CHAR(size)

儲存固定長度的字串(可包含字母、數字以及特殊字元)。在括號中指定字串的長度。最多 255 個字元。

VARCHAR(size)

儲存可變長度的字串(可包含字母、數字以及特殊字元)。在括號中指定字串的最大長度。最多 255 個字元。

註釋:如果值的長度大於 255,則被轉換為 TEXT 型別。

TINYTEXT

存放最大長度為 255 個字元的字串。

TEXT

存放最大長度為 65,535 個字元的字串。

BLOB

用於 BLOBs (Binary Large OBjects)。存放最多 65,535 位元組的資料。

MEDIUMTEXT

存放最大長度為 16,777,215 個字元的字串。

MEDIUMBLOB

用於 BLOBs (Binary Large OBjects)。存放最多 16,777,215 位元組的資料。

LONGTEXT

存放最大長度為 4,294,967,295 個字元的字串。

LONGBLOB

用於 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 位元組的資料。

ENUM(x,y,z,etc.)

允許你輸入可能值的列表。可以在 ENUM 列表中列出最大 65535 個值。如果列表中不存在插入的值,則插入空值。

註釋:這些值是按照你輸入的順序儲存的。

可以按照此格式輸入可能的值:ENUM('X','Y','Z')

SET

與 ENUM 類似,SET 最多隻能包含 64 個列表項,不過 SET 可儲存一個以上的值。

Number 型別:

資料型別

描述

TINYINT(size)

-128 到 127 常規。0 到 255 無符號*。在括號中規定最大位數。

SMALLINT(size)

-32768 到 32767 常規。0 到 65535 無符號*。在括號中規定最大位數。

MEDIUMINT(size)

-8388608 到 8388607 普通。0 to 16777215 無符號*。在括號中規定最大位數。

INT(size)

-2147483648 到 2147483647 常規。0 到 4294967295 無符號*。在括號中規定最大位數。

BIGINT(size)

-9223372036854775808 到 9223372036854775807 常規。0 到 18446744073709551615 無符號*。在括號中規定最大位數。

FLOAT(size,d)

帶有浮動小數點的小數字。在括號中規定最大位數。在 d 引數中規定小數點右側的最大位數。

DOUBLE(size,d)

帶有浮動小數點的大數字。在括號中規定最大位數。在 d 引數中規定小數點右側的最大位數。

DECIMAL(size,d)

作為字串儲存的 DOUBLE 型別,允許固定的小數點。

* 這些整數型別擁有額外的選項UNSIGNED。通常,整數可以是負數或正數。如果新增UNSIGNED 屬性,那麼範圍將從 0 開始,而不是某個負數。

Date 型別:

資料型別

描述

DATE()

日期。格式:YYYY-MM-DD

註釋:支援的範圍是從 '1000-01-01' 到 '9999-12-31'

DATETIME()

*日期和時間的組合。格式:YYYY-MM-DD HH:MM:SS

註釋:支援的範圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

TIMESTAMP()

*時間戳。TIMESTAMP 值使用 Unix 紀元('1970-01-01 00:00:00' UTC) 至今的描述來儲存。格式:YYYY-MM-DD HH:MM:SS

註釋:支援的範圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

TIME()

時間。格式:HH:MM:SS 註釋:支援的範圍是從 '-838:59:59' 到 '838:59:59'

YEAR()

2 位或 4 位格式的年。

註釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。

* 即便 DATETIME 和 TIMESTAMP 返回相同的格式,它們的工作方式很不同。在 INSERT 或 UPDATE 查詢中,TIMESTAMP 自動把自身設定為當前的日期和時間。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。

SQL Server 資料型別

Character 字串:

資料型別

描述

儲存

char(n)

固定長度的字串。最多 8,000 個字元。

n

varchar(n)

可變長度的字串。最多 8,000 個字元。

varchar(max)

可變長度的字串。最多 1,073,741,824 個字元。

text

可變長度的字串。最多 2GB 字元資料。

Unicode 字串:

資料型別

描述

儲存

nchar(n)

固定長度的 Unicode 資料。最多 4,000 個字元。

nvarchar(n)

可變長度的 Unicode 資料。最多 4,000 個字元。

nvarchar(max)

可變長度的 Unicode 資料。最多 536,870,912 個字元。

ntext

可變長度的 Unicode 資料。最多 2GB 字元資料。

Binary 型別:

資料型別

描述

儲存

bit

允許 0、1 或 NULL

binary(n)

固定長度的二進位制資料。最多 8,000 位元組。

varbinary(n)

可變長度的二進位制資料。最多 8,000 位元組。

varbinary(max)

可變長度的二進位制資料。最多 2GB 位元組。

image

可變長度的二進位制資料。最多 2GB。

Number 型別:

資料型別

描述

儲存

tinyint

允許從 0 到 255 的所有數字。

1 位元組

smallint

允許從 -32,768 到 32,767 的所有數字。

2 位元組

int

允許從 -2,147,483,648 到 2,147,483,647 的所有數字。

4 位元組

bigint

允許介於 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之間的所有數字。

8 位元組

decimal(p,s)

固定精度和比例的數字。允許從 -10^38 +1 到 10^38 -1 之間的數字。

p 引數指示可以儲存的最大位數(小數點左側和右側)。p 必須是 1 到 38 之間的值。預設是 18。

s 引數指示小數點右側儲存的最大位數。s 必須是 0 到 p 之間的值。預設是 0。

5-17 位元組

numeric(p,s)

固定精度和比例的數字。允許從 -10^38 +1 到 10^38 -1 之間的數字。

p 引數指示可以儲存的最大位數(小數點左側和右側)。p 必須是 1 到 38 之間的值。預設是 18。

s 引數指示小數點右側儲存的最大位數。s 必須是 0 到 p 之間的值。預設是 0。

5-17 位元組

smallmoney

介於 -214,748.3648 和 214,748.3647 之間的貨幣資料。

4 位元組

money

介於 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之間的貨幣資料。

8 位元組

float(n)

從 -1.79E + 308 到 1.79E + 308 的浮動精度數字資料。 引數 n 指示該欄位儲存 4 位元組還是 8 位元組。float(24) 儲存 4 位元組,而 float(53) 儲存 8 位元組。n 的預設值是 53。

4 或 8 位元組

real

從 -3.40E + 38 到 3.40E + 38 的浮動精度數字資料。

4 位元組

Date 型別:

資料型別

描述

儲存

datetime

從 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度為 3.33 毫秒。

8 bytes

datetime2

從 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度為 100 納秒。

6-8 bytes

smalldatetime

從 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度為 1 分鐘。

4 bytes

date

僅儲存日期。從 0001 年 1 月 1 日 到 9999 年 12 月 31 日。

3 bytes

time

僅儲存時間。精度為 100 納秒。

3-5 bytes

datetimeoffset

與 datetime2 相同,外加時區偏移。

8-10 bytes

timestamp

儲存唯一的數字,每當建立或修改某行時,該數字會更新。timestamp 基於內部時鐘,不對應真實時間。每個表只能有一個 timestamp 變數。

其他資料型別:

資料型別

描述

sql_variant

儲存最多 8,000 位元組不同資料型別的資料,除了 text、ntext 以及 timestamp。

uniqueidentifier

儲存全域性識別符號 (GUID)。

xml

儲存 XML 格式化資料。最多 2GB。

cursor

儲存對用於資料庫操作的指標的引用。

table

儲存結果集,供稍後處理。

17、SQL函式:(重要高階

SQL avg()        平均值

SQL count()         總數

SQL first()           第一個記錄的值

SQL last()            最後一個記錄的值

SQL max()      最大值

SQL min()            最小值

SQL sum()           記錄值的總數

SQL Group By      結合合計來用,進行分組

SQL Having                   結合合計來用,相當於where,因為where不能和sum結合使用

SQL ucase()         把欄位的值轉換為大寫

SQL lcase()          把欄位的值轉換為小寫

SQL mid()            提取欄位中值字元 起始位置  長度

SQL len()             返回文字值欄位中的長度

SQL round()         小數轉換整數

SQL now()           返回當前時間   sqlsever中為getdate

SQL format()       對欄位的顯示進行格式化  比如時間的顯示格式

還有一些概念性的東西就不一一列舉了,比如一些巢狀語句或者檢視、約束、索引等。

實際開發中掌握了這些差不多就可以了,雖然在不同的資料庫廠家會有差異,但是大同小異,比如MySQL、Oracle、SQL Server  

0.0   還沒有接觸  DB2