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语言全部关键字详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: quercus mysql_14.5 Q
- 下一篇: 树莓派查看mysql的密码_树莓派安装M