日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL查询语种关键字_SQL——SQL语言全部关键字详解

發布時間:2025/3/20 数据库 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL查询语种关键字_SQL——SQL语言全部关键字详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.net/quinnnorris/article/details/71056445

數據庫中我們做常用的就是SQL基本查詢語言,甚至有些人認為數據庫就是SQL,SQL就是數據庫。雖然這種觀點是錯誤的,但是也確實從一個方面體現了這種面向結果的查詢語言的重要性。

SQL語言基本定義

基本類型

SQL表中支持很多固有類型,包括:

類型含義

char(n)

存放固定長度的字符串,用戶指定長度為n。如果沒有使用n個長度則會在末尾添加空格。

varchar(n)

可變長度的字符串,用戶指定最大長度n。char的改進版,大多數情況下我們最好使用varchar。

int

整數類型

smallint

小整數類型

numeric(p,d)

定點數,精度由用戶指定。這個數有p位數字(包括一個符號位)d位在小數點右邊。

real ,double precision

浮點數和雙精度浮點數。

float(n)

精度至少位n位的浮點數

特殊關鍵字

SQL中用很多關鍵字來表達CRUD的操作(增刪改查)。在這之外有很多特殊的關鍵字用來表示一些其他的含義,在總結SQL之前我們有必要進行一些了解。

類型含義示例

primary key

主鍵,后面括號中是作為主鍵的屬性

primary key(student_id)

foreign key references

外鍵,括號中為外鍵,references后為外鍵的表

foreign key(course_id)?references?Course

not null

不為空,前面為屬性的定義

name varchar(10)?not null

SQL插入/刪除/修改語句

SQL語法使用最多的就是查詢,除了查找語句之外,其他的語句內容都很少。

類型含義

create table

創建一張表

insert into…values

向表中插入一條信息

delete from

從表中刪除一條信息

update…set…where

在where的位置,更新內容為set的值

drop table

刪除表

alter table…add

向表中添加某個屬性

alter table…drop

將表中的某個屬性刪除

create table

create?table?Student(

ID?varchar(20)?not?null,

name?varchar(10)?not?null,

age?int,

class?varchar(50),

primary?key?(ID));

創建一張叫做Student的表,表中有四個屬性,ID,姓名,年齡和班級,么個屬性都有各自的類型。在這張表中主鍵是ID。

insert into…values

insert?into?Student(ID,name,class)

values(10152510302,"Tom","class?1");

向表中添加一行信息,一個名叫Tom的學生的信息,因為age值不是not null,也就不是必須的,所以我們不添加age屬性也沒有問題。

delete from

delete?form?Student

where?name="Tom";

從表中刪除所有名字叫做Tom的信息。如果delete from不寫where查詢條件表示清空這張表。

update…set…where

update?Student

set?age=18

where?name="Tom";

將所有名字叫做Tom的信息的年齡設置為18。

drop table

drop?table?Student;

刪除Student這張表。

alter table…add

alter?table?Student

add?sex?varchar(5);

向表中添加性別屬性,并且將表中以存放的信息的sex值設為null。所有通過這種方式添加的屬性都不能被設置為not null類型。

alter table…drop

alter?table?Student

drop?class;

從表中將class這一列屬性刪除。

SQL查詢語句

SQL最為常用的就是查詢,我們使用數據庫并從中查找出我們希望的內容。在這個過程中,我們可能要編寫很復雜的語句。這里我們分類別詳細的總結具體的查詢情況。

單關系查詢

單關系查詢是指只一張表中的內容查詢有關信息,不涉及其他的表,這是查詢中最為基本的一種情況。我們通過這種情況來總結一些基本的SQL語句編寫方法。下面先給出一些涉及到的關鍵字。

類型含義

select

表示要查找出的表所含有的屬性

from

表示要操作的表

where

判斷條件,根據該判斷條件選擇信息

distinct

在select后加入關鍵字distinct表示將結果去重

all

在select后加入關鍵字all表示不去重(默認)

and

在where中使用and表示將判斷條件連接起來

or

在where中使用or表示判斷條件多選一

not

在where中使用not表示判斷條件取反

在下面的查詢語句中,我們仍舊使用Student這張表來進行操作。先回顧一下這張表的字段。

create?table?Student(

ID?varchar(20)?not?null,

name?varchar(10)?not?null,

age?int,

class?varchar(50),

primary?key?(ID));

示例:

select?name?distinct

from?Student

where?age=18?and?class="A";

在Student這張表中查詢所有年齡是18歲,并且班級是A的學生的名字,并將結果去重。

多關系查詢

多關系查詢是指在多個表中通過一些操作查找出希望的信息。除去上面已有的關鍵字,我們還會使用到下面這些。

類型含義

A,B

在from后面通過逗號連接多張表,表示將這些表進行笛卡兒積運算

natural join

將natural join關鍵字前后的兩張表進行自然連接運算

A join B using(c)

將A和B通過c屬性自然連接

為了能夠進行多關系查詢,我們需要有除了Student的另外一張表。再建一張表,表示上數學課的所有學生的信息和成績情況。(實際上這兩張表建的都不好,不能滿足基本的幾個范式,但是為了方便起見用來舉例)

create?table?Math(

ID?varchar(20)?not?null,

name?varchar(10)?not?null,

sex?varchar(5),

score?int,

primary?key(ID));

示例:

select?score

form?Student?natural?join?Math

where?class<>"B"?and?sex="men"

將Student表和Math表自然連接,所得的結果查詢出不是B班的男生的成績。

附加運算查詢

我們已經總結了單關系和多關系運算的查詢方法,但是只有這些

類型含義

as

將as前的關系起一個別名,在此語句中,可以用別名來代指這個表

*

在select中通過: “表名.*” 來表示查找出這個表中所有的屬性

order by

讓查詢結果中的信息按照給定的屬性排序(默認升序,上小下大)

desc

在order by之后的屬性后使用,表示采用降序排序

asc

在order by之后的屬性后使用,表示采用升序排序(默認)

between

在where中使用between表示一個數在兩個數值之間取值

not between

between的反義詞,在兩個數之外取值

union/union all

將兩個SQL語句做并運算,并且自動去重,添加all表示不去重

intersect/intersect all

將兩個SQL語句做交運算,并且自動去重,添加all表示不去重

except/except all

將兩個SQL語句做差運算,并且自動去重,添加all表示不去重

is null

在where中使用is null表示這個值是空值

is not null

在where中使用is not null表示這個值不是空值

示例:

select?S.*

from?Student?as?S,Math?as?M

where?S.ID?=?M.ID

將Student和Math兩張表做笛卡兒積,結果中所有ID相同的信息,取出他們屬于Student屬性的部分作為結果。

select?name

from?Student?natural?join?Math

where?class="A"?and?sex="women"

order?by?score?desc;

在Student和Math自然連接的結果中,找出A班的女生的姓名,并且按照成績的降序把名字排列出來。

select?name

from?Math

where?score?between?60?and?90;

order?by?score?asc;

在Math表中,找出成績在60分到90分之間的學生姓名,并且將姓名按照成績的升序排列出來。

(select?name

from?Student?natural?join?Math

where?class="A"?and?sex="women"

order?by?score?desc)

union

(select?name

from?Math

where?score?between?60?and?90;

order?by?score);

將上面兩個查出來的結果做并集,并且去重。

select?name

from?Student

where?age?is?null;

在Student表中記錄的年齡值未填寫(為空)的所有人的姓名查出來。

聚集函數運算查詢

已經總結了SQL語句的很多關鍵字,現在我們可任意的進行排序、查找。但是如果我們要獲得一些與數據相關的統計信息,但是這些信息在數據庫中沒有,那么我們要使用SQL中的聚集函數來進行操作。

類型含義

avg

平均值

min

最小值

max

最大值

sum

總和

count

計數

distinct

表示將distinct后的屬性去重

group by

將在group by上取值相同的信息分在一個組里

having

對group by產生的分組進行篩選,可以使用聚集函數

示例:

select?class,avg(score)?as?avg_score

from?Student?natural?join?Math

group?by?class

having?avg(score)?

在Student與Math表自然連接的結果中按照班級分組,并且去除那些班級的平均成績沒到60的班級,剩下的班級和該班成績的平均數(該班成績的平均數這個屬性被重命名為avg_score)作為一張新表被輸出出來。

總結

以上是生活随笔為你收集整理的MySQL查询语种关键字_SQL——SQL语言全部关键字详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。