數據庫之SELECT查詢語句

目錄

1 基礎知識

1.1 數據庫的基本形式

1.2 mysql數據庫登陸的基本操作

2 常用字段類型

2.1 數值型

2.2 字符型

2.3 日期型

3 selete語句

4 where子句

4.1 條件操作符

4.2 邏輯運算符

5 排序

6、函數

6.1 單行函數

6.1.1 字符函數

6.1.2 數值函數

6.1.3 日期函數

6.1.4 轉換函數

6.2 分組函數(多行函數)


本文主要講解SELECT語句的具體用法,包括基本知識、常用的字段類型、where子句、常用函數等。

1 基礎知識

1.1 數據庫的基本形式

在關係型數據庫中,所有數據都存在表中,一個表由字段和數據組成,如下圖所示:

編號

姓名

性別

年齡

成績

愛好

001

王成

18

91

打籃球

002

李四

19

92

踢足球

003

李三

20

93

羽毛球

字段

數據

數據

數據

 

1.2 mysql數據庫登陸的基本操作

1、mysql -u root -p

登陸命令,需要輸入密碼,然後登陸mysql。

2、show databases;

可以查看現有數據庫。

3、use 數據庫名;

 可以使用指定的數據庫,比如use mysql。

4、show tables;

可以顯示當前數據庫中的表。

5、show create table 表名;

顯示指定表名的定義,即該表的所有字段信息。

6、desc 表名;

顯示指定表名的定義,即該表的所有字段信息。

7、select * from 表名;

顯示指定表名的表中的所有信息。

 

2 常用字段類型

常用的字段類型有數值類型、字符型、日期型。

2.1 數值型

numer(m)  表示m位的整數。

number(m,n) m表示總位數,m是小數點後的位數。

數值類型可以直接使用 + - * / 運算符。

2.2 字符型

char(m)   m位定長字符串

varchar2(m)  m位變長字符串

定長就是長度固定,不足的部分用空格填充。變長就是長度隨數據的不同而不同,不去填充空格。定長字符串效率要略高於變長字符串,但是比較浪費空間,如果沒有特殊的要求,一般選用varchar2。

2.3 日期型

date 即日期型,包括年月日,小時分秒。

日期型的字段可以使用 + - 運算符。

3 selete語句

select用來做數據查詢,後面可以跟各種字段名,表示要查詢的字段,多個字段用”,”隔開,也可以跟表達式和特殊內容。

select語句一般和from語句結合使用,from語句,後面跟表名,表示從哪些表中查詢數據,多個表用”,”隔開。比如查看emp表中的id、first_name、sal字段,可以使用:

select id,first_name,sal from emp;

每個字段在select語句中,都可以定義一個別名,方便顯示和使用,比如查看emp表中的id,顯示成myid:

select id myid from emp;

如果要指定大小寫,則需要用””來限定,如下:

select id “myid” from emp;

注:sql語句本身不包括分號,但是想要運行必須用” ; ” 或者”/”

“||”可以連接兩個文本型(字符串)的數據,比如顯示的時候,將first_name和last_name合併在一起顯示出來:

select id , first_name || ‘ ’ || last_name name from emp;

在數據庫中,有些數據不是必須的,有可能出現空缺的情況,可以用“NULL”表示數據的空缺。“NULL”是一種特殊的數據,不能簡單地看作’’或者0。

一般的數據庫(mysql和oracle都有)有一種特殊的表,叫做虛表,裏面只有一個字段,但是這個字段類型可以是任意的,可以這樣操作它:

select sysdate() from dual;

(mysql中sysdate()可以獲取當前時間信息)

select 1+1 from dual;

4 where子句

在數據庫的查詢中,更多的不是查看所有的數據,而是根據一定的條件進行數據的篩選,按照條件進行的查詢叫做條件查詢,條件查詢需要用到where子句。

4.1 條件操作符

select id , sal from emp

where sal >1000;

 

篩選sal大於1000的數據顯示出來,同樣,可以是:

操作符

說明                      

示例

=

等於

where sal =10000

<>

不等於

where sal <> 10000

!=

不等於

where sal != 10000

<

小於

where sal < 10000

<=

小於等於

where sal <= 10000

>

大於

where sal > 10000

>=

大於等於

where sal >= 10000

between and

在指定的兩個值之間

where sal between 1000 and 10000

in()

在數據清單內

where sal in (2000,5000,10000)

not in()

不在數據清單內

where sal not in(2000,5000,10000)

like

模糊查詢

where name like ‘a%’

is NULL

提取空值的數據

where sal is NULL

is NOT NULL

提取不是空值的數據

where sal is NOT NULL

like 模糊查詢時,可以結合通配符進行查詢:

“_” 代表任意的單個字符,like ‘a_’表示找出以a開頭後面還有一個字符的數據。

“%”代表任意的0-n個字符,like ‘a%’表示找出以’a’開頭,後面隨意的數據。

4.2 邏輯運算符

查詢條件也可以使用邏輯運算符來組合:與、或、非:

and 邏輯與

or 邏輯或

not 邏輯非

5 排序

查詢結果經常需要排序,排序分爲升序和降序。可以使用order by 子句來進行排序:

order by 字段名/別名/序號

order by後面可以跟多個拍尋條件,但是只有在前面的條件相等的情況下,纔會考慮後面的。

 

6、函數

函數提供了某種功能,比如NVL()函數提供了對空值的處理。有些功能數據庫提供了,開發的語言也提供了 類似功能的函數,可以根據需求進行選擇。函數分爲單行函數和多行函數(分組函數),單行函數就是輸入一條數據,輸出一條數據,多行數據就是輸入多條數據,輸出一條數據。

6.1 單行函數

單行函數分爲:

1、字符函數,處理字符串類型的函數(類似C語言的string.h中的函數)。

2、數值函數,處理數值類型的函數。

3、日期函數,處理日期類型的函數。

4、轉換函數,數值、日期、字符三種類型數據的轉換。

5、其他函數,一些輔助函數,比如nvl(),空值替換函數。

6.1.1 字符函數

LOWER    ——轉換所有大寫字母爲小寫。

UPPER     ——轉換所有小寫字符爲大寫。

INITCAP   ——首字母大寫,其他字母小寫。

CONCAT   ——連接兩個字符串,這個函數基本不用,使用“||”代替。

SUBSTR    ——截取字符串,獲取字符串的一部分。

LENGTH   ——獲取字符串的長度。

6.1.2 數值函數

round()     ——四捨五入。

trunc()     ——全部舍。

6.1.3 日期函數

round()    ——日期的四捨五入

trunc()    ——日期的全部舍。

Months_between()  ——計算兩個日期間隔了多少個月。

6.1.4 轉換函數

轉換函數用於文本、日期、數值三者之間的類型轉換,這種轉換隻發生在字符和日期之間或者數值和字符之間。

1、字符類型和日期類型之間的轉換函數

to_date()     ——字符轉日期。

to_char()    ——日期轉字符。

to_date(‘文本格式的日期’,’日期格式’),其中,日期的格式如下:

Y    代表年,一般用 ‘yyyy’代表4位年,’yy’代表兩位年

M    代表月,一般用’MM’代表2位月,不足會處理。

DD  代表日,一般用DD代表2位日。

H    代表小時,一般用’HH24’代表24小時制的2位小時。

MI    分

S      秒,一般用’SS’代表2位秒。

例如:

to_date(‘2019-3-17 10:10:10’,’YYYY-MM-DD HH24:MI:SS’)

to_char(stsdate(),’yyyy-mm-dd’) 

 

2、數值型和字符型的轉換函數

to_char()      ——數值轉字符。

to_number()   ——字符轉數值。

to_char(數值,’數值格式’),格式如下:

9   表示這一位是數字,沒有就空着。

0   表示這是一位數字,沒有就補0.

$    貨幣美元符號。

L    本地貨幣符號。

.     小數點

,     千分位

to_char(1202,’000,000.00$’)  表示將1202轉成字符,結果是: 001,202.00$。

 

單行函數可以無限層嵌套,計算的次序是從內到外:

round(nvl(commission_pct,0),2)  //函數嵌套

6.2 分組函數(多行函數)

常見的分組函數如下:

avg()   ——取平均值,只能用於數值型。

count()  ——總數,用於所有類型。

max()    ——最大值,用於所有類型。

min()    ——最小值,用於所有類型。

sum()    ——求和,只能數值型。

分組函數會自動過濾空值,如果需要考慮空值,需要藉助nvl()函數來替換空值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章