SQLServer學習筆記(3)基本語法

2021-08-23 14:23:56 字數 3880 閱讀 4586

top子句:

select top number|percent column_name(s)

from table_name

示例:

select top 2 * from persons

select top 50 percent * from persons

like 操作符:

select column_name(s)

from table_name

where column_name like pattern

示例:

select * from persons

where city like 'n%'

select * from persons

where city like '%lon%'

select * from persons

where city not like '%lon%'

sql萬用字元:

萬用字元描述替代乙個或多個字元

僅替代乙個字元

[charlist]

字元列中的任何單一字元

[^charlist]

或者[!charlist]

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

示例:

like 'ne%' 

like '_eorge'

like 'c_r_er'

like '[!aln]%'

in 操作符:

select column_name(s)

from table_name

where column_name in (value1,value2,...)

in操作符允許where子句中規定多個值

between 操作符:

select column_name(s)

from table_name

where column_name

(not) between value1 and value2

(不同資料庫對於between......and操作是否包括兩端值的情況不同,需要驗證)

alias語法:

select column_name(s)

from table_name

as alias_name

示例:

select po.orderid, p.lastname, p.firstname

from persons as p, product_orders as po

where p.lastname='adams' and p.firstname='john'

select column_name as alias_name

from table_name

示例:

select lastname as family, firstname as name

from persons

(inener) join 關鍵字:

select column_name(s)

from table_name1

inner join table_name2

on table_name1.column_name=table_name2.column_name

用於根據兩個或多個表中的列之間的關係,從這些表中查詢資料

示例:

select persons.lastname, persons.firstname, orders.orderno

from persons

inner join orders

on persons.id_p = orders.id_p

order by persons.lastname

等同於:

select persons.lastname, persons.firstname, orders.orderno

from persons, orders

where persons.id_p = orders.id_p

left join 關鍵字:

select column_name(s)

from table_name1

left join table_name2

on table_name1.column_name=table_name2.column_name

left join 關鍵字會從左表 (table_name1) 那裡返回所有的行,即使在右表 (table_name2) 中沒有匹配的行

right join 關鍵字:

select column_name(s)

from table_name1

right join table_name2

on table_name1.column_name=table_name2.column_name

right join 關鍵字會右表 (table_name2) 那裡返回所有的行,即使在左表 (table_name1) 中沒有匹配的行

full join 關鍵字:

select column_name(s)

from table_name1

full join table_name2

on table_name1.column_name=table_name2.column_name

只要其中某個表存在匹配,full join 關鍵字就會返回行

union 操作符:

select column_name(s) from table_name1

union

select column_name(s) from table_name2

用於合併兩個或多個 select 語句的結果集,union 內部的 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 select 語句中的列的順序必須相同

union all 操作符:

select column_name(s) from table_name1

union all

select column_name(s) from table_name2

預設地,union 操作符選取不同的值。如果允許重複的值,請使用 union all

insert into 語句:

select column_name(s)

into new_table_name [in externaldatabase]

from old_tablename

常用於建立表的備份復件或者用於對記錄進行存檔

示例:

select *

into persons in 'backup.mdb'

from persons

select lastname,firstname

into persons_backup

from persons

where city='beijing'

select persons.lastname,orders.orderno

into persons_order_backup

from persons

inner join orders

on persons.id_p=orders.id_p

線性基學習筆記

線性基是幹嘛的呢?給定n個數,求所有數的異或和最大是多少?求解這類問題的時候,就需要線性基了 個人感覺線性基本身就一種貪心。首先定義ba se i bas e i 表示最高位1在i位的數是什麼 對於新進來的數tm p tmp 我們先找出他最高位上的1,假設為第 j j 位,然後看一下ba se j ...

線性基 學習筆記

includeusing namespace std using ll long long const int maxn 5e5 5 原來的數 const int maxbit 63 ll a maxn 原來的數 ll p maxbit p j 第j位為最高位1的數 最高位1在第j位的數 int m...

線性基 學習筆記

按位計算,如果相同記為0,不同記為1。如果,a b c,c b a 交換律結合律 對於任何數,x x 0,x 0 x 對 於一 段序列a n,異或 和為a1 a2 an 對於一段序列a n,異或和為a 1 a 2 a n 對於一段序列 an 異或和為 a1 a2 an 設t s,所有 這樣的子 集t...