Sql經典語句
按姓氏筆畫排序:Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //從少到多 數據庫加密:select encrypt('原始密碼')select pwdencrypt('原始密碼')select pwdcompare('原始密碼','加密后密碼') = 1--相同;否則不相同 encrypt('原始密碼')select pwdencrypt('原始密碼')select pwdcompare('原始密碼','加密后密碼') = 1--相同;否則不相同 取回表中字段:declare @list varchar(1000),@sql nvarchar(1000) select @list=@list+','+* from sysobjects a,syscolumns b where *=* and *='表A'set @sql='select '+right(@list,len(@list)-1)+' from 表A' exec (@sql) 查看硬盤分區:EXEC master..xp_fixeddrives 比較A,B表是否相等:if (select checksum_agg(binary_checksum(*)) from A) = (select checksum_agg(binary_checksum(*)) from B)print '相等'elseprint '不相等' 殺掉所有的事件探察器進程:DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM *cessesWHERE program_name IN('SQL profiler',N'SQL 事件探查器')EXEC sp_msforeach_worker '?' 記錄搜索:開頭到N條記錄Select Top N * From 表-------------------------------N到M條記錄(要有主索引ID)Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc----------------------------------N到結尾記錄Select Top N * From 表 Order by ID Desc案例例如1:一張表有一萬多條記錄,表的第一個字段 RecID 是自增長字段, 寫一個SQL語句, 找出表的第31到第40個記錄。
select top 10 recid from A where recid not in(select top 30 recid from A) 分析:如果這樣寫會產生某些問題,如果recid在表中存在邏輯索引。 select top 10 recid from A where……是從索引中查找,而后面的select top 30 recid from A則在數據表中查找,這樣由于索引中的順序有可能和數據表中的不一致,這樣就導致查詢到的不是本來的欲得到的數據。
解決方案 1, 用order by select top 30 recid from A order by ricid 如果該字段不是自增長,就會出現問題 2, 在那個子查詢中也加條件:select top 30 recid from A where recid>-1 例2:查詢表中的最后以條記錄,并不知道這個表共有多少數據,以及表結構。set @s = 'select top 1 * from T where pid not in (select top ' + str(@count-1) + ' pid from T)' print @s exec sp_executesql @s。
sql基本語句有哪些
查詢語句-select * from table;
select * from table where 條件1=數值 and 條件2=數值;
select * from table where id in (select id from table);兩表關聯
select a.a,b.b,c.c from table1 a,table2 b,table3 c where *1=*2;
插入語句-insert into table (字段1,字段2,字段3,……)
values (數值1,數值2,數值3,……);
更新語句-update 表名 set 數值 where=id = 1;
添加列語句-alter table 表名
add (列名1 類型1,列名2 類型2,列名3 類型3,……);
修改列類型-alter table 表名
modify (列名1 類型1,列名2 類型2,列名3 類型3,……);
刪除列語句-alter table 表名
drop column 列名s;
顯示查詢時間-set timing on;
刪除表語句-deltet table 表名;
清空表數據-truncate table 表名;
修改列名 - ALTER TABLE emp RENAME COLUMN comm TO newa;
sql查詢語句大全
一、基礎 1、說明:創建數據庫 Create DATABASE database-name 2、說明:刪除數據庫 drop database dbname 3、說明:備份sql server --- 創建 備份數據的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_*' --- 開始 備份 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 on tabname 注:索引是不可更改的,想更改必須刪除重新建。
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%' (所有包含'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] 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: 全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。 [編輯本段]二、提升 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 '"&*h("."&"\*" &"' 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 *,*me,*e from table a,(select max(adddate) adddate from table where *=*) 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 *1=*1 11、說明:四表聯查問題: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c 。
sql 語句大全
1. 查看數據庫的版本 select @@version 2. 查看數據庫所在機器操作系統參數 exec master..xp_msver 3. 查看數據庫啟動的參數 sp_configure 4. 查看數據庫啟動時間 select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 查看數據庫服務器名和實例名 print 'Server Name。
:' + convert(varchar(30),@@SERVERNAME) print 'Instance。
:' + convert(varchar(30),@@SERVICENAME) 5. 查看所有數據庫名稱及大小 sp_helpdb 重命名數據庫用的SQL sp_renamedb 'old_dbname', 'new_dbname' 6. 查看所有數據庫用戶登錄信息 sp_helplogins 查看所有數據庫用戶所屬的角色信息 sp_helpsrvrolemember 修復遷移服務器時孤立用戶時,可以用的fix_orphan_user腳本或者LoneUser過程 更改某個數據對象的用戶屬主 sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner' 注意:更改對象名的任一部分都可能破壞腳本和存儲過程。 把一臺服務器上的數據庫用戶登錄信息備份出來可以用add_login_to_aserver腳本 查看某數據庫下,對象級用戶權限 sp_helprotect 7. 查看鏈接服務器 sp_helplinkedsrvlogin 查看遠端數據庫用戶登錄信息 sp_helpremotelogin 8.查看某數據庫下某個數據對象的大小 sp_spaceused @objname 還可以用sp_toptables過程看最大的N(默認為50)個表 查看某數據庫下某個數據對象的索引信息 sp_helpindex @objname 還可以用SP_NChelpindex過程查看更詳細的索引情況 SP_NChelpindex @objname clustered索引是把記錄按物理順序排列的,索引占的空間比較少。
對鍵值DML操作十分頻繁的表我建議用非clustered索引和約束,fillfactor參數都用默認值。 查看某數據庫下某個數據對象的的約束信息 sp_helpconstraint @objname 9.查看數據庫里所有的存儲過程和函數 use @database_name sp_stored_procedures 查看存儲過程和函數的源代碼 sp_helptext '@procedure_name' 查看包含某個字符串@str的數據對象名稱 select distinct object_name(id) from syscomments where text like '%@str%' 創建加密的存儲過程或函數在AS前面加WITH ENCRYPTION參數 解密加密過的存儲過程和函數可以用sp_decrypt過程 10.查看數據庫里用戶和進程的信息 sp_who 查看SQL Server數據庫里的活動用戶和進程的信息 sp_who 'active' 查看SQL Server數據庫里的鎖的情況 sp_lock 進程號1--50是SQL Server系統內部用的,進程號大于50的才是用戶的連接進程. spid是進程編號,dbid是數據庫編號,objid是數據對象編號 查看進程正在執行的SQL語句 dbcc inputbuffer () 推薦大家用經過改進后的sp_who3過程可以直接看到進程運行的SQL語句 sp_who3 檢查死鎖用sp_who_lock過程 sp_who_lock 11.查看和收縮數據庫日志文件的方法 查看所有數據庫日志文件大小 dbcc sqlperf(logspace) 如果某些日志文件較大,收縮簡單恢復模式數據庫日志,收縮后@database_name_log的大小單位為M backup log @database_name with no_log dbcc shrinkfile (@database_name_log, 5) 12.分析SQL Server SQL 語句的方法: set statistics time {on | off} set statistics io {on | off} 圖形方式顯示查詢執行計劃 在查詢分析器->查詢->顯示估計的評估計劃(D)-Ctrl-L 或者點擊工具欄里的圖形 文本方式顯示查詢執行計劃 set showplan_all {on | off} set showplan_text { on | off } set statistics profile { on | off } 13.出現不一致錯誤時,NT事件查看器里出3624號錯誤,修復數據庫的方法 先注釋掉應用程序里引用的出現不一致性錯誤的表,然后在備份或其它機器上先恢復然后做修復操作 alter database [@error_database_name] set single_user 修復出現不一致錯誤的表 dbcc checktable('@error_table_name',repair_allow_data_loss) 或者可惜選擇修復出現不一致錯誤的小型數據庫名 dbcc checkdb('@error_database_name',repair_allow_data_loss) alter database [@error_database_name] set multi_user CHECKDB 有3個參數: repair_allow_data_loss 包括對行和頁進行分配和取消分配以改正分配錯誤、結構行或頁的錯誤,以及刪除已損壞的文本對象,這些修復可能會導致一些數據丟失。
修復操作可以在用戶事務下完成以允許用戶回滾所做的更改。 如果回滾修復,則數據庫仍會含有錯誤,應該從備份進行恢復。
如果由于所提供修復等級的緣故遺漏某個錯誤的修復,則將遺漏任何取決于該修復的修復。 修復完成后,請備份數據庫。
repai*_**st 進行小的、不耗時的修復操作,如修復非聚集索引中的附加鍵。 這些修復可以很快完成,并且不會有丟失數據的危險。
repair_rebuild 執行由 repai*_**st 完成的所有修復,包括需要較長時間的修復(如重建索引)。 執行這些修復時不會有丟失數據的危險。
添加、刪除、修改使用*e(Sql)命令執行操作 ╔--------------------╗ ☆ 數據記錄篩選 ☆ ╚--------------------╝ 注意:單雙引號的用法可能有誤(沒有測式) Sql = "Select Distinct 字段名 From 數據表" Distinct函數,查詢數據庫存表內不重復的記錄 Sql = "。
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語句功能。
SQL語句大全
sp_helpdb ----------查本服務器中所有數據庫 可跟庫名例:sp_helpdb 庫名-------------------------------------------------------------sp_databases -------------查看本服務器中可用的數據庫--------------------------------------------------------------------sp_helpfile -------------------查看當前工作著的數據庫-----------------------------------------------------------sp_helpfilegroup ---------------查看當前工作著的組的信息。
可加參數,跟組名例:sp_helpdb 庫名----------------------------------------------------------------sp_renamedb -----------改數據庫名例:sp_renamedb 舊庫名,新庫名----------------------------------------------------------------select groupname from sysfilegroups where status=24---------查看文件組 =8是查只讀文件組 =16是查默認文件組 =24是查即只讀又默認---------------------------------------------------------------------------sp_dboption ----------修改數據庫選項值例:sp_dboption 庫名 選項 值 值決定真假 一般用:true/faule 或off/on表示選項一般常用為:use only(數據庫擁有者)single user(單一用戶)read only(只讀)--------------------------------------------------------------------------dbcc shrinkdatabase ---------收縮數據庫例:dbcc shrinkdatabase (庫名,10)收縮庫,剩余空間保留10%,后面如果不加notruncate,則釋放空間操作系統,加truncateonly,歸還空間給操作系統,但忽略所給的百分比數值。----------------------------------------------------------------------dbcc shrinkfile ---------收縮文件用法與ddcc shrinkdatabase相同。
----------------------------------------------------------------------alter database ---------------修改數據庫用法:這是起始句,告訴要做的是修改數據庫,然后再接要做什么工作。每次只做一項工作alter database 庫名add file 文件名。
.to filegroup 文件組名----------------增加庫文件,格式與建庫時括號里指定大小時的格式一樣add log file 文件名 -------------增加日志文件remove file 文件名 ---------刪除庫內的文件add filegroup 文件組名 -----------增加一個文件組modify file 文件名 -------------修改文件屬性modify filegroup 組名 ------------修改文件組屬性---------------------------------------------------------------------------drop database --------------刪除數據庫例:drop database 庫名1,庫名2 ---------可同時刪除兩個庫------------------------------------------------------------------------create table 表名(列名 類型,列名 類型) -------------------建立表--------------------------------------------------------------------select * from 表名 ---------查詢表結構--------------------------------------------------------------------select @@dbts ----------查詢最后一次操作--------------------------------------------------------------------insert into 表名(列名,列名)values (變量,變量。..) ------------向表中插入數據如省略列名,則必須把每列的變量填全,不可缺少。
可以省略 into--------------------------------------------------------------------sp_addtype 自定義類型名 系統類型名 -------用戶自定義類型--------------------------------------------------------------------sp_droptype 自定義類型名 -----------刪除自定義類型如有數據庫正在使用該自定義類型,則不能刪除--------------------------------------------------------------------alter table ---------修改表結構用法: alter table 表名alter column 列名 類型 ---------修改列的類型drop column 列名 --------刪除列add (column) 列名 --------增加列,實際用時不加 column-----------------------------------------------------------------sp_help -------------查看數據庫中對象信息用法: sp_help 表名 ---------------查表的信息或 sp_help 庫名 --------------查庫信息后面可以跟庫名或者表名,是查數據庫或者表的信息-----------------------------------------------------------------sp_spaceused --------查看對象占用的空間信息用法: sp_spaceused ----------查當前庫占用空間信息或 sp_spaceused 表名 ----------查指定表占用空間信息后面可以加表名查看表占空間信息。如不加,則查看當前數據庫。
------------------------------------------------------------------sp_depends ------------查看對象的相關性用法: sp_depends 表名 -----------后面加表名------------------------------------------------------------------sp_rename ---------------重新命名用法: sp_rename 舊表名,新表名 ---------改表名或 sp_rename '表名.舊列名','新列名' 'column' -------修改列名--------------------------------------------------------------------create index --------------創建索引用法: create index 索引名 on 表名 (列名) ------創建索引或: create unique clustered index 索引名 on 表名 (列名)------創建簇集唯一索引 unique是建唯一索引 clustered是建簇集索引---非簇集索引用:nonclustered----------------------------------------------------------------------select top ---------查表中前幾行用法: select top 3 * from 表名 -------查表中前三行或: select top 10 percent * from 表名 -------顯示表中前10%數據------------加入percent是百分比的意思。只以大于的最小整數,無小數----------------------------------------------------------------------select 列名,列名,列名 from 表名 -------顯示表中特定的列----------------------------------------------------------------------select *,列名 from 表名 ----------查詢表中所有,后面再加。