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

2014sql學習

發布時間: 2022-06-11 20:18:10

sql語句學習大全

創建資料庫
創建之前判斷該資料庫是否存在 if exists (select * from sysdatabases where name='databaseName') drop database 'databaseName' go Create DATABASE database-name
刪除資料庫
drop database dbname
備份sql server
--- 創建 備份數據的 device USE master EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 開始 備份 BACKUP DATABASE pubs TO testBack
創建新表
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
刪除新表
drop table tabname
增加一個列
Alter table tabname add column col type 註:列增加後將不能刪除。DB2中列加上後數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
添加主鍵
Alter table tabname add primary key(col) 說明:刪除主鍵: Alter table tabname drop primary key(col)
創建索引
create [unique] index idxname on tabname(col….) 刪除索引:drop index idxname on tabname 註:索引是不可更改的,想更改必須刪除重新建。
創建視圖
create view viewname as select statement 刪除視圖:drop view viewname
幾個簡單的基本的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%』 (所有包含『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[separator]
幾個高級查詢運算詞
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),不消除重復行。 註:使用運算詞的幾個查詢結果行必須是一致的。
使用外連接
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: 全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
[編輯本段]提升
復製表
(只復制結構,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1 法二:select top 0 * into b from a
拷貝表
(拷貝數據,源表名:a 目標表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b;
跨資料庫之間表的拷貝
(具體數據使用絕對路徑) (Access可用) insert into b(a, b, c) select d,e,f from b in 『具體資料庫』 where 條件 例子:..from b in '"&Server.MapPath("."&"\data.mdb" &"' where..
子查詢
(表名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)
顯示文章、提交人和最後回復時間
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
外連接查詢
(表名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
在線視圖查詢
(表名1:a select * from (Select a,b,c FROM a) T where t.a > 1;
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
in 的使用方法
select * from table1 where a [not] in (『值1』,』值2』,』值4』,』值6』)
刪除主表中已經在副表中沒有的信息
兩張關聯表delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1
四表聯查問題
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 .....
日程安排提前五分鍾提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
一條sql 語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位
前10條記錄
select top 10 * form table1 where 范圍
選擇排名
選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.) select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
派生結果表
包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表 (select a from tableA except (select a from tableB) except (select a from tableC)
隨機取出10條數據
select top 10 * from tablename order by newid()
隨機選擇記錄
select newid()
刪除重復記錄
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
列出資料庫里所有的表名
select name from sysobjects where type='U'
列出表裡的所有的
select name from syscolumns where id=object_id('TableName')
列示排列
列示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
初始化表table1
TRUNCATE TABLE table1
選擇從10到15的記錄
select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc
數據類型轉換
declare @numid int declare @id varchar(50) set @numid=2005 set @id=convert(varchar,@numid) 通過上述語句完成數據類型Int轉換成varchar,其他轉換類似,可參看convert函數
[編輯本段]技巧
1=1,1=2的使用
在SQL語句組合時用的較多 「where 1=1」 是表示選擇全部 「where 1=2」全部不選, 如: if @strWhere !=' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere end else begin set @strSQL = 'select count(*) as Total from [' + @tblName + ']' end 我們可以直接寫成 set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere
收縮資料庫
--重建索引 DBCC REINDEX DBCC INDEXDEFRAG --收縮數據和日誌 DBCC SHRINKDB DBCC SHRINKFILE
壓縮資料庫
dbcc shrinkdatabase(dbname) 轉移資料庫給新用戶以已存在用戶許可權 exec sp_change_users_login 'update_one','newname','oldname' go
檢查備份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
修復資料庫
Alter DATABASE [dvbbs] SET SINGLE_USER GO DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK GO Alter DATABASE [dvbbs] SET MULTI_USER GO
日誌清除
SET NOCOUNT ON DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT USE tablename -- 要操作的資料庫名 Select @LogicalFileName = 'tablename_log', -- 日誌文件名 @MaxMinutes = 10, -- Limit on time allowed to wrap log. @NewSize = 1 -- 你想設定的日誌文件的大小(M) -- Setup / initialize DECLARE @OriginalSize int Select @OriginalSize = size FROM sysfiles Where name = @LogicalFileName Select 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfiles Where name = @LogicalFileName Create TABLE DummyTrans (DummyColumn char (8000) not null) DECLARE @Counter INT, @StartTime DATETIME, @TruncLog VARCHAR(255) Select @StartTime = GETDATE(), @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' DBCC SHRINKFILE (@LogicalFileName, @NewSize) EXEC (@TruncLog) -- Wrap the log if necessary. WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired AND @OriginalSize = (Select size FROM sysfiles Where name = @LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSize BEGIN -- Outer loop. Select @Counter = 0 WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000)) BEGIN -- update Insert DummyTrans VALUES ('Fill Log') Delete DummyTrans Select @Counter = @Counter + 1 END EXEC (@TruncLog) END Select 'Final Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),size) + ' 8K pages or ' + CONVERT(VARCHAR(30),(size*8/1024)) + 'MB' FROM sysfiles Where name = @LogicalFileName Drop TABLE DummyTrans SET NOCOUNT OFF
更改某個表
exec sp_changeobjectowner 'tablename','dbo'
存儲更改全部表
Create PROCEDURE dbo.User_ChangeObjectOwnerBatch @OldOwner as NVARCHAR(128), @NewOwner as NVARCHAR(128) AS DECLARE @Name as NVARCHAR(128) DECLARE @Owner as NVARCHAR(128) DECLARE @OwnerName as NVARCHAR(128) DECLARE curObject CURSOR FOR select 'Name' = name, 'Owner' = user_name(uid) from sysobjects where user_name(uid)=@OldOwner order by name OPEN curObject FETCH NEXT FROM curObject INTO @Name, @Owner WHILE(@@FETCH_STATUS=0) BEGIN if @Owner=@OldOwner begin set @OwnerName = @OldOwner + '.' + rtrim(@Name) exec sp_changeobjectowner @OwnerName, @NewOwner end -- select @name,@NewOwner,@OldOwner FETCH NEXT FROM curObject INTO @Name, @Owner END close curObject deallocate curObject GO
SQL SERVER中直接循環寫入數據
declare @i int set @i=1 while @i<30 begin insert into test (userid) values(@i) set @i=@i+1 end

② 怎麼學習SQL語句

創建資料庫
創建之前判斷該資料庫是否存在 if exists (select * from sysdatabases where name='databaseName') drop database 'databaseName' go Create DATABASE database-name
刪除資料庫
drop database dbname
備份sql server
--- 創建 備份數據的 device USE master EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 開始 備份 BACKUP DATABASE pubs TO testBack
創建新表
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
刪除新表
drop table tabname
增加一個列
Alter table tabname add column col type 註:列增加後將不能刪除。DB2中列加上後數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
添加主鍵
Alter table tabname add primary key(col) 說明:刪除主鍵: Alter table tabname drop primary key(col)
創建索引
create [unique] index idxname on tabname(col….) 刪除索引:drop index idxname on tabname 註:索引是不可更改的,想更改必須刪除重新建。
創建視圖
create view viewname as select statement 刪除視圖:drop view viewname
幾個簡單的基本的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%』 (所有包含『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[separator]
幾個高級查詢運算詞
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),不消除重復行。 註:使用運算詞的幾個查詢結果行必須是一致的。
使用外連接
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: 全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。

③ 那本書學sql2014比較好

《鋒利的SQL》(第二版)
這本是基於SQL Server 2014的

④ 怎樣學習sql

先入門:找一本入門的書,多操作,(首先肯定自己要裝個資料庫)多練習,可以先看書上的例子!
等到熟練以後可以看一些深一點的書籍,記住要多練習

⑤ 新手學習資料庫用SQL Server 2014 Express版夠用嗎

小型的應用當然可以用了;主要還是看你的資料庫大小等。

sqlserver express 就是一個sqlserver的免費的版本,一般會有資料庫大小的限制,可以進行重新分發。

Microsoft SQL Server 2014 Express 是免費的,並包含 SQL Server 的功能豐富版本,是學習與開發桌面、Web 和小型伺服器應用程序並為它們提供功能以及由 ISV 再發行的理想選擇。SQL Server 2014 Express 發行版包括 SQL Server 2014 Management Studio 的完整版本。有關 SQL Server Management Studio 所支持功能的完整列表,請參見 SQL Server Management Studio 中的功能。

⑥ 如何學習 SQL 語言

方法/步驟
1
首先要安裝一個sqlserver2000的資料庫,確保自己在學習理論知識的同時,做到實踐動手能力同時提高。
2
資料庫的增、刪。
創建資料庫
CREATE DATABASE database-name
刪除資料庫
DROP database dbname
3
資料庫表的增、刪。
創建表:create table table_name(
查看錶:desc table_name;
重命名:alter table table_name rename to new table_name;
刪除表:drop table table_name;
截斷表:truncate table table_name;
修改表:
刪除表中的內容:delete from table_name;
添加列:alter table table_name add column_name;
刪除列:alter table table_name drop column
4
插入數據:
insert into table(column1, column2,...)
valus(column1_value,column2_value,...)
修改數據:
update employees set column_name= 'new colunm_name'
where empno= 3432;
刪除數據:
delete
from emp
where empno>=7500 and empno<=8000;
查詢數據:
select *from table_name;
5
模糊查詢:
like(模式匹配,檢驗一個包含字元串數據的欄位值是否匹配一指定模式。
not like:(模式不匹配)
_: 任何一個單一的字元
%:任意長度的字元
SQL> select empno from emp where ename like '_M%';
SQL> select empno,ename,job from emp where job like 'A%';
SQL> select empno,ename,job from emp w

⑦ 如何學習sql

MSSQL入門要了解的基礎課列表

  • 1.什麼是SQL語句

  • 2.使用sql語句創建資料庫和表

  • 3.創建數據表

  • 4.數據完整性約束

  • 5.四中基本字元類型說明

  • 6.SQL基本語句

  • 7.類型轉換函數

  • 8.日期函數

  • 9.數學函數

  • 10.字元串函數

  • 11.聯合結果集union

  • 12.CASE函數用法

  • 13.IF ELSE語法

  • 14.WHILE循環語法

  • 15.子查詢

  • 16.表連接Join

  • 17.事務

  • 18.視圖

  • 19.觸發器

  • 20.存儲過程

  • 21.分頁存儲過程

  • 22.索引

  • 23.臨時表

  • 具體怎麼學,網路一下你就可以找到很多視頻和學習資料的呀

    看一下視頻和資料基本就會了,不難

    以上希望幫助到你,並希望你學習有成

⑧ 怎麼使用SQL 2014求大神請教

掌握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語句:

⑨ sql怎麼學習

MSSQL入門要了解的基礎課列表

  • 1.什麼是SQL語句

  • 2.使用sql語句創建資料庫和表

  • 3.創建數據表

  • 4.數據完整性約束

  • 5.四中基本字元類型說明

  • 6.SQL基本語句

  • 7.類型轉換函數

  • 8.日期函數

  • 9.數學函數

  • 10.字元串函數

  • 11.聯合結果集union

  • 12.CASE函數用法

  • 13.IF ELSE語法

  • 14.WHILE循環語法

  • 15.子查詢

  • 16.表連接Join

  • 17.事務

  • 18.視圖

  • 19.觸發器

  • 20.存儲過程

  • 21.分頁存儲過程

  • 22.索引

  • 23.臨時表

具體怎麼學,網路一下你就可以找到很多視頻和學習資料的呀

看一下視頻和資料基本就會了,不難

以上希望幫助到你,並希望你學習有成