SQLSERVER數(shù)據(jù)庫、表創(chuàng)建及SQL語句命令_第1頁
SQLSERVER數(shù)據(jù)庫、表創(chuàng)建及SQL語句命令_第2頁
SQLSERVER數(shù)據(jù)庫、表創(chuàng)建及SQL語句命令_第3頁
SQLSERVER數(shù)據(jù)庫、表創(chuàng)建及SQL語句命令_第4頁
SQLSERVER數(shù)據(jù)庫、表創(chuàng)建及SQL語句命令_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、SQLSERVER數(shù)據(jù)庫、表的創(chuàng)建及SQL語句命令SQLSERVER數(shù)據(jù)庫,安裝、備份、還原等問題:一、存在已安裝了sql server 2000,或2005等數(shù)據(jù)庫,再次安裝2008,會出現(xiàn)的問題1、卸載原來的sql server 2000、2005,然后再安裝sql server 2008,否則經常sql server服務啟動不了2、sql server服務啟動失敗,解決方法:進入sql server configure manager,點開 Sql server 網絡配置(非sql native client 配置),點sqlzhh(我sqlserver的名字)協(xié)議,將VIA協(xié)議禁用。再

2、啟動Sql Server服務,成功如圖:二、在第一次安裝SQLSERVER2008結束后,查看安裝過程明細,描述中有較多項插件或程度,顯示安裝失敗。解決方法:1、重新啟動安裝程度setup.exe,選擇進行修復安裝,至完成即可。三、先創(chuàng)建數(shù)據(jù)庫XXX,再進行還原數(shù)據(jù)庫時,選擇好備份文件XXX.bak,確定后進行還原,會報如下圖的錯誤。解決方法:選擇好備份數(shù)據(jù)庫文件后,再進入“選項”中,勾選“覆蓋現(xiàn)在數(shù)據(jù)庫”即可。四、查看數(shù)據(jù)庫版本的命令:select version在數(shù)據(jù)庫中,點擊“新建查詢”,然后輸入命令,執(zhí)行結果如下五、數(shù)據(jù)庫定義及操作命令:按照數(shù)據(jù)結構來組織、存儲和管理數(shù)據(jù)的倉庫。由表、

3、關系以及操作對象組成,把數(shù)據(jù)存放在數(shù)據(jù)表中。1、修改數(shù)據(jù)庫密碼的命令:EXEC sp_password NULL, '你的新密碼', 'sa'sp_password Null,'sa','sa'2、操作SQL2008數(shù)據(jù)庫的命令備份SQL數(shù)據(jù)庫:backup database 3D-DATA/*原數(shù)據(jù)庫*/ to disk='D:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLbackup3D-DATA_backup_20131017.bak/*數(shù)據(jù)庫備份文

4、件*/' with name = '3D-DATA_backup_20131017'/*數(shù)據(jù)庫備份文件*/查看備份數(shù)據(jù)庫的邏輯文件:restore filelistonly from disk= 'd:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLbackup3D-DATA_backup_20131017.bak '強制還原SQL數(shù)據(jù)庫:其中,Test-3d是已存在的數(shù)據(jù)庫,3D-FEP_data和3D-FEP_log為備份數(shù)據(jù)庫的兩個邏輯文件,restore database Test

5、-3d from disk = 'd:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLBackup3D-DATA_backup_20131017.bak' with move '3D-FEP_data' to 'D:Program FilesMicrosoft SQLServerMSSQL10.MSSQLSERVERMSSQLDATATest-3d.mdf', move '3D-FEP_log' to 'D:Program FilesMicrosoft SQ

6、L ServerMSSQL10.MSSQLSERVERMSSQLDATATest-3d_log.ldf', stats = 10/* 表示每完成10%顯示一條記錄*/ ,replace/*表示強制,放置在with后,加英文逗號也可*/以下為另一種方式:-備份數(shù)據(jù)DB 到.bak文件。然后利用此bak文件恢復一個新的數(shù)據(jù)庫DBTest。USE master;backup database DB to disk = 'g:DBBack0930.bak' restore filelistonly form disk = 'g:DBBack

7、0930.bak' restore database DBTest(此數(shù)據(jù)庫,已創(chuàng)建) FROM DISK = 'g:DBBack0930.bak' WITH MOVE 'DBTest' TO 'E:Program FilesMicrosoft SQL Server2005DataDBTest.mdf',MOVE 'DBTest_log' TO 'E:Program FilesMicrosoft SQL Server2005DataDBTest_log.ldf' GO六、SQL

8、 Server數(shù)據(jù)庫文件恢復技術 yzhshi(yzhshi) SQL Server數(shù)據(jù)庫備份有兩種方式:1、使用命令:BACKUPDATABASE,將數(shù)據(jù)庫文件備份出去;2、直接拷貝數(shù)據(jù)庫文件mdf和日志文件ldf的方式。下面將主要討論一下后者的備份與恢復。本文假定您能熟練使用SQL Server Enterprise Manager (SQL Server企業(yè)管理器)和SQL Server Quwey Analyser(SQL Server查詢分析器) 正常的備份、恢復方式正常方式下,我們要備份一個數(shù)據(jù)庫,首先要先將該數(shù)據(jù)庫從運行的數(shù)據(jù)服務器中斷開,或者停掉整個數(shù)據(jù)庫服務器,然后復制文件。

9、卸下數(shù)據(jù)庫的命令:Sp_detach_db 數(shù)據(jù)庫名連接數(shù)據(jù)庫的命令:Sp_attach_db或者sp_attach_single_file_db s_attach_db dbname = dbname, filename1 = filename_n ,.16 sp_attach_single_file_db dbname = dbname, physname = physical_name 使用此方法可以正確恢復SQL Sever7.0和SQL Server 2000的數(shù)據(jù)庫文件,要點是備份的時候一定要將 mdf和ldf兩個文件都備份下來,mdf文件是數(shù)據(jù)庫數(shù)據(jù)文件,ldf是數(shù)據(jù)庫日志文件。

10、七、SQL命令創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)表use masterif db_id ('Test-a01')is not null-判斷數(shù)據(jù)庫,是否已存在drop database Test-a01-刪除數(shù)據(jù)庫gocreate database Test-a01 on primary (name = 'Test-a01_data', -數(shù)據(jù)文件的邏輯名稱filename = 'D:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATATest-a01_data.ndf' , -數(shù)據(jù)文件的路徑和

11、文件名size = 3mb ,- 數(shù)據(jù)文件的初始容量maxsize = 10mB-數(shù)據(jù)文件的最大容量)log on ( name = 'Test-a01_log', -事務日志文件的邏輯名稱filename = 'D:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATATest-a01_log.ndf' , -事務日志文件的路徑和文件名size = 3mb , -事務日志文件的初始容量maxsize = 10mB-事務日志文件的最大容量)Gouse xxxxx/*指定創(chuàng)建表的數(shù)據(jù)庫*/gocr

12、eate table student(stuID char(5) primary key,-主鍵stuname char(20)not null,stusex char(2) check(stusex in('男','女') default('女'),-設定范圍及默認值stuage char(6),stubirth date check(stubirth between '1985-01-01' and '1995-12-31'),-設置日期范圍stuaddress varchar(100),stunum char

13、(12),stuemail char(40)check(stuemail like '%')gouse xxxxxgocreate table teacher(TeacherID char(5), Teaname char(20)not null,Teasex char(2) check(Teasex in('男','女') default('女'),Teaage char(6),Entrydate date check(Entrydate between '1950-01-01' and '2099-12

14、-31'),Teaphone varchar(100),Teanum char(12),Teaaddress char(40)-1、刪除新表:drop table table_name;2、創(chuàng)建視圖:create view viewname as select statement;例1:create view view_name01(stuid,stuname,stusex,stuage) as select stuid,stuname,stusex,stuage from student where stuage>=25;其中,紅色部分的字段列,必須相同。如下例2,則不用考慮(

15、比較常用).create view view_name02 as select stuid,stuname,stusex,stuage from student where stuage>=25;查看視圖:select * from view_name;3、刪除視圖:drop view viewname;4、創(chuàng)建索引:create unique index idx_name on table_name(字段1);create index idx_name on table_name (COLUMN_NAME);5、刪除索引:drop index idxname;八、常見創(chuàng)建數(shù)據(jù)表的限制,

16、有以下幾種:NOT NULL UNIQUE CHECK 主鍵 (Primary Key) 外來鍵 (Foreign Key) 1、NOT NULL表示某字段的值,不允許出現(xiàn)空值。例如:CREATE TABLE Customer (SID int NOT NULL, Last_Name varchar (30) NOT NULL, First_Name varchar(30);2、unique表示某字段的值,不允許重復例如:CREATE TABLE Customer (SID int Unique, Last_Name varchar (30) NOT NULL, First_Name varc

17、har(30);3、check檢查某字段的值,必須符合某些條件CREATE TABLE Customer (SID int check( sid>0 ), Last_Name varchar (30) NOT NULL, First_Name varchar(30);4、主 鍵主鍵 (Primary Key) 中的每一筆資料都是表格中的唯一值。添加主鍵SQL命令(注意:選擇作主鍵的列,必須有數(shù)值):Alter table teacher add primary key(TeacherID);Alter table teacher add primary key(TeacherID);創(chuàng)建

18、數(shù)據(jù)表時,加主鍵的不同方式:MySQL: CREATE TABLE Customer (SID integer, Last_Name varchar(30), First_Name varchar(30), PRIMARY KEY (SID); Oracle: CREATE TABLE Customer (SID integer PRIMARY KEY, Last_Name varchar(30), First_Name varchar(30); SQL Server: CREATE TABLE Customer (SID integer PRIMARY KEY, Last_Name varc

19、har(30), First_Name varchar(30); 刪除主鍵的SQL語句:語法:alter table 表名 drop constraint 主鍵約束名(非字段名稱)如:alter table Stu_PkFk_S drop constraint PK_S;5、外 鍵外來鍵是一個(或數(shù)個)指向另外一個數(shù)據(jù)表主鍵的字段。外鍵作用是:確定資料限制輸入的參考完整性(referential integrity)。換言之,只有被準許的字段值才會被存入數(shù)據(jù)庫內。Store_Information 表格StoreID(主鍵)store_name Sales Date Reg_ID(外鍵)100

20、1Los Angeles $1500 Jan-05-1999 90031002San Diego $250 Jan-07-1999 90041003Los Angeles $300 Jan-08-1999 90031004Boston $700 Jan-08-1999 9001Geography 表格 RegionID(主鍵)region_name store_name 9001East Boston 9002East New York 9003West Los Angeles 9004West San Diego 創(chuàng)建外鍵的命令操作:如下,alter table Store_Informat

21、ion add foreign key (Reg_ID) references Geography(regionID);alter table 需要建立外鍵的表 add constraint 外鍵名字 foreign key references 外鍵表(外鍵字段) ;以下列出幾個在建置 ORDERS 表格時指定外鍵的方式:外鍵Reg_ID,指向主鍵regionID。MySQL: CREATE TABLE ORDERS (Order_ID integer, Order_Date date, Customer_SID integer, Amount double, Primary Key (Or

22、der_ID), Foreign Key (Customer_SID) references CUSTOMER(SID); Oracle: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date date, Customer_SID integer references CUSTOMER(SID), Amount double); SQL Server: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date datetime, Customer_SID in

23、teger references CUSTOMER(SID), Amount double); 以下的例子則是改變表格架構來指定外鍵。這里假設 ORDERS 表格已經被建立,而外鍵尚未被指定: MySQL: ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid); Oracle: ALTER TABLE ORDERS ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid); SQL Server:

24、ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);刪除外鍵的SQL命令:alter table 表名 drop constraint 外鍵約束名(非字段名);如:alter table Stu_PkFk_Sc drop constraint FK_s;6、Alter Table改變表結構的方式:1、加一個字段 Alter table table_name add 字段1 int,字段2 char(10),; 加多個字段Alter table table_name add 字段1 int、或字段2

25、 char(10)、;加一個字段2、刪去一個字段 Alter table table_name drop column字段1;-(SQLserver數(shù)據(jù)庫,字段前要加“column”)3、改變字段名稱 (此命令SQLserver數(shù)據(jù)庫,不可用)ALTER table table_name change字段1 新字段1 char(50); 4、改變字段的類型(此命令SQLserver數(shù)據(jù)庫,不可用)ALTER table table_name modify 字段1 char(20); SQL SERVER 2008不能修改表的解決方法(增加字段、修改字段名) 新裝的SQL SERVER 2008

26、,打開原來SQL SERVER 2008中建立的表,現(xiàn)在想增加一些字段,在保存時提示錯誤,無法保存。原以為是SQL SERVER 2008與2005的不兼容,后來發(fā)現(xiàn)在SQL SERVER 2008中新建的表也存在無法修改表結構,也就是無法修改字段名和增加字段名。提示是:不允許保存更改。您所做的更改要求刪除并重新創(chuàng)建以下表。您對無法重新創(chuàng)建的標進行了更改或者啟用了“阻止保存要求重新創(chuàng)建表的更改”選項。截圖如下:解決辦法:啟動MSSQL SERVER 2008,選擇菜單 工具-選項-左側有個 設計器-表設計器和數(shù)據(jù)庫設計器。然后去掉“ 阻止保存要求重新創(chuàng)建表的更改”前面的勾。重新啟動MSSQL

27、SERVER 2008即可。如下圖所示:九、SQL數(shù)據(jù)庫字段類型詳解數(shù)據(jù)類型 類型 描             述 bit 整型 bit 數(shù)據(jù)類型是整型,其值只能是0、1或空值。這種數(shù)據(jù)類型用于存儲只有兩種可能值的數(shù)據(jù),如Yes 或No、True 或Fa lse 、On 或Off int 整型 int 數(shù)據(jù)類型可以存儲從- 231(-2147483648)到231 (2147483 647)之間的整數(shù)。存儲到數(shù)據(jù)庫的幾乎所有數(shù)值型的數(shù)據(jù)都可以用這種數(shù)據(jù)類型。這種數(shù)據(jù)類型在數(shù)據(jù)

28、庫里占用4個字節(jié) smallint 整型 smallint 數(shù)據(jù)類型可以存儲從- 215(-32768)到215(32767)之間的整數(shù)。這種數(shù)據(jù)類型對存儲一些常限定在特定范圍內的數(shù)值型數(shù)據(jù)非常有用。這種數(shù)據(jù)類型在數(shù)據(jù)庫里占用2 字節(jié)空間 tinyint 整型 tinyint 數(shù)據(jù)類型能存儲從0到255 之間的整數(shù)。它在你只打算存儲有限數(shù)目的數(shù)值時很有用。 這種數(shù)據(jù)類型在數(shù)據(jù)庫中占用1 個字節(jié) numeric精確數(shù)值型 numeric數(shù)據(jù)類型與decimal 型相同 decimal 精確數(shù)值型 decimal 數(shù)據(jù)類型能用來存儲從-1038-1到1038-1的固定精度和范圍的數(shù)值型數(shù)據(jù)。使用這

29、種數(shù)據(jù)類型時,必須指定范圍和精度。 范圍是小數(shù)點左右所能存儲的數(shù)字的總位數(shù)。精度是小數(shù)點右邊存儲的數(shù)字的位數(shù) money 貨幣型 money 數(shù)據(jù)類型用來表示錢和貨幣值。這種數(shù)據(jù)類型能存儲從-9220億到9220 億之間的數(shù)據(jù),精確到貨幣單位的萬分之一 smallmoney 貨幣型 smallmoney 數(shù)據(jù)類型用來表示錢和貨幣值。這種數(shù)據(jù)類型能存儲從-214748.3648 到214748.3647 之間的數(shù)據(jù),精確到貨幣單位的萬分之一 float 近似數(shù)值型 float 數(shù)據(jù)類型是一種近似數(shù)值類型,供浮點數(shù)使用。說浮點數(shù)是近似的,是因為在其范圍內不是所有的數(shù)都能精確表示。浮點數(shù)可以是從-1

30、.79E+308到1.79E+308 之間的任意數(shù) real 近似數(shù)值型 real 數(shù)據(jù)類型像浮點數(shù)一樣,是近似數(shù)值類型。它可以表示數(shù)值在-3.40E+38到3.40E+38之間的浮點數(shù) datetime 日期時間型 datetime數(shù)據(jù)類型用來表示日期和時間。這種數(shù)據(jù)類型存儲從1753年1月1日到9999年12月3 1日間所有的日期和時間數(shù)據(jù), 精確到三百分之一秒或3.33毫秒 Smalldatetime 日期時間型 smalldatetime 數(shù)據(jù)類型用來表示從1900年1月1日到2079年6月6日間的日期和時間,精確到一分鐘 cursor 特殊數(shù)據(jù)型 cursor 數(shù)據(jù)類型是一種特殊的數(shù)

31、據(jù)類型,它包含一個對游標的引用。這種數(shù)據(jù)類型用在存儲過程中,而且創(chuàng)建表時不能用 timestamp 特殊數(shù)據(jù)型 timestamp 數(shù)據(jù)類型是一種特殊的數(shù)據(jù)類型,用來創(chuàng)建一個數(shù)據(jù)庫范圍內的唯一數(shù)碼。 一個表中只能有一個timestamp列。每次插入或修改一行時,timestamp列的值都會改變。盡管它的名字中有“time”, 但timestamp列不是人們可識別的日期。在一個數(shù)據(jù)庫里,timestamp值是唯一的 Uniqueidentifier 特殊數(shù)據(jù)型 Uniqueidentifier數(shù)據(jù)類型用來存儲一個全局唯一標識符,即GUID。GUID確實是全局唯一的。這個數(shù)幾乎沒有機會在另一個系統(tǒng)

32、中被重建。可以使用NEWID 函數(shù)或轉換一個字符串為唯一標識符來初始化具有唯一標識符的列 char 字符型 char數(shù)據(jù)類型用來存儲指定長度的定長非統(tǒng)一編碼型的數(shù)據(jù)。當定義一列為此類型時,你必須指定列長。當你總能知道要存儲的數(shù)據(jù)的長度時,此數(shù)據(jù)類型很有用。例如,當你按郵政編碼加4個字符格式來存儲數(shù)據(jù)時,你知道總要用到10個字符。此數(shù)據(jù)類型的列寬最大為8000 個字符 varchar 字符型 varchar數(shù)據(jù)類型,同char類型一樣,用來存儲非統(tǒng)一編碼型字符數(shù)據(jù)。與char 型不一樣,此數(shù)據(jù)類型為變長。當定義一列為該數(shù)據(jù)類型時,你要指定該列的最大長度。 它與char數(shù)據(jù)類型最大的區(qū)別是,存儲的

33、長度不是列長,而是數(shù)據(jù)的長度 text 字符型 text 數(shù)據(jù)類型用來存儲大量的非統(tǒng)一編碼型字符數(shù)據(jù)。這種數(shù)據(jù)類型最多可以有231-1或20億個字符 nchar 統(tǒng)一編碼字符型 nchar 數(shù)據(jù)類型用來存儲定長統(tǒng)一編碼字符型數(shù)據(jù)。統(tǒng)一編碼用雙字節(jié)結構來存儲每個字符,而不是用單字節(jié)(普通文本中的情況)。它允許大量的擴展字符。此數(shù)據(jù)類型能存儲4000種字符,使用的字節(jié)空間上增加了一倍 nvarchar 統(tǒng)一編碼字符型 nvarchar 數(shù)據(jù)類型用作變長的統(tǒng)一編碼字符型數(shù)據(jù)。此數(shù)據(jù)類型能存儲4000種字符,使用的字節(jié)空間增加了一倍 ntext 統(tǒng)一編碼字符型 ntext 數(shù)據(jù)類型用來存儲大量的統(tǒng)一編

34、碼字符型數(shù)據(jù)。這種數(shù)據(jù)類型能存儲230 -1或將近10億個字符,且使用的字節(jié)空間增加了一倍 binary 二進制數(shù)據(jù)類型 binary數(shù)據(jù)類型用來存儲可達8000 字節(jié)長的定長的二進制數(shù)據(jù)。當輸入表的內容接近相同的長度時,你應該使用這種數(shù)據(jù)類型 varbinary 二進制數(shù)據(jù)類型 varbinary 數(shù)據(jù)類型用來存儲可達8000 字節(jié)長的變長的二進制數(shù)據(jù)。當輸入表的內容大小可變時,你應該使用這種數(shù)據(jù)類型 image 二進制數(shù)據(jù)類型 image 數(shù)據(jù)類型用來存儲變長的二進制數(shù)據(jù),最大可達231-1或大約20億字節(jié)SQL語句:一、DML數(shù)據(jù)操縱語言SQL命令,分為:select查詢、insert

35、into插入、delete from刪除、update set修改.l Select 查詢命令最復雜、存在非常多的使用方法1、查詢表中所有的數(shù)據(jù)Select * from table_name;2、普通條件(where、and、or)查詢Select *或者字段1,字段2, fromtable_name where 字段1值1或字段2值2;如查詢一個范圍的薪資SELECT store_name FROM Store_Information WHERE salary > 1000 OR (salary < 500 AND salary > 275);3、模糊條件(like)查詢

36、Select *或者字段1,字段2, from table_name where字段1 like %A%;包含A的字符Select *或者字段1,字段2, from table_name where字段1 like A%;以A起頭的字符Select *或者字段1,字段2, from table_name where字段1 like %A;以A結尾的字符Select *或者字段1,字段2, from table_name where字段1 like '_漢字_'一個下劃線,表示一個字符,共計四個字符Select *或者字段1,字段2, from table_name where字

37、段1 like '%漢字%' %表示無限個字符4、空值條件(null)查詢Select *或者字段1,字段2, from table_name where 字段1 is not null;5、范圍查詢一 (in)Select *或者字段1,字段2, from table_name where 字段1 in (1,2,3,)或者('質量','數(shù)量',);- 字段值可為數(shù)值、或字符類型6、范圍查詢二 (between and)Select *或者字段1,字段2, from table_name where 字段1 between 10 and 100

38、; Select *或者字段1,字段2, from table_name where 字段1 between '1990-01-01' and '2012-12-31'7、排序查詢(order byasc/desc 一般都是組合使用)SELECT * FROM table_name order by 字段1 asc;SELECT * FROM table_name order by 字段2 desc;SELECT * FROM table_name order by 字段1, 字段2, desc或asc;SELECT * FROM table_name wher

39、e 字段1=數(shù)值1 order by 字段1 desc, 字段2 asc,;8、Count 統(tǒng)計記錄數(shù)查詢SELECT Count(字段1,或字段2,)別名a FROM table_name; 【一般不與其它字段一起組合,否則會報錯,可在后面加別名】【加條件“is not null”,可過濾掉為空值數(shù)據(jù)】SELECT Count(字段1,或字段2,)別名a FROM table_name where(字段1,或字段2,) is not null; SELECT Count(字段1,或字段2,),字段A FROM table_name group by 字段A;SELECT Count(字段1,

40、或字段2,),字段A FROM table_name where 字段B=數(shù)值 group by 字段A;【與其它字段一起查詢顯示,要與group by組合使用,且要顯示的"字段A",一定要與group by匹配的"字段A"相同,與字段B不能相同,所以只能是一個集合函數(shù),或者與group by配置的字段名相同】9、sum 求和SELECT sum(字段1,或字段2,)FROM table_name;sum匹配的字段,一定為數(shù)值類型。 SELECT sum(字段1,或字段2,),字段A FROM table_name group by 字段A;SELECT

41、 sum(字段1,或字段2,),字段A FROM table_name where 字段B=數(shù)值 group by 字段A;【與其它字段一起查詢顯示,要與group by組合使用,且要顯示的"字段A",一定要與group by匹配的"字段A"相同,與字段B不能相同,所以只能是一個集合函數(shù),或者與group by配置的字段名相同】10、Max 求和SELECT Max(字段1,或字段2,)FROM table_name;sum匹配的字段,一定為數(shù)值類型。 SELECT Max(字段1,或字段2,),字段A FROM table_name group by

42、字段A;SELECT Max(字段1,或字段2,),字段A FROM table_name where 字段B=數(shù)值 group by 字段A;【與其它字段一起查詢顯示,要與group by組合使用,且要顯示的"字段A",一定要與group by匹配的"字段A"相同,與字段B不能相同,所以只能是一個集合函數(shù),或者與group by配置的字段名相同】11、Min 求和SELECT Min(字段1,或字段2,)FROM table_name;sum匹配的字段,一定為數(shù)值類型。 SELECT Min(字段1,或字段2,),字段A FROM table_name

43、 group by 字段A;SELECT Min(字段1,或字段2,),字段A FROM table_name where 字段B=數(shù)值 group by 字段A;【與其它字段一起查詢顯示,要與group by組合使用,且要顯示的"字段A",一定要與group by匹配的"字段A"相同,與字段B不能相同,所以只能是一個集合函數(shù),或者與group by配置的字段名相同】12、AVG 求平均值SELECT avg(字段1,或字段2,)FROM table_name;sum匹配的字段,一定為數(shù)值類型。 SELECT avg(字段1,或字段2,),字段A FRO

44、M table_name group by 字段A;SELECT avg(字段1,或字段2,),字段A FROM table_name where 字段B=數(shù)值 group by 字段A;【與其它字段一起查詢顯示,要與group by組合使用,且要顯示的"字段A",一定要與group by匹配的"字段A"相同,與字段B不能相同,所以只能是一個集合函數(shù),或者與group by配置的字段名相同】13、having篩選組查詢那我們如何對函數(shù)產生的值來設定條件呢?舉例來說,我們可能只需要知道哪些店的營業(yè)額有超過 $1,500。在這個情況下,我們不能使用 WHER

45、E 的指令。那要怎么辦呢?很幸運地,SQL 有提供一個 HAVING 的指令,而我們就可以用這個指令來達到這個目標。 HAVING 子句通常是在一個 SQL 句子的最后。一個含有 HAVING 子句的 SQL 并不一定要包含 GROUP BY 子句。HAVING 的語法如下: SELECT "欄位1", SUM("欄位2") FROM "表格名" GROUP BY "欄位1" HAVING (函數(shù)條件) ;select (字段1,或字段2,)from table_name group by <字段1,或字段2

46、,> having <分組條件>例如:查詢出本次考試男女生的總成績大于等于250分的信息 select sex,sum(score) as '總成績' from student group by sex having sum(score)>=250;12、表格連接Store_Information 表格store_name Sales Date Los Angeles $1500 Jan-05-1999 San Diego $250 Jan-07-1999 Los Angeles $300 Jan-08-1999 Boston $700 Jan-08-1

47、999 Geography 表格 region_name store_name East Boston East New York West Los Angeles West San Diego SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 -A1,A2使用到別名,更助于理解WHERE A1.store_name = A2.store_name -關鍵處,存在相同的字段列GROUP BY A1.region_name -按區(qū)域名稱,進行分類結果: REGION

48、SALES East $700 West $2050外部連接Select a2. region_name, sum(a1.Sales ) from Store_Information a1 , Geography a2Where a1. store_name=a2. store_name+ -"+"表示列表中的所有資料,都查取出來Group by a2.region_name;13、CONCATENATE字段列表內容間的串連MySQL: CONCAT() Oracle: CONCAT(), | SQL Server: + CONCAT() 的語法如下: CONCAT(字符串

49、1, 字符串2, 字符串3,.): 將字符串1、字符串2、字符串3,等字符串連在一起。請注意,Oracle的CONCAT()只允許兩個參數(shù);換言之,一次只能將兩個字符串串連起來。不過,在Oracle中,我們可以用'|'來一次串連多個字符串SELECT CONCAT(region_name,store_name) FROM Geography WHERE store_name = 'Boston'SQL Server使用 +,如:加個空格+' '+SELECT region_name + ' ' + store_name FROM

50、Geography WHERE store_name = 'Boston'14、SUBSTRINGSQL 中的 substring 函數(shù)是用來抓出一個欄位資料中的其中一部分。這個函數(shù)的名稱在不同的數(shù)據(jù)庫中不完全一樣: MySQL: SUBSTR(), SUBSTRING() Oracle: SUBSTR() SQL Server: SUBSTRING() 此函數(shù)不可用最常用到的方式如下 (在這里我們用SUBSTR()為例): SUBSTR(str,pos): 由<str>中,選出所有從第<pos>位置開始的字符。請注意,這個語法不適用于SQL Serve

51、r上。 SUBSTR(str,pos,len): 由<str>中的第<pos>位置開始,選出接下去的<len>個字符假設我們有以下的表格: Geography 表格 region_namestore_nameEastBostonEastNew YorkWestLos AngelesWestSan Diego例1: SELECT SUBSTR(store_name, 3) FROM Geography WHERE store_name = 'Los Angeles' 結果: 's Angeles' 例2: SELECT SUBS

52、TR(store_name,2,4) FROM Geography WHERE store_name = 'San Diego' 結果: 'an D'15、top查詢隨機取出10條數(shù)據(jù)select top 10 * from tablename order by newid();l insert into插入1、普通常用插入Insert into table_name (字段1, 字段2, 字段3,)values (數(shù)值1, 數(shù)值2, 數(shù)值3,);2、插入子查詢結果Insert into table_name (字段1, 字段2, 字段3,) SELECT 語句

53、;-后面的select語句中,還可加相應的限制條件(如:where)例如:insert into XXXXX.dbo.Geography_001 (regionID,region_name,store_name)select regionID,region_name,store_name from XXXXX.dbo.Geography where regionID>9002;l delete from刪除1、刪除表中的符合某個條件的所有數(shù)據(jù)信息:Delete from table_name where 字段1=數(shù)值1,或字段2=數(shù)值2,;2、刪除表中所有內容,表結構不刪除,以下兩種效果

54、一樣:Delete table_name;truncate table table_name;3、完全刪除表:Drop table table_name;l update set修改update table_name set 字段1=數(shù)值1 where 字段1=數(shù)值1, 字段2=數(shù)值2,;例如:UPDATE Store_Information SET Sales = 500WHERE store_name = "Los Angeles" AND Date = "Jan-08-1999"SQL查詢的拓展l UNION 或 UNION ALL作用是將兩個 S

55、QL 語句的結果合并起來(相當于取兩個SQL 語句的并集)UNION 的語法如下: SQL 語句 1 UNION SQL 語句 2限制是兩個 SQL 語句查詢的字段值(可以為多個字段)內容,必須是同類型的數(shù)據(jù)。SELECT store_nameFROM XXXXX.dbo.Geography unionSELECT Store_InformationFROM XXXXX.dbo.Store_Information;結果:store_name(字段)BostonLos AngelesNew YorkSan Diego如果SQL語句中為union all ,則全部將兩張表的字段值內容,查詢出且包括

56、重復的。l distinct查詢重復出現(xiàn)的字段值,只顯示一次。select distinct 字段名1,字段名2 from 表格 order by 字段名1例如:Store_Information 表格 store_name SalesDate Los Angeles $1500Jan-05-1999 San Diego $250Jan-07-1999 Los Angeles $300Jan-08-1999 Boston $700Jan-08-1999執(zhí)行語句:select distinct store_name from XXXXX.dbo.Store_Information;結果:store_name (字段)BostonLos AngelesNew YorkSan Diegol INTERSECT 作用是將字段值都存在兩個 SQL 語句中時,才查詢出結果。(相當于取兩個SQL 語句的交集)語法:SQL 語句 1 INTERSECT SQL 語句 2 限制是兩個 SQL 語句查詢的字段值(可以為多個字段)內容,必須是同類型的數(shù)據(jù)。SELECT store_nameFROM XXXXX.dbo.Geography in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論