国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQL的詳細語法介紹——對于學習數據庫最基礎知識一

2024-07-21 02:11:27
字體:
來源:轉載
供稿:網友
select
用途:

 從指定表中取出指定的列的數據

語法:

 

select column_name(s) from table_name

 

解釋:

從數據庫中選取資料列,并允許從一或多個資料表中,選取一或多個資料列或資料行。select 陳述式的完整語法相當復雜,但主要子句可摘要為:

select select_list
[ into new_table ]
from table_source
[ where search_condition ]
[ group by group_by_expression ]
[ having search_condition ]
[ order by order_expression [ asc | desc ] ]

例:

 “persons” 表中的數據有

lastname

firstname

address

city

hansen

ola

timoteivn 10

sandnes

svendson

tove

borgvn 23

sandnes

pettersen

kari

storgt 20

stavanger

選出字段名” lastname”、” firstname” 的數據

select lastname,firstname from persons

返回結果:

lastname

firstname

hansen

ola

svendson

tove

pettersen

kari

選出所有字段的數據

select * from persons

返回結果:

 

lastname

firstname

address

city

hansen

ola

timoteivn 10

sandnes

svendson

tove

borgvn 23

sandnes

pettersen

kari

storgt 20

stavanger

 

 

 
where
用途:

被用來規定一種選擇查詢的標準

語法:

select column from table where column condition value

下面的操作符能被使用在where中:

=,<>,>,<,>=,<=,between,like

注意: 在某些sql的版本中不等號< >能被寫作為!=

解釋:

  select語句返回where子句中條件為true的數據

例:

從” persons”表中選出生活在” sandnes” 的人

select * from persons where city='sandnes'

 "persons" 表中的數據有:

lastname

firstname

address

city

year

hansen

ola

timoteivn 10

sandnes

1951

svendson

tove

borgvn 23

sandnes

1978

svendson

stale

kaivn 18

sandnes

1980

pettersen

kari

storgt 20

stavanger

1960

返回結果:

lastname

firstname

address

city

year

hansen

ola

timoteivn 10

sandnes

1951

svendson

tove

borgvn 23

sandnes

1978

svendson

stale

kaivn 18

sandnes

1980

 

 

 
and & or
用途:

在where子句中and和or被用來連接兩個或者更多的條件

解釋:

and在結合兩個布爾表達式時,只有在兩個表達式都為 true 時才傳回 true

  or在結合兩個布爾表達式時,只要其中一個條件為 true 時,or便傳回 true

例:
  "persons" 表中的原始數據:
lastname

firstname

address

city

hansen

ola

timoteivn 10

sandnes

svendson

tove

borgvn 23

sandnes

svendson

stephen

kaivn 18

sandnes

  用and運算子來查找"persons" 表中firstname為”tove”而且lastname為” svendson”的數據

select * from persons

where firstname='tove'

and lastname='svendson'

返回結果:

lastname

firstname

address

city

svendson

tove

borgvn 23

sandnes

用or運算子來查找"persons" 表中firstname為”tove”或者lastname為” svendson”的數據

select * from persons

where firstname='tove'

or lastname='svendson'

返回結果:

lastname

firstname

address

city

svendson

tove

borgvn 23

sandnes

svendson

stephen

kaivn 18

sandnes

  你也能結合and和or (使用括號形成復雜的表達式),如:

select * from persons where

(firstname='tove' or firstname='stephen')

and lastname='svendson'

返回結果:

lastname

firstname

address

city

svendson

tove

borgvn 23

sandnes

svendson

stephen

kaivn 18

sandnes

 
between…and
用途:

 指定需返回數據的范圍

語法:

select column_name from table_name

where column_name

between value1 and value2

例:

“persons”表中的原始數據

lastname

firstname

address

city

hansen

ola

timoteivn 10

sandnes

nordmann

anna

neset 18

sandnes

pettersen

kari

storgt 20

stavanger

svendson

tove

borgvn 23

sandnes

用between…and返回lastname為從”hansen”到”pettersen”的數據:

select * from persons where lastname

between 'hansen' and 'pettersen'

返回結果:

lastname

firstname

address

city

hansen

ola

timoteivn 10

sandnes

nordmann

anna

neset 18

sandnes

pettersen

kari

storgt 20

stavanger

 

為了顯示指定范圍之外的數據,也可以用not操作符:

select * from persons where lastname

not between 'hansen' and 'pettersen'

返回結果:

lastname

firstname

address

city

svendson

tove

borgvn 23

sandnes

 

 
distinct
用途:

 distinct關鍵字被用作返回唯一的值

語法:

select distinct column-name(s) from table-name

解釋:

 當column-name(s)中存在重復的值時,返回結果僅留下一個

例:

“orders”表中的原始數據

company

ordernumber

sega

3412

w3schools

2312

trio

4678

w3schools

6798

用distinct關鍵字返回company字段中唯一的值:

select distinct company from orders

返回結果:

company

sega

w3schools

trio

 

 
order by
用途:

指定結果集的排序

語法:

select column-name(s) from table-name order by { order_by_expression [ asc | desc ] }

解釋:

 指定結果集的排序,可以按照asc(遞增方式排序,從最低值到最高值)或者desc(遞減方式排序,從最高值到最低值)的方式進行排序,默認的方式是asc

例:

“orders”表中的原始數據:

company

ordernumber

sega

3412

abc shop

5678

w3schools

2312

w3schools

6798

按照company字段的升序方式返回結果集:

select company, ordernumber from orders

order by company

返回結果:

company

ordernumber

abc shop 

5678

sega

3412

w3schools

6798

w3schools

2312

按照company字段的降序方式返回結果集:

select company, ordernumber from orders

order by company desc

返回結果:

company

ordernumber

w3schools

6798

w3schools

2312

sega

3412

abc shop

5678

 

 
group by
用途:

對結果集進行分組,常與匯總函數一起使用。

語法:

select column,sum(column) from table group by column

例:

“sales”表中的原始數據:

company

amount

w3schools

5500

ibm

4500

w3schools

7100

按照company字段進行分組,求出每個company的amout的合計:

select company,sum(amount) from sales

group by company

返回結果:

company

sum(amount)

w3schools

12600

ibm

4500

 

 
having
用途:

指定群組或匯總的搜尋條件。

語法:

select column,sum(column) from table

group by column

having sum(column) condition value

解釋:

having 通常與 group by 子句同時使用。不使用 group by 時,having 則與 where 子句功能相似。

例:

“sales”表中的原始數據:

company

amount

w3schools

5500

ibm

4500

w3schools

7100

按照company字段進行分組,求出每個company的amout的合計在10000以上的數據:

select company,sum(amount) from sales

group by company having sum(amount)>10000

返回結果:

company

sum(amount)

w3schools

12600

 

 
join
用途:

當你要從兩個或者以上的表中選取結果集時,你就會用到join。

例:

“employees”表中的數據如下,(其中id為主鍵):

id

name

01

hansen, ola

02

svendson, tove

03

svendson, stephen

04

pettersen, kari

“orders”表中的數據如下:

id

product

01

printer

03

table

03

chair

用employees的id和orders的id相關聯選取數據:

select employees.name, orders.product

from employees, orders

where employees.id = orders.id

返回結果:

name

product

hansen, ola

printer

svendson, stephen

table

svendson, stephen

chair

或者你也可以用join關鍵字來完成上面的操作:

select employees.name, orders.product

from employees

inner join orders

on employees.id = orders.id

inner join的語法:

select field1, field2, field3

from first_table

inner join second_table

on first_table.keyfield = second_table.foreign_keyfield

解釋:

       inner join返回的結果集是兩個表中所有相匹配的數據。

 

left join的語法:

select field1, field2, field3

from first_table

left join second_table

on first_table.keyfield = second_table.foreign_keyfield

用”employees”表去左外聯結”orders”表去找出相關數據:

select employees.name, orders.product

from employees

left join orders

on employees.id = orders.id

返回結果:

name

product

hansen, ola

printer

svendson, tove

 

svendson, stephen

table

svendson, stephen

chair

pettersen, kari

 

解釋:

       left join返回”first_table”中所有的行盡管在” second_table”中沒有相匹配的數據。

 

right join的語法:

select field1, field2, field3

from first_table

right join second_table

on first_table.keyfield = second_table.foreign_keyfield

用”employees”表去右外聯結”orders”表去找出相關數據:

select employees.name, orders.product

from employees

right join orders

on employees.id = orders.id

返回結果:

name

product

hansen, ola

printer

svendson, stephen

table

svendson, stephen

chair

解釋:

       right join返回” second_table”中所有的行盡管在”first_table”中沒有相匹配的數據。

 
alias
用途:

可用在表、結果集或者列上,為它們取一個邏輯名稱

語法:

給列取別名:

select column as column_alias from table

       給表取別名:

select column from table as table_alias

例:

“persons”表中的原始數據:

lastname

firstname

address

city

hansen

ola

timoteivn 10

sandnes

svendson

tove

borgvn 23

sandnes

pettersen

kari

storgt 20

stavanger

運行下面的sql:

select lastname as family, firstname as name

from persons

返回結果:

family

name

hansen

ola

svendson

tove

pettersen

kari

運行下面的sql:

select lastname, firstname

from persons as employees

返回結果:

employees中的數據有:

lastname

firstname

hansen

ola

svendson

tove

pettersen

kari

 

 
insert into
用途:

       在表中插入新行

語法:

       插入一行數據

insert into table_name

values (value1, value2,....)

       插入一行數據在指定的字段上

insert into table_name (column1, column2,...)

values (value1, value2,....)  

例:

“persons”表中的原始數據:

lastname

firstname

address

city

pettersen

kari

storgt 20

stavanger

運行下面的sql插入一行數據:

insert into persons 

values ('hetland', 'camilla', 'hagabakka 24', 'sandnes')

插入后”persons”表中的數據為:

lastname

firstname

address

city

pettersen

kari

storgt 20

stavanger

hetland

camilla

hagabakka 24

sandnes

運行下面的sql插入一行數據在指定的字段上:

insert into persons (lastname, address)

values ('rasmussen', 'storgt 67')

插入后”persons”表中的數據為:

lastname

firstname

address

city

pettersen

kari

storgt 20

stavanger

hetland

camilla

hagabakka 24

sandnes

rasmussen

 

storgt 67

 

 

 
update
用途:

       更新表中原有數據

語法:

update table_name set column_name = new_value

where column_name = some_value

例:

“person”表中的原始數據:

lastname

firstname

address

city

nilsen

fred

kirkegt 56

stavanger

rasmussen

 

storgt 67

 

運行下面的sql將person表中lastname字段為”rasmussen”的firstname更新為”nina”:

update person set firstname = 'nina'

where lastname = 'rasmussen'

更新后”person”表中的數據為:

lastname

firstname

address

city

nilsen

fred

kirkegt 56

stavanger

rasmussen

nina

storgt 67

 

同樣的,用update語句也可以同時更新多個字段:

update person

set address = 'stien 12', city = 'stavanger'

where lastname = 'rasmussen'

更新后”person”表中的數據為:

lastname

firstname

address

city

nilsen

fred

kirkegt 56

stavanger

rasmussen

nina

stien 12

stavanger

 

 
delete
用途:

       刪除表中的數據

語法:

delete from table_name where column_name = some_value

例:

“person”表中的原始數據:

lastname

firstname

address

city

nilsen

fred

kirkegt 56

stavanger

rasmussen

nina

stien 12

stavanger

刪除person表中lastname為”rasmussen”的數據:

delete from person where lastname = 'rasmussen'

執行刪除語句后”person”表中的數據為:

lastname

firstname

address

city

nilsen

fred

kirkegt 56

stavanger

 

 
create table
用途:

       建立新的資料表。

語法:

create table table_name

(

column_name1 data_type,

column_name2 data_type,

.......

)

例:

創建一張叫“person”的表,該表有4個字段"lastname", "firstname", "address", "age":

create table person 

(

lastname varchar,

firstname varchar,

address varchar,

age int

)

如果想指定字段的最大存儲長度,你可以這樣:

create table person 

(

lastname varchar(30),

firstname varchar(30),

address varchar(120),

age int(3) 

)

下表中列出了在sql的一些數據類型:

data type

description

integer(size)
int(size)
smallint(size)
tinyint(size)

hold integers only. the maximum number of digits are specified in parenthesis.

decimal(size,d)
numeric(size,d)

hold numbers with fractions. the maximum number of digits are specified in "size". the maximum number of digits to the right of the decimal is specified in "d".

char(size)

holds a fixed length string (can contain letters, numbers, and special characters). the fixed size is specified in parenthesis.

varchar(size)

holds a variable length string (can contain letters, numbers, and special characters). the maximum size is specified in parenthesis.

date(yyyymmdd)

holds a date

 

 
alter table
用途:

       在已經存在的表中增加后者移除字段

語法:

alter table table_name

add column_name datatype

alter table table_name

drop column column_name

注意:某些數據庫管理系統不允許移除表中的字段

 

例:

“person”表中的原始數據:

lastname

firstname

address

pettersen

kari

storgt 20

 

在person表中增加一個名為city的字段:

alter table person add city varchar(30)

增加后表中數據如下:

lastname

firstname

address

city

pettersen

kari

storgt 20

 

 

移除person表中原有的address字段:

alter table person drop column address

移除后表中數據如下:

lastname

firstname

city

pettersen

kari

 

 

 
drop table
用途:

       在數據庫中移除一個數據表定義及該數據表中的所有資料、索引、觸發程序、條件約束及權限指定。

語法:

drop table table_name

 

 
create database
用途:

       建立新的數據庫.

語法:

create database database_name

 

 
drop database
用途:

       移除原有的數據庫

語法:

drop database database_name

 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝清县| 昆明市| 曲松县| 寿宁县| 察哈| 金沙县| 金门县| 宁晋县| 年辖:市辖区| 紫阳县| 光泽县| 电白县| 江安县| 宣武区| 汤阴县| 商水县| 武汉市| 金溪县| 洞头县| 文成县| 南江县| 永新县| 甘泉县| 南昌市| 宾川县| 定南县| 鹿邑县| 中牟县| 南城县| 信宜市| 广州市| 翁源县| 明光市| 嫩江县| 左权县| 元谋县| 昌图县| 红安县| 栾城县| 江陵县| 南乐县|