當前位置:首頁 » 編程語言 » 曾賢志sql使用教程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

曾賢志sql使用教程

發布時間: 2023-05-18 19:44:51

sql的基本操作

1、說明:創建資料庫

CREATE DATABASE database-name

2、說明:刪除資料庫

drop database dbname

3、說明:備份sql server

--- 創建 備份數據的 device

USE master

EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'

--- 開始 備份

BACKUP DATABASE pubs TO testBack

4、說明:創建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根據已有的表創建新表:

A:create table tab_new like tab_old (使用舊表創建新表)

B:create table tab_new as select col1,col2… from tab_old definition only

5、說明:

刪除新表:drop table tabname

6、說明:

增加一個列:Alter table tabname add column col type

註:列增加後將不能刪除。DB2中列加上後數據類型也不能改變,唯一能改變的是增加varchar類型的長度。

7、說明:

添加主鍵:Alter table tabname add primary key(col)

說明:

刪除主鍵:Alter table tabname drop primary key(col)

8、說明:

創建索引:create [unique] index idxname on tabname(col….)

刪除索引:drop index idxname

註:索引是不可更改的,想更改必須刪除重新建。

9、說明:

創建視圖:create view viewname as select statement

刪除視圖:drop view viewname

10、說明:幾個簡單的基本的sql語句

選擇:select * from table1 where 范圍

插入:insert into table1(field1,field2) values(value1,value2)

刪除:delete from table1 where 范圍

更新:update table1 set field1=value1 where 范圍

查找:select * from table1 where field1 like 』%value1%』 ---like的語法很精妙,查資料!

排序:select * from table1 order by field1,field2 [desc]

總數:select count * as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

11、說明:幾個高級查詢運算詞

A: UNION 運算符

UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。

B: EXCEPT 運算符

EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。

C: INTERSECT 運算符

INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重復行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。

註:使用運算詞的幾個查詢結果行必須是一致的。

12、說明:使用外連接

A、left outer join:

左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

B:right outer join:

右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。

C:full outer join:

全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。

其次,大家來看一些不錯的sql語句

1、說明:復製表(只復制結構,源表名:a 新表名:b) (Access可用)

法一:select * into b from a where 1<>1

法二:select top 0 * into b from a

2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用)

insert into b(a, b, c) select d,e,f from b;

3、說明:跨資料庫之間表的拷貝(具體數據使用絕對路徑) (Access可用)

insert into b(a, b, c) select d,e,f from b in 『具體資料庫』 where 條件

例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

4、說明:子查詢(表名1:a 表名2:b)

select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

5、說明:顯示文章、提交人和最後回復時間

select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、說明:外連接查詢(表名1:a 表名2:b)

select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、說明:在線視圖查詢(表名1:a )

select * from (SELECT a,b,c FROM a) T where t.a > 1;

8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 數值1 and 數值2

9、說明:in 的使用方法

select * from table1 where a [not] in (『值1』,』值2』,』值4』,』值6』)

10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息

delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、說明:四表聯查問題:

select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

12、說明:日程安排提前五分鍾提醒

SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5

13、說明:一條sql 語句搞定資料庫分頁

select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位

14、說明:前10條記錄

select top 10 * form table1 where 范圍

15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)

select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表

(select a from tableA ) except (select a from tableB) except (select a from tableC)

17、說明:隨機取出10條數據

select top 10 * from tablename order by newid()

18、說明:隨機選擇記錄

select newid()

19、說明:刪除重復記錄

Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

20、說明:列出資料庫里所有的表名

select name from sysobjects where type='U'

21、說明:列出表裡的所有的

select name from syscolumns where id=object_id('TableName')

22、說明:列示type、vender、pcs欄位,以type欄位排列,case可以方便地實現多重選擇,類似select 中的case。

select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type

顯示結果:

type vender pcs

電腦 A 1

電腦 A 1

光碟 B 2

光碟 A 2

手機 B 3

手機 C 3

23、說明:初始化表table1

TRUNCATE TABLE table1

24、說明:選擇從10到15的記錄

select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc

隨機選擇資料庫記錄的方法(使用Randomize函數,通過SQL語句實現)

存儲在資料庫中的數據來說,隨機數特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP「找個隨機數」然後列印出來。實際上常見的解決方案是建立如下所示的循環:

Randomize

RNumber = Int(Rnd*499) +1

While Not objRec.EOF

If objRec("ID") = RNumber THEN

... 這里是執行腳本 ...

end if

objRec.MoveNext

Wend

這很容易理解。首先,你取出1到500范圍之內的一個隨機數(假設500就是資料庫內記錄的總數)。然後,你遍歷每一記錄來測試ID 的值、檢查其是否匹配RNumber。滿足條件的話就執行由THEN 關鍵字開始的那一塊代碼。假如你的RNumber 等於495,那麼要循環一遍資料庫花的時間可就長了。雖然500這個數字看起來大了些,但相比更為穩固的企業解決方案這還是個小型資料庫了,後者通常在一個資料庫內就包含了成千上萬條記錄。這時候不就死定了?

採用SQL,你就可以很快地找出准確的記錄並且打開一個只包含該記錄的recordset,如下所示:

Randomize

RNumber = Int(Rnd*499) + 1

SQL = "SELECT * FROM Customers WHERE ID = " & RNumber

set objRec = ObjConn.Execute(SQL)

Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email")

不必寫出RNumber 和ID,你只需要檢查匹配情況即可。只要你對以上代碼的工作滿意,你自可按需操作「隨機」記錄。Recordset沒有包含其他內容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時間。

再談隨機數

現在你下定決心要榨乾Random 函數的最後一滴油,那麼你可能會一次取出多條隨機記錄或者想採用一定隨機范圍內的記錄。把上面的標准Random 示例擴展一下就可以用SQL應對上面兩種情況了。

為了取出幾條隨機選擇的記錄並存放在同一recordset內,你可以存儲三個隨機數,然後查詢資料庫獲得匹配這些數字的記錄:

SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3

假如你想選出10條記錄(也許是每次頁面裝載時的10條鏈接的列表),你可以用BETWEEN 或者數學等式選出第一條記錄和適當數量的遞增記錄。這一操作可以通過好幾種方式來完成,但是 SELECT 語句只顯示一種可能(這里的ID 是自動生成的號碼):

SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"

注意:以上代碼的執行目的不是檢查資料庫內是否有9條並發記錄。

隨機讀取若干條記錄,測試過

Access語法:SELECT top 10 * From 表名 ORDER BY Rnd(id)

Sql server:select top n * from 表名 order by newid()

mysql select * From 表名 Order By rand() Limit n

Access左連接語法(最近開發要用左連接,Access幫助什麼都沒有,網上沒有Access的SQL說明,只有自己測試, 現在記下以備後查)

語法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...

使用SQL語句 用...代替過長的字元串顯示

語法:

SQL資料庫:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename

Access資料庫:SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;

Conn.Execute說明

Execute方法

該方法用於執行SQL語句。根據SQL語句執行後是否返回記錄集,該方法的使用格式分為以下兩種:

1.執行SQL查詢語句時,將返回查詢得到的記錄集。用法為:

Set 對象變數名=連接對象.Execute("SQL 查詢語言")

Execute方法調用後,會自動創建記錄集對象,並將查詢結果存儲在該記錄對象中,通過Set方法,將記錄集賦給指定的對象保存,以後對象變數就代表了該記錄集對象。

2.執行SQL的操作性語言時,沒有記錄集的返回。此時用法為:

連接對象.Execute "SQL 操作性語句" [, RecordAffected][, Option]

•RecordAffected 為可選項,此出可放置一個變數,SQL語句執行後,所生效的記錄數會自動保存到該變數中。通過訪問該變數,就可知道SQL語句隊多少條記錄進行了操作。

•Option 可選項,該參數的取值通常為adCMDText,它用於告訴ADO,應該將Execute方法之後的第一個字元解釋為命令文本。通過指定該參數,可使執行更高效。

•BeginTrans、RollbackTrans、CommitTrans方法

這三個方法是連接對象提供的用於事務處理的方法。BeginTrans用於開始一個事物;RollbackTrans用於回滾事務;CommitTrans用於提交所有的事務處理結果,即確認事務的處理。

事務處理可以將一組操作視為一個整體,只有全部語句都成功執行後,事務處理才算成功;若其中有一個語句執行失敗,則整個處理就算失敗,並恢復到處里前的狀態。

BeginTrans和CommitTrans用於標記事務的開始和結束,在這兩個之間的語句,就是作為事務處理的語句。判斷事務處理是否成功,可通過連接對象的Error集合來實現,若Error集合的成員個數不為0,則說明有錯誤發生,事務處理失敗。Error集合中的每一個Error對象,代表一個錯誤信息。

資料引用:http://www.knowsky.com/398670.html

Ⅱ sql入門新手教程是什麼

在關系資料庫實現過程中,第一步是建立關系模式,定義基本表的結構,即該關系模式是哪些屬性組成的,每一屬性的數據類型及數據可能的長度、是否允許為空值以及其它完整性約束條件。

定義基本表:

CREATE TABLE([列級完整性約束條件]

[,[列級完整性約束條件]]…

[,[列級完整性約束條件]]

[,表列級完整性約束條件]);

說明:

1、中是SQL語句必須定義的部分,[]中是SQL語句可選擇的部分,可以省略的。

2、CREATE TABLE表示是SQL的關鍵字,指示本SQL語句的功能。

3、是所要定義的基本表的名稱,一個表可以由一個或若干個屬性(列)組成,但至少有一個屬性,不允許一個屬性都沒有的表,這樣不是空表的含義。

多個屬性定義由圓括弧指示其邊界,通過逗號把各個屬性定義分隔開,各個屬性名稱互不相同,可以採用任意順序排列,一般按照實體或聯系定義屬性的順序排列,關鍵字屬性組在最前面,這樣容易區分,也防止遺漏定義的屬性。

4、每個屬性由列名、數據類型、該列的多個完整性約束條件組成。其中列名一般為屬性的英文名縮寫,在Microsoft Access 2010中也可以採用中文,建議不要這樣做,編程開發時不方便。

5、完整性約束條件,分為列級的完整性約束和表級的完整性約束,如果完整性約束條件涉及該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。

這些完整性約束條件被存入系統的數據字典中,當用戶操作表中數據時由RDBMS自動檢查該操作是否違背這些完整性約束,如果違背則RDBMS拒絕本次操作;

這樣保持了資料庫狀態的正確性和完整性,不需要用戶提供檢查,提高了編程的效率,降低了編程難度。列級的完整性通常為主關鍵字的定義、是否允許為空。表級的完整性約束條件一般為外碼定義。

數據操縱

數據操縱語言是完成數據操作的命令,一般分為兩種類型的數據操縱。

1、數據檢索(常稱為查詢):尋找所需的具體數據。

2、數據修改:插入、刪除和更新數據。

數據操縱語言一般由 INSERT(插入)、 DELETE(刪除)、 UPDATE(更新)、 SELECT(檢索,又稱查詢)等組成。由於 SELECT經常使用,所以一般將它稱為查詢(檢索)語言並單獨出現。

Ⅲ 使用SQL語句創建存儲過程

使用SQL語句創建存儲的具體過程如下:

1、首先,打開企業管理器,選擇【工具】-【查詢分析器】:

Ⅳ 怎樣使用SQL SERVER新建立一個資料庫

1、點擊【新建查詢】按鈕櫻敏,打開代碼編寫面板。創建資料庫以及對資料庫的操作都可以通過在這里編寫代碼執行。
2、創建一個資料庫一般須創建一個數據文脊兄枝件和一個日塵弊志文件,用滑鼠操作創建時我們也已經看見。下面介紹,創建資料庫命令格式【create database 資料庫名】。數據文件的後綴為.mdf,日誌文件的後綴為.ldf。如圖:

3、創建資料庫源代碼:
create database test
on
primary(name=test,
filename='E:\test\test.mdf',
size=4mb,
maxsize=10mb,
filegrowth=2mb
)
log on
(name=testlog,
filename='E:\test\testlog.ldf',
size=1mb,
maxsize=5mb,
filegrowth=1mb
)

Ⅳ SQL怎麼用

掌握SQL四條最基本的數據操作語句:Insert,Select,Update和Delete。

練掌握SQL是資料庫用戶的寶貴財 富。掌握四條最基本的數據操作語句—SQL的核心功能—來依次介紹比較操作符、選擇斷言以及三值邏輯。當你完成這些學習後,顯然你已經開始算是精通SQL了。

在我們開始之前,先使用CREATE TABLE語句來創建一個表(如圖1所示)。DDL語句對資料庫對象如表、列和視進行定義。它們並不對表中的行進行處理,這是因為DDL語句並不處理資料庫中實際的數據。這些工作由另一類SQL語句—數據操作語言(DML)語句進行處理。

SQL中有四種基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由於這是大多數SQL用戶經常用到的,我們有必要在此對它們進行一一說明。在圖1中我們給出了一個名為EMPLOYEES的表。其中的每一行對應一個特定的雇員記錄。請熟悉這張表,我們在後面的例子中將要用到它。

INSERT語句

用戶可以用INSERT語句將一行記錄插入到指定的一個表中。例如,要將雇員John Smith的記錄插入到本例的表中,可以使用如下語句:

INSERT INTO EMPLOYEES VALUES

('Smith','John','1980-06-10',

'Los Angles',16,45000);

通過這樣的INSERT語句,系統將試著將這些值填入到相應的列中。這些列按照我們創建表時定義的順序排列。在本例中,第一個值「Smith」將填到第一個列LAST_NAME中;第二個值「John」將填到第二列FIRST_NAME中……以此類推。

我們說過系統會「試著」將值填入,除了執行規則之外它還要進行類型檢查。如果類型不符(如將一個字元串填入到類型為數字的列中),系統將拒絕這一次操作並返回一個錯誤信息。

如果SQL拒絕了你所填入的一列值,語句中其他各列的值也不會填入。這是因為SQL提供對事務的支持。一次事務將資料庫從一種一致性轉移到另一種一致性。如果事務的某一部分失敗,則整個事務都會失敗,系統將會被恢復(或稱之為回退)到此事務之前的狀態。

回到原來的INSERT的例子,請注意所有的整形十進制數都不需要用單引號引起來,而字元串和日期類型的值都要用單引號來區別。為了增加可讀性而在數字間插入逗號將會引起錯誤。記住,在SQL中逗號是元素的分隔符。

同樣要注意輸入文字值時要使用單引號。雙引號用來封裝限界標識符。

對於日期類型,我們必須使用SQL標准日期格式(yyyy-mm-dd),但是在系統中可以進行定義,以接受其他的格式。當然,2000年臨近,請你最好還是使用四位來表示年份。

既然你已經理解了INSERT語句是怎樣工作的了,讓我們轉到EMPLOYEES表中的其他部分:

INSERT INTO EMPLOYEES VALUES

('Bunyan','Paul','1970-07-04',

'Boston',12,70000);

INSERT INTO EMPLOYEES VALUES

('John','Adams','1992-01-21',

'Boston',20,100000);

INSERT INTO EMPLOYEES VALUES

('Smith','Pocahontas','1976-04-06',

'Los Angles',12,100000);

INSERT INTO EMPLOYEES VALUES

('Smith','Bessie','1940-05-02',

'Boston',5,200000);

INSERT INTO EMPLOYEES VALUES

('Jones','Davy','1970-10-10',

'Boston',8,45000);

INSERT INTO EMPLOYEES VALUES

('Jones','Indiana','1992-02-01',

'Chicago',NULL,NULL);

在最後一項中,我們不知道Jones先生的工薪級別和年薪,所以我們輸入NULL(不要引號)。NULL是SQL中的一種特殊情況,我們以後將進行詳細的討論。現在我們只需認為NULL表示一種未知的值。

有時,像我們剛才所討論的情況,我們可能希望對某一些而不是全部的列進行賦值。除了對要省略的列輸入NULL外,還可以採用另外一種INSERT語句,如下:

INSERT INTO EMPLOYEES(

FIRST_NAME, LAST_NAME,

HIRE_DATE, BRANCH_OFFICE)

VALUE(

'Indiana','Jones',

'1992-02-01','Indianapolis');

這樣,我們先在表名之後列出一系列列名。未列出的列中將自動填入預設值,如果沒有設置預設值則填入NULL。請注意我們改變了列的順序,而值的順序要對應新的列的順序。如果該語句中省略了FIRST_NAME和LAST_NAME項(這兩項規定不能為空),SQL操作將失敗。

讓我們來看一看上述INSERT語句的語法圖:

INSERT INTO table

[(column { ,column})]

VALUES

(columnvalue [{,columnvalue}]);

和前一篇文章中一樣,我們用方括弧來表示可選項,大括弧表示可以重復任意次數的項(不能在實際的SQL語句中使用這些特殊字元)。VALUE子句和可選的列名列表中必須使用圓括弧。

SELECT語句

SELECT語句可以從一個或多個表中選取特定的行和列。因為查詢和檢索數據是資料庫管理中最重要的功能,所以SELECT語句在SQL中是工作量最大的部分。實際上,僅僅是訪問資料庫來分析數據並生成報表的人可以對其他SQL語句一竅不通。

SELECT語句的結果通常是生成另外一個表。在執行過程中系統根據用戶的標准從資料庫中選出匹配的行和列,並將結果放到臨時的表中。在直接SQL(direct SQL)中,它將結果顯示在終端的顯示屏上,或者將結果送到列印機或文件中。也可以結合其他SQL語句來將結果放到一個已知名稱的表中。

SELECT語句功能強大。雖然表面上看來它只用來完成本文第一部分中提到的關系代數運算「選擇」(或稱「限制」),但實際上它也可以完成其他兩種關系運算—「投影」和「連接」,SELECT語句還可以完成聚合計算並對數據進行排序。

SELECT語句最簡單的語法如下:

SELECT columns FROM tables;

當我們以這種形式執行一條SELECT語句時,系統返回由所選擇的列以及用戶選擇的表中所有指定的行組成的一個結果表。這就是實現關系投影運算的一個形式。

讓我們看一下使用圖1中EMPLOYEES表的一些例子(這個表是我們以後所有SELECT語句實例都要使用的。而我們在圖2和圖3中給出了查詢的實際結果。我們將在其他的例子中使用這些結果)。

假設你想查看雇員工作部門的列表。那下面就是你所需要編寫的SQL查詢:

SELECT BRANCH_OFFICE FROM EMPLOYEES;

以上SELECT語句的執行將產生如圖2中表2所示的結果。

由於我們在SELECT語句中只指定了一個列,所以我們的結果表中也只有一個列。注意結果表中具有重復的行,這是因為有多個雇員在同一部門工作(記住SQL從所選的所有行中將值返回)。要消除結果中的重復行,只要在SELECT語句中加上DISTINCT子句:

SELECT DISTINCT BRANCH_OFFICE

FROM EMPLOYEES;

這次查詢的結果如表3所示。

現在已經消除了重復的行,但結果並不是按照順序排列的。如果你希望以字母表順序將結果列出又該怎麼做呢?只要使用ORDER BY子句就可以按照升序或降序來排列結果:

SELECT DISTINCT BRANCH_OFFICE

FROM EMPLOYEES

ORDER BY BRANCH_OFFICE ASC;

這一查詢的結果如表4所示。請注意在ORDER BY之後是如何放置列名BRANCH _OFFICE的,這就是我們想要對其進行排序的列。為什麼即使是結果表中只有一個列時我們也必須指出列名呢?這是因為我們還能夠按照表中其他列進行排序,即使它們並不顯示出來。列名BRANCH_ OFFICE之後的關鍵字ASC表示按照升序排列。如果你希望以降序排列,那麼可以用關鍵字DESC。

同樣我們應該指出ORDER BY子句只將臨時表中的結果進行排序;並不影響原來的表。

假設我們希望得到按部門排序並從工資最高的雇員到工資最低的雇員排列的列表。除了工資括弧中的內容,我們還希望看到按照聘用時間從最近聘用的雇員開始列出的列表。以下是你將要用到的語句:

SELECT BRANCH_OFFICE,FIRST_NAME,

LAST_NAME,SALARY,HIRE_DATE

FROM EMPLOYEES

ORDER BY SALARY DESC,

HIRE_DATE DESC;

這里我們進行了多列的選擇和排序。排序的優先順序由語句中的列名順序所決定。SQL將先對列出的第一個列進行排序。如果在第一個列中出現了重復的行時,這些行將被按照第二列進行排序,如果在第二列中又出現了重復的行時,這些行又將被按照第三列進行排序……如此類推。這次查詢的結果如表5所示。

將一個很長的表中的所有列名寫出來是一件相當麻煩的事,所以SQL允許在選擇表中所有的列時使用*號:

SELECT * FROM EMPLOYEES;

這次查詢返回整個EMPLOYEES表,如表1所示。

下面我們對開始時給出的SELECT語句的語法進行一下更新(豎直線表示一個可選項,允許在其中選擇一項。):

SELECT [DISTINCT]

(column [{, columns}])| *

FROM table [ {, table}]

[ORDER BY column [ASC] | DESC

[ {, column [ASC] | DESC }]];

定義選擇標准

在我們目前所介紹的SELECT語句中,我們對結果表中的列作出了選擇但返回的是表中所有的行。讓我們看一下如何對SELECT語句進行限制使得它只返回希望得到的行:

SELECT columns FROM tables [WHERE predicates];

WHERE子句對條件進行了設置,只有滿足條件的行才被包括到結果表中。這些條件由斷言(predicate)進行指定(斷言指出了關於某件事情的一種可能的事實)。如果該斷言對於某個給定的行成立,該行將被包括到結果表中,否則該行被忽略。在SQL語句中斷言通常通過比較來表示。例如,假如你需要查詢所有姓為Jones的職員,則可以使用以下SELECT語句:

SELECT * FROM EMPLOYEES

WHERE LAST_NAME = 'Jones';

LAST_NAME = 'Jones'部分就是斷言。在執行該語句時,SQL將每一行的LAST_NAME列與「Jones」進行比較。如果某一職員的姓為「Jones」,即斷言成立,該職員的信息將被包括到結果表中(見表6)。

使用最多的六種比較

我們上例中的斷言包括一種基於「等值」的比較(LAST_NAME = 'Jones'),但是SQL斷言還可以包含其他幾種類型的比較。其中最常用的為:

等於 =

不等於 <>

小於 <

大於 >

小於或等於 <=

大於或等於 >=

下面給出了不是基於等值比較的一個例子:

SELECT * FROM EMPLOYEES

WHERE SALARY > 50000;

這一查詢將返回年薪高於$50,000.00的職員(參見表7)。

邏輯連接符

有時我們需要定義一條不止一種斷言的SELECT語句。舉例來說,如果你僅僅想查看Davy Jones的信息的話,表6中的結果將是不正確的。為了進一步定義一個WHERE子句,用戶可以使用邏輯連接符AND,OR和NOT。為了只得到職員Davy Jones的記錄,用戶可以輸入如下語句:

SELECT * FROM EMPLOYEES

WHERE LAST_NAME = 'Jones' AND FIRST_NAME = 'Davy';

在本例中,我們通過邏輯連接符AND將兩個斷言連接起來。只有兩個斷言都滿足時整個表達式才會滿足。如果用戶需要定義一個SELECT語句來使得當其中任何一項成立就滿足條件時,可以使用OR連接符:

SELECT * FROM EMPLOYEES

WHERE LAST_NAME = 'Jones' OR LAST_NAME = 'Smith';

有時定義一個斷言的最好方法是通過相反的描述來說明。如果你想要查看除了Boston辦事處的職員以外的其他所有職員的信息時,你可以進行如下的查詢:

SELECT * FROM EMPLOYEES

WHERE NOT(BRANCH_OFFICE = 'Boston');

關鍵字NOT後面跟著用圓括弧括起來的比較表達式。其結果是對結果取否定。如果某一職員所在部門的辦事處在Boston,括弧內的表達式返回true,但是NOT操作符將該值取反,所以該行將不被選中。

斷言可以與其他的斷言嵌套使用。為了保證它們以正確的順序進行求值,可以用括弧將它們括起來:

SELECT * FROM EMPLOYEES

WHERE (LAST_NAME = 'Jones'

AND FIRST_NAME = 'Indiana')

OR (LAST_NAME = 'Smith'

AND FIRST_NAME = 'Bessie');

SQL沿用數學上標準的表達式求值的約定—圓括弧內的表達式將最先進行求值,其他表達式將從左到右進行求值。

以上對邏輯連接符進行了說明,在對下面的內容進行說明之前,我們再一次對SELECT語句的語法進行更新:

SELECT [DISTINCT]

(column [{, column } ] )| *

FROM table [ { , table} ]

[ORDER BY column [ASC] | [DESC

[{ , column [ASC] | [DESC } ] ]

WHERE predicate [ { logical-connector predicate } ];

NULL和三值邏輯

在SQL中NULL是一個復雜的話題,關於NULL的詳細描述更適合於在SQL的高級教程而不是現在的入門教程中進行介紹。但由於NULL需要進行特殊處理,並且你也很可能會遇到它,所以我們還是簡略地進行一下說明。

首先,在斷言中進行NULL判斷時需要特殊的語法。例如,如果用戶需要顯示所有年薪未知的職員的全部信息,用戶可以使用如下SELECT語句:

SELECT * FROM EMPLOYEES

WHERE SALARY IS NULL;

相反,如果用戶需要所有已知年薪數據的職員的信息,你可以使用以下語句:

SELECT * FROM EMPLOYEES

WHERE SALARY IS NOT NULL;

請注意我們在列名之後使用了關鍵字IS NULL或IS NOT NULL,而不是標準的比較形式:COLUMN = NULL、COLUMN <> NULL或是邏輯操作符NOT(NULL)。

這種形式相當簡單。但當你不明確地測試NULL(而它們確實存在)時,事情會變得很混亂。

例如,回過頭來看我們圖1中的EM-PLOYEES表,可以看到Indiana Jones的工薪等級或年薪值都是未知的。這兩個列都包含NULL。可以想像運行如下的查詢:

SELECT * FROM EMPLOYEES

WHERE GRADE <= SALARY;

此時,Indiana Jones應該出現在結果表中。因為NULL都是相等的,所以可以想像它們是能夠通過GRADE小於等於SALARY的檢查的。這其實是一個毫無疑義的查詢,但是並沒有關系。SQL允許進行這樣的比較,只要兩個列都是數字類型的。然而,Indiana Jones並沒有出現在查詢的結果中,為什麼?

正如我們早先提到過的,NULL表示未知的值(而不是象某些人所想像的那樣表示一個為NULL的值)。對於SQL來說意味著這個值是未知的,而只要這個值為未知,就不能將其與其他值比較(即使其他值也是NULL)。所以SQL允許除了在true 和false之外還有第三種類型的真值,稱之為「非確定」(unknown)值。

如果比較的兩邊都是NULL,整個斷言就被認為是非確定的。將一個非確定斷言取反或使用AND或OR與其他斷言進行合並之後,其結果仍是非確定的。由於結果表中只包括斷言值為「真」的行,所以NULL不可能滿足該檢查。從而需要使用特殊的操作符IS NULL和IS NOT NULL。

UPDATE語句

UPDATE語句允許用戶在已知的表中對現有的行進行修改。

例如,我們剛剛發現Indiana Jones的等級為16,工資為$40,000.00,我們可以通過下面的SQL語句對資料庫進行更新(並清除那些煩人的NULL)。

UPDATE EMPLOYEES

SET GRADE = 16, SALARY = 40000

WHERE FIRST_NAME = 'Indiana'

AND LAST_NAME = 'Jones';

上面的例子說明了一個單行更新,但是UPDATE語句可以對多行進行操作。滿足WHERE條件的所有行都將被更新。如果,你想讓Boston辦事處中的所有職員搬到New York,你可以使用如下語句:

UPDATE EMPLOYEES

SET BRANCH_OFFICE = 'New York'

WHERE BRANCH_OFFICE = 'Boston';

如果忽略WHERE子句,表中所有行中的部門值都將被更新為'New York'。

UPDATE語句的語法流圖如下面所示:

UPDATE table

SET column = value [{, column = value}]

[ WHERE predicate [ { logical-connector predicate}]];

DELETE語句

DELETE語句用來刪除已知表中的行。如同UPDATE語句中一樣,所有滿足WHERE子句中條件的行都將被刪除。由於SQL中沒有UNDO語句或是「你確認刪除嗎?」之類的警告,在執行這條語句時千萬要小心。如果決定取消Los Angeles辦事處並解僱辦事處的所有職員,這一卑鄙的工作可以由以下這條語句來實現:

DELETE FROM EMPLOYEES

WHERE BRANCH_OFFICE = 'Los Angeles';

如同UPDATE語句中一樣,省略WHERE子句將使得操作施加到表中所有的行。

DELETE語句的語法流圖如下面所示:

DELETE FROM table

[WHERE predicate [ { logical-connector predicate} ] ];

現在我們完成了數據操作語言(DML)的主要語句的介紹。我們並沒有對SQL能完成的所有功能進行說明。SQL還提供了許多的功能,如求平均值、求和以及其他對表中數據的計算,此外SQL還能完成從多個表中進行查詢(多表查詢,或稱之為連接)的工作。這種語言還允許你使用GRANT和REVOKE命令控制使用者的數據訪問許可權

Ⅵ 如何使用SQL代碼創建資料庫

創建資料庫和表的操作有兩種方法:

一、可視化操作

1.創建資料庫

選中資料庫右擊,在出現的對話框中選擇新建資料庫,然後新出現的對話框中填寫資料庫的名稱

2.創建數據表

選中資料庫下的表右擊,在出現的對話框最上方有新建表選項,新出現的對話框中有列名、數據類型、允許Null值三列,這里可以添加表的的列,添加好列後保存Ctrl+S或者點擊上方的保存,填寫表名稱確定就創建好談岩枝了。

二、使用SQL語句創建

1.創建資料庫

createdatabasestuDB--stuDB是資料庫的名稱

onprimary--默認就屬於primary文件組,可省略

(

/*--數據文件的具體描述--*/

name='stuDB_data',--主數據棗遲文件的邏輯名稱

filename='D:stuDB_data.mdf',--主數據文件的物理路徑和名稱

size=5mb,--主數據文件的初始大小

maxsize=100mb,--主數據文件增長的最大值

filegrowth=15%--主數據文件的增長率

)

logon

(

/*--日誌文件的具體描述,各參數含義同上--*/

name='stuDB_log',

filename='D:stuDB_log.ldf',

size=2mb,

filegrowth=1mb

)

-----2.創建含敏數據表

useStuDB--使用某個資料庫(在某個資料庫下建表)

go

ifexists(select*fromsysobjectswherename='stuMarks')--查詢資料庫是否已存在此表

droptablestuMarks--如果存在該表則刪除,不存在不執行此句

createtablestuMarks--stuMarks是表的名稱

(

ExamNointidentity(1,1)primarykey,--列名數據類型約束

stuNochar(6)notnull,--列名數據類型是否允許插入Null值

writtenExamintnotnull,

LabExamintnotnull

)

go

--其中,列屬性"identity(起始值,遞增量)"表示"ExamNo"列為自動編號,也稱為標識列altertable表名

addconstraint約束名約束類型具體的約束說明

altertable表名

dropconstraint約束名


Ⅶ sql軟體怎麼使用sql語句創建一個資料庫

sql軟體使用sql語句創建一個資料庫的步驟如下。

1、第一首先在電腦上打開sql資料庫軟體查詢。

2、然後用createdatabase命令創建一個數缺判尺據庫。命令為createdatabase酒店沖段管理。

3、再創建資料庫的主文件。onprimary(name=酒店管理,)。

4、設置文件的保存位置和名字。命令為filename='E:酒店管理.mdf'。

5、創建資料庫的日誌文件。命令為logon,(name=酒店管理log,)。

6、再設置日誌文件的儲存位伏高置。命令為filename='E:酒店管理.ldf'。最後運行sql語句就可以得到一個酒店管理的資料庫。

Ⅷ 教你如何用SQL備份和還原資料庫

資料庫的備份和恢復一、備份資料庫1、打開SQL企業管理器,在控制台根目錄中依次點開MicrosoftSQLServer2、SQLServer組--雙擊打開你的伺服器--雙擊打開資料庫目錄3、選擇你的資料庫名稱(如論壇資料庫Forum)--然後點上面菜單中的工具--選擇備份資料庫4、備份選項選擇完全備份,目的中的備份到如果原來有路徑和名稱則選中名稱點刪除,然後點添加,如果原來沒有路徑和名稱則直接選擇添加,接著指定路徑和文件名,指定後點確定返回備份窗口,接著點確定進行備份二、還原資料庫

1、打開SQL企業管理器,在控制台根目錄中依次點開MicrosoftSQLServer

2、SQLServer組--雙擊打開你的伺服器--點圖標欄的新建資料庫圖標,新建資料庫的名字自行取

3、點擊新建好的資料庫名稱--然後點上面菜單中的工具--選擇恢復資料庫

4、在彈出來的窗口中的還原選項中選擇從設備--點選擇設備--點添加--然後選擇你的備份文件名--添加後點確定返回,這時候設備欄應該出現您剛才選擇的資料庫備份文件名,備份號默認為1(如果您對同一個文件做過多次備份,可以點擊備份號旁邊的查看內容,在復選框中選擇最新的一次備份後點確定)--然後點擊上方常規旁邊的選項按鈕

5、在出現的窗口中選擇在現有資料庫上強制還原,以及在恢復完成狀態中選擇使資料庫可以繼續運行但無法還原其它事務日誌的選項

在窗口的中間部位的將資料庫文件還原為這里要按照你SQL的安裝進行設置(也可以指弊旁定自己的目錄),邏輯文件名不需要改動,移至物理文件名要根據你所恢復的機器情況做改動,如您的SQL資料庫裝在D:/ProgramFiles/MicrosoftSQLServer/MSSQL/Data,那麼就按照您恢復機器的目錄進行相關改動改動,並且最後的文件名最好改成您當前的資料庫名(如原來是zw0001mdf,現在的資料庫是zw0002,就改成zw0002mdf),日誌和數據文件都要按照這樣的方式做相關的改動(日誌的文件名是ldf結尾的),這里的恢復目錄您可以自由設置,前提是該目錄必須存在(如您可以指定d:/sqldata/zw0002mdf或者d:/sqldata/zw0002ldf),否則恢復將報洞纖錯

6、修改完成後,點擊下面的確定進行恢復,這時會出現一個進度條,提示恢復的進度,恢復完成後系統會自動提示成功,如中間提示報錯,請記錄下相關的錯誤內容並詢問對SQL操作比較熟悉的人員,一般的錯誤無非是目錄錯誤或者文件名重復或者文件名租顫橡錯誤或者空間不夠或者資料庫正在使用中的錯誤,資料庫正在使用的錯誤您可以嘗試關閉所有關於SQL窗口然後重新打開進行恢復操作,如果還提示正在使用的錯誤可以將SQL服務停止然後重起看看,至於上述其它的錯誤一般都能按照錯誤內容做相應改動後即可恢復三、設定每日自動備份資料庫1、打開企業管理器,在控制台根目錄中依次點開

Ⅸ sql教程 做sql的步驟

1、首先安裝好的SQL有一大堆應用圖標簡單使用,只用SQL Server Management Studio就行,打開SQL Server Management Studio連接資料庫。如果資料庫本身是安裝在本機上的,那麼伺服器名稱輸入「.」,身份驗證使用windows驗證就行。

2、如果資料庫裝在遠端,那麼你輸入正確的IP地址,使用正確的用戶名(一般是sa)和密碼進行登錄。

3、進入資料庫以後,我們可以在左側看到整個資料庫快照,如下圖所示。我們可以點開某一個表,查看到具體的表名。

4、知道了想要操作的表名稱,我們可以使用SQL語句進行操作。例如下邊我用的select命令,可以查看我的一個庫中某個表的數據,還有insert、update、delete命令,但是對於咱們初學者來說,這些進行數據修改的命令還是慎重使用,操作前最好先備份。