sqlmdfldf
㈠ sql有哪些函數
1.絕對值
SQL:select abs(-1) value
O:select abs(-1) value from al
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from al
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) value from al
4.取整(截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from al
5.四捨五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from al 1.2346
6.e為底的冪
S:select Exp(1) value 2.7182818284590451
O:select Exp(1) value from al 2.71828182
7.取e為底的對數
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from al; 1
8.取10為底對數
S:select log10(10) value 1
O:select log(10,10) value from al; 1
9.取平方
S:select SQUARE(4) value 16
O:select power(4,2) value from al 16
10.取平方根
S:select SQRT(4) value 2
O:select SQRT(4) value from al 2
11.求任意數為底的冪
S:select power(3,4) value 81
O:select power(3,4) value from al 81
12.取隨機數
S:select rand() value
O:select sys.dbms_random.value(0,1) value from al;
13.取符號
S:select sign(-8) value -1
O:select sign(-8) value from al -1
----------數學函數
14.圓周率
S:SELECT PI() value 3.1415926535897931
O:不知道
15.sin,cos,tan 參數都以弧度為單位
例如:select sin(PI()/2) value 得到1(SQLServer)
16.Asin,Acos,Atan,Atan2 返回弧度
17.弧度角度互換(SQLServer,Oracle不知道)
DEGREES:弧度-〉角度
RADIANS:角度-〉弧度
---------數值間比較
18. 求集合最大值
S:select max(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
O:select greatest(1,-2,4,3) value from al
19. 求集合最小值
S:select min(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
O:select least(1,-2,4,3) value from al
20.如何處理null值(F2中的null以10代替)
S:select F1,IsNull(F2,10) value from Tbl
O:select F1,nvl(F2,10) value from Tbl
--------數值間比較
21.求字元序號
S:select ascii('a') value
O:select ascii('a') value from al
22.從序號求字元
S:select char(97) value
O:select chr(97) value from al
23.連接
S:select '11'+'22'+'33' value
O:select CONCAT('11','22')||33 value from al
23.子串位置 --返回3
S:select CHARINDEX('s','sdsq',2) value
O:select INSTR('sdsq','s',2) value from al
23.模糊子串的位置 --返回2,參數去掉中間%則返回7
S:select patindex('%d%q%','sdsfasdqe') value
O:oracle沒發現,但是instr可以通過第四霾問 刂瞥魷執問?BR> select INSTR('sdsfasdqe','sd',1,2) value from al 返回6
24.求子串
S:select substring('abcd',2,2) value
O:select substr('abcd',2,2) value from al
25.子串代替 返回aijklmnef
S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value
O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from al
26.子串全部替換
S:沒發現
O:select Translate('fasdbfasegas','fa','我' ) value from al
27.長度
S:len,datalength
O:length
28.大小寫轉換 lower,upper
29.單詞首字母大寫
S:沒發現
O:select INITCAP('abcd dsaf df') value from al
30.左補空格(LPAD的第一個參數為空格則同space函數)
S:select space(10)+'abcd' value
O:select LPAD('abcd',14) value from al
31.右補空格(RPAD的第一個參數為空格則同space函數)
S:select 'abcd'+space(10) value
O:select RPAD('abcd',14) value from al
32.刪除空格
S:ltrim,rtrim
O:ltrim,rtrim,trim
33. 重復字元串
S:select REPLICATE('abcd',2) value
O:沒發現
34.發音相似性比較(這兩個單詞返回值一樣,發音相同)
S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')
O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from al
SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比較soundex的差
返回0-4,4為同音,1最高
--------------日期函數
35.系統時間
S:select getdate() value
O:select sysdate value from al
36.前後幾日
直接與整數相加減
37.求日期
S:select convert(char(10),getdate(),20) value
O:select trunc(sysdate) value from al
select to_char(sysdate,'yyyy-mm-dd') value from al
38.求時間
S:select convert(char(8),getdate(),108) value
O:select to_char(sysdate,'hh24:mm:ss') value from al
39.取日期時間的其他部分
S:DATEPART 和 DATENAME 函數 (第一個參數決定)
O:to_char函數 第二個參數決定
參數---------------------------------下表需要補充
year yy, yyyy
quarter qq, q (季度)
month mm, m (m O無效)
dayofyear dy, y (O表星期)
day dd, d (d O無效)
week wk, ww (wk O無效)
weekday dw (O不清楚)
Hour hh,hh12,hh24 (hh12,hh24 S無效)
minute mi, n (n O無效)
second ss, s (s O無效)
millisecond ms (O無效)
----------------------------------------------
40.當月最後一天
S:不知道
O:select LAST_DAY(sysdate) value from al
41.本星期的某一天(比如星期日)
S:不知道
O:SELECT Next_day(sysdate,7) vaule FROM DUAL;
42.字元串轉時間
S:可以直接轉或者select cast('2004-09-08'as datetime) value
O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;
43.求兩日期某一部分的差(比如秒)
S:select datediff(ss,getdate(),getdate()+12.3) value
O:直接用兩個日期相減(比如d1-d2=12.3)
SELECT (d1-d2)*24*60*60 vaule FROM DUAL;
44.根據差值求新的日期(比如分鍾)
S:select dateadd(mi,8,getdate()) value
O:SELECT sysdate+8/60/24 vaule FROM DUAL;
45.求不同時區時間
S:不知道
O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;
-----時區參數,北京在東8區應該是Ydt-------
AST ADT 大西洋標准時間
BST BDT 白令海標准時間
CST CDT 中部標准時間
EST EDT 東部標准時間
GMT 格林尼治標准時間
HST HDT 阿拉斯加—夏威夷標准時間
MST MDT 山區標准時間
NST 紐芬蘭標准時間
PST PDT 太平洋標准時間
YST YDT YUKON標准時間
Oracle支持的字元函數和它們的Microsoft SQL Server等價函數:
函數 Oracle Microsoft SQL Server
把字元轉換為ASCII ASCII ASCII
字串連接 CONCAT (expression + expression)
把ASCII轉換為字元 CHR CHAR
返回字元串中的開始字元(左起) INSTR CHARINDEX
把字元轉換為小寫 LOWER LOWER
把字元轉換為大寫 UPPER UPPER
填充字元串的左邊 LPAD N/A
清除開始的空白 LTRIM LTRIM
清除尾部的空白 RTRIM RTRIM
字元串中的起始模式(pattern) INSTR PATINDEX
多次重復字元串 RPAD REPLICATE
字元串的語音表示 SOUNDEX SOUNDEX
重復空格的字串 RPAD SPACE
從數字數據轉換為字元數據 TO_CHAR STR
子串 SUBSTR SUBSTRING
替換字元 REPLACE STUFF
將字串中的每個詞首字母大寫 INITCAP N/A
翻譯字元串 TRANSLATE N/A
字元串長度 LENGTH DATELENGTH or LEN
列表中最大的字元串 GREATEST N/A
列表中最小的字元串 LEAST N/A
如果為NULL則轉換字串 NVL ISNULL
日期函數
函數 Oracle Microsoft SQL Server
日期相加 (date column +/- value) or
ADD_MONTHS DATEADD
兩個日期的差 (date column +/- value) or
MONTHS_BETWEEN DATEDIFF
當前日期和時間 SYSDATE GETDATE()
一個月的最後一天 LAST_DAY N/A
時區轉換 NEW_TIME N/A
日期後的第一個周日 NEXT_DAY N/A
代表日期的字元串 TO_CHAR DATENAME
代表日期的整數 TO_NUMBER
(TO_CHAR)) DATEPART
日期舍入 ROUND CONVERT
日期截斷 TRUNC CONVERT
字元串轉換為日期 TO_DATE CONVERT
如果為NULL則轉換日期 NVL ISNULL
轉換函數
函數 Oracle Microsoft SQL Server
數字轉換為字元 TO_CHAR CONVERT
字元轉換為數字 TO_NUMBER CONVERT
日期轉換為字元 TO_CHAR CONVERT
字元轉換為日期 TO_DATE CONVERT
16進制轉換為2進制 HEX_TO_RAW CONVERT
2進制轉換為16進制 RAW_TO_HEX CONVERT
其它行級別的函數
函數 Oracle Microsoft SQL Server
返回第一個非空表達式 DECODE COALESCE
當前序列值 CURRVAL N/A
下一個序列值 NEXTVAL N/A
如果exp1 = exp2, 返回null DECODE NULLIF
用戶登錄賬號ID數字 UID SUSER_ID
用戶登錄名 USER SUSER_NAME
用戶資料庫ID數字 UID USER_ID
用戶資料庫名 USER USER_NAME
當前用戶 CURRENT_USER CURRENT_USER
用戶環境(audit trail) USERENV N/A
在CONNECT BY子句中的級別 LEVEL N/A
合計函數
函數 Oracle Microsoft SQL Server
Average AVG AVG
Count COUNT COUNT
Maximum MAX MAX
Minimum MIN MIN
Standard deviation STDDEV STDEV or STDEVP
Summation SUM SUM
Variance VARIANCE VAR or VARP
Oracle還有一個有用的函數EXTRACT,提取並且返回日期時間或時間間隔表達式中特定的時間域:
EXTRACT(YEAR FROM 日期)
㈡ SQl常用增刪改查
SQl常用增刪改查模板
篇一:SQl常用增刪改查
SQL常用增刪改查語句
增加
現在有一張表,表(Test)裡面有三個欄位,分別為sno,sname,age。舉例用一條增加SQL語句,插入一條數據進庫。
語句:
Insert into 表名 value(『數據1』,』數據2』,』數據3』)
具體操作: Insert into testvalues('test','test','1')
通過上面這條語句,Test表裡面就多了一條數據。如下圖所示:
上面這個例子,是在每條欄位都需要插入的時候為了方便而直接在 into 後面跟表名。但是也會遇到一些特殊的情況,比如一張表,因為有主外鍵約束(我這里只有一張表),而我只想插入被約束的欄位sno(主鍵)加上age這個欄位,在 into的時候就需要指明需要插入的欄位,下面舉例說明:
語句:
Insert into 表名(『欄位名1』,』欄位名2』) values(『數據1』,』數據2』)
具體操作:
into test(sno,age)values('彭宇','21')
這樣資料庫裡面,又多了一條數據,而沒有插入任何數據那個欄位默認為NULL。如下圖所示:
刪除
在我們增加數據入庫的時候,難免會出現數據錄入錯誤,或者信息過期後不再需要的數據,所以我們要利用刪除語句將表裡面不需要的數據刪除掉。下面舉例說明。
語句:
Delete from 表名 where 欄位名='需要刪除的數據'
具體操作:
from test where sno='test'
通過這條SQL語句,Test表主鍵sno欄位裡面數據為test的該條數據就已經被刪除了。
Ps:一般來說都以主鍵為條件進行刪除,因為主鍵是不可重復的,我們可以設想一下,如果沒使用主鍵為刪除條件,假設一個公司有兩個叫彭宇的人。我使用sname=』彭宇』作為刪除條件的話,那麼這兩個同名同姓人的資料都會被刪除掉,所以這是不可取的。
批量刪除
當有多條數據需要刪除的時候,我們可以使用批量刪除語句來實現一次刪除多條數據。
語句:
from表名where欄位名in('該欄位裡面的數據1','該欄位裡面的數據2',……)
具體操作:
首先,看一下Test表裡面有多少條數據,如下圖:
現在我想利用一條SQL語句,將前三條數據刪除掉。
from test where sno in('test','test2','test3')
通過執行這條SQL語句後,前三條數據已經被我批量刪除了。
修改
一條已經錄入資料庫裡面的數據如果需要更新、修正,我們就需要用到SQL修改語句。
語句:
Update 表名set欄位='修改後的數據' where 欄位='修改條件'
具體操作:
Update test set sno='SQL修改語句' where sno='test'
修改前後比較,下圖所示: (
修改前
)(修改後)
查詢
上面進行了增加,修改操作後,資料庫裡面已經存在有數據了,最後我們要利用SQL查詢語句將它們查詢並顯示出來。
全部查詢
語句:
Select * from 表名
具體操作:
Select * from test
執行了上面這句話,那麼test表裡面存在的數據都會被查詢出來,如果我想要單獨查詢出某個人的數據怎麼辦?很簡單,只需要加上一個關鍵詞where就能夠實現了。
單條件查詢
語句:
Select * from 表名 where 欄位=』需要查詢的數據』
具體操作:
Select * from test where sno=』彭宇』
這樣我就查詢出資料庫裡面sno欄位為彭宇的數據了。
多條件查詢
多條件查詢就是比起單條件查詢多了一個and關鍵詞,使用多條件查詢,查出來的結構能夠更加的精確。
語句:
Select * from 表名 where 欄位=』需要查詢的數據』 and 欄位=』需要查詢的數據』
具體操作:
Select * from test where sno=』彭宇』』21』 and age=
篇二:SQL語句增刪改查
一、刪:有2中方法
1.使用刪除數據某些數據
語法: from <表名> [where <刪除條件>]
例: from a where name='開心朋朋'(刪除表a中列值為開心朋朋的行) 注意:刪除整行不是刪除單個欄位,所以在後面不能出現欄位名
2.使用truncate table 刪除整個表的數據
語法:truncate table <表名>
例:truncate table tongxunlu
注意:刪除表的所有行,但表的結構、列、約束、索引等不會被刪除;不能用語有外建約束引用的表
二、改
使用update更新修改數據
語法:<表名> set <列名=更新值> [where <更新條件>]例:tongxunlu set 年齡=18 where 姓名='藍色小名'
注意:set後面可以緊隨多個數據列的更新值;where子句是可選的,用來限制條件,如果不選則整個表的所有行都被更新
四、查
1.普通查詢
語法:select <列名> from <表名> [where <查詢條件表達試>] [order by <排序的列名>[asc或desc]]
1).查詢所有數據行和列
例:select * from a
說明:查詢a表中所有行和列
2).查詢部分行列--條件查詢
例:select i,j,k from a where f=5 說明:查詢表a中f=5的所有行,並顯示i,j,k3列
3).在查詢中使用AS更改列名
例:select name as 姓名 from a whrer xingbie='男'
說明:查詢a表中性別為男的所有行,顯示name列,並將name列改名為(姓名)顯示
4).查詢空行
例:select name from a where email is null
說明:查詢表a中email為空的所有行,並顯示name列;SQL語句中用is null或者is not null來判斷是否為空行
5).在查詢中使用常量
例:select name '唐山' as 地址 from a
說明:查詢表a,顯示name列,並添加地址列,其列值都為'唐山'
6).查詢返回限制行數(關鍵字:top percent)
例1:select top 6 name from a
說明:查詢表a,顯示列name的前6行,top為關鍵字
例2:select top 60 percent name from a
說明:查詢表a,顯示列name的60%,percent為關鍵字
7).查詢排序(關鍵字:order by , asc , desc)
例:select name
from a
where chengji>=60
order by desc
說明:查詢表中chengji大於等於60的所有行,並按降序顯示name列;默認為ASC升序
2.模糊查詢
1).使用like進行模糊查詢
注意:like運算副只用語字元串,所以僅與char和varchar數據類型聯合使用 例:select * from a where name like '趙%'
說明:查詢顯示表a中,name欄位第一個字為趙的記錄
2).使用between在某個范圍內進行查詢
例:select * from a where nianling between 18 and 20
說明:查詢顯示表a中nianling在18到20之間的記錄
3).使用in在列舉值內進行查詢
例:select name from a where address in ('北京','上海','唐山')
說明:查詢表a中address值為北京或者上海或者唐山的記錄,顯示name欄位3.分組查詢
1).使用group by進行分組查詢
例:select studentID as 學員編號,AVG(score) as 平均成績 (注釋:這里的score是列名)
from score (注釋:這里的score是表名)
group by studentID
說明:在表score中查詢,按strdentID欄位分組,顯示strdentID欄位和score欄位的平均值;select語句中只允許被分組的列和為每個分組返回的一個值的表達試,例如用一個列名作為參數的聚合函數
2).使用having子句進行分組篩選
例:select studentID as 學員編號,AVG(score) as 平均成績 (注釋:這里的score是列名)
from score (注釋:這里的score是表名)
group by studentID
having count(score)>1
說明:接上面例子,顯示分組後count(score)>1的行,由於where只能在沒有分組時使用,分組後只能使用having來限制條件,
4.多表聯接查詢
1).內聯接
①在where子句中指定聯接條件
例:select a.name,b.chengji
from a,b
where a.name=b.name
說明:查詢表a和表b中name欄位相等的記錄,並顯示表a中的name欄位和表b中的chengji欄位
②在from子句中使用join…on
例:select a.name,b.chengji
from a inner join b
on (a.name=b.name)
說明:同上
2).外聯接
①左外聯接查詢
例:select s.name,c.courseID,c.score
from strdents as s
left outer join score as c
on s.scode=c.strdentID
說明:在strdents表和score表中查詢滿足on條件的行,條件為score表的.strdentID與strdents表中的sconde相同
②右外聯接查詢
例:select s.name,c.courseID,c.score
from strdents as s
right outer join score as c
on s.scode=c.strdentID
說明:在strdents表和score表中查詢滿足on條件的行,條件為strdents表中的sconde與score表的strdentID相同
三、增:有4種方法
1.使用插入單行數據:
語法: [into] <表名> [列名] values <列值>
例: into Strdents (姓名,性別,出生日期) values ('開心朋朋','男','1980/6/15')
注意:into可以省略;列名列值用逗號分開;列值用單引號因上;如果省略表名,將依次插入所有列
2.使用 select語句將現有表中的數據添加到已有的新表中
語法: into <已有的新表> <列名>
select <原表列名> from <原表名>
例: into tongxunlu ('姓名','地址','電子郵件')
select name,address,email
from Strdents
注意:into不可省略;查詢得到的數據個數、順序、數據類型等,必須與插入的項保持一致
3.使用select into語句將現有表中的數據添加到新建表中
語法:select <新建表列名> into <新建表名> from <源表名>例:select name,address,email into tongxunlu from strdents
注意:新表是在執行查詢語句的時候創建的,不能夠預先存在
在新表中插入標識列(關鍵字『identity』):
語法:select identity (數據類型,標識種子,標識增長量) AS 列名
into 新表 from 原表名
例:select identity(int,1,1) as 標識列,dengluid,password into tongxunlu from Struents
注意:關鍵字『identity』
4.使用union關鍵字合並數據進行插入多行
語法: <表名> <列名> select <列值> tnion select <列值>
例: Students (姓名,性別,出生日期)
select '開心朋朋','男','1980/6/15' union(union表示下一行)
select '藍色小明','男','19**/**/**'
注意:插入的列值必須和插入的列名個數、順序、數據類型一致
篇三:SQL常用增刪改查語句
SQLSQL常用增刪改查語句
作者:hiker
一. Insert 插入語句
1. Insert into 表名(列名) values (對應列名值)//插入一行.
2. Insert into 新表名(列名)
Select (列名) 舊表名
3. Select 舊表名.欄位…
Into 新表名 from 舊表名
4. Select identity ( 數據類型,標識種子,標識增長量) as 列名
Into新表名
From 舊表名
5. Insert 表名(列名)
Select (對應列名值) union
Select (對應列名值) union
Select (對應列名值)
二. Update 更新語句
1. Update 表名 set 列名=』更新值』 where 更新條件
三. 刪除語句
1. from 表名 where 刪除條件
2. truncate table 表名 //刪除表中所有行
四. select 基本查詢語句
1. select 列名 from 表名 where 查詢條件
order by 排序的列名asc或desc升/降
2. select 列名 as 別名 from 表名 where 查詢條件
3. select 列名 from 表名 where 列名 is null //查詢空值
4. select 列名 , 『常量值』 as 別名 from 表名//查詢時定義輸出一列常量值
5. select top 5 列名 from 表名 //查詢前5行
6. select top 5 percent 列名 from 表名 //查詢前百分之5的數據行
五.
1.
2.
3.
4. select 函數查詢語句 selectLEN(Class_Name)fromClass //查詢class_Name字元串長度 selectupper(Class_Name)fromClass //查詢class_Name並轉換為大寫 ltrim和rtrim //清除字元串左右空格 selectREPLACE(card_No,'0','9')fromCardRecord//修改列中字元串中的字元 列名字元串中0修改為9
5. selectSTUFF(Card_No,2,3,'8888')fromCardRecord
列名字元串中第2個開始刪除3個字元,再從第二個開始插入8888字元串
6. selectGETDATE()//顯示系統日期
六.
1.
2.
3.
4.
5. select 高級查詢語句 select * from 表名 where列名 like 『 %s%』 //模糊查詢 select * from 表名 where 列名 between 60 and 80 //范圍查詢 select * from 表名 where 列名 in (『列舉』,』』,』』) //在列舉范圍內查詢 selectSUM(Score_Num)fromscores //查詢分數總和 avg max min count //查詢平均分/最大數/最小數/行數
selectcourse_Id,SUM(Score_Num)fromscores
groupbyCourse_Id//分組查詢
havingCourse_Id='jsj001'//分組子句篩選
七. Select 多表連接查詢語句
1.selects.stu_Nameas'姓名',c.Course_nameas'科目',sc.Score_Num
fromStudentsass
innerjoinScoresasscon(sc.Stu_Id=s.Stu_ID)
innerjoinCoursesascon(sc.Course_Id=c.Course_Id)
orderbys.Stu_Namedesc //三表內聯查詢
2.selects.stu_Nameas'姓名',c.Course_nameas'科目',sc.Score_Num
fromStudentsass
leftouterjoinScoresasscon(sc.Stu_Id=s.Stu_ID)
leftouterjoinCoursesascon(sc.Course_Id=c.Course_Id)
//三表左外聯查詢,以stu表為主,其它表為從。
3.selects.stu_Nameas'姓名',c.Course_nameas'科目',sc.Score_Num
fromCoursesasc
rightouterjoinScoresasscon(sc.Course_Id=c.Course_Id)
rightouterjoinStudentsasson(sc.Stu_Id=s.Stu_ID)
//三表右外聯查詢,以stu右表為主,其它表為從。
八. Create 創建資料庫語句
1. create database 資料庫名
on[primary]
(
<數據文件參數>[,…n] [<文件參數>]
)
[log on]
(
{<日誌文件參數> […n]}
)
文件參數:
Name=邏輯文件名,filename=物理文件名,size=大小,maxsize=最大容量,
Filegrowth=增長
文件組參數:
Filegroup 文件組名<文件參數>
例:
usemaster
go
ifexists(select*fromsysdatabaseswherename='abc')
dropdatabaseabc
createdatabaseabc
onprimary
(
name='abc',
filename='d:abc.mdf',
size=5,
maxsize=50,
filegrowth=10%
)
logon
(
name='abc_log',
filename='d:abc_log.ldf',
size=2,
maxsize=20,
filegrowth=1
)
2. use 資料庫名
go
create table 表名
(
欄位數據類型列的特徵
)
Go
例:
usedb_myschool
go
ifexists(select*fromsysobjectswherename='test1')
droptabletest1
createtabletest1
(
Idintnotnull,
SNamenvar50)notnull,
Telintnotnull
)
go
3.使用SQL語句創建和刪除約束
alter table表名
Add constraint 約束名約束類型描述說明
altertabledbo.testaddconstraintPK_IDprimarykey (ID)
主鍵:primary keyPK_ 唯一:uniqueUQ_ 檢查:check CK_ 默認:defaultDF_外鍵:foreign keyFK_
1.execsp_addlogin'abc','abc'//添加SQL用戶名
usedb_myqq
go
execsp_grantdbaccess'abc'//添加用戶名到資料庫中
3. 授權語句
Grant 許可權 on 表名 to 資料庫用戶名 九. 登錄驗證語句
十. SQL編程語句
局部變數/全局變數
1.以@標記符作前綴
Declare @name var8)//聲明
Set @name = value
Select @name=value//賦值
2.以@@標記符作前綴
@@error //最後一個T-SQL錯誤的錯誤號
@@identity //最後一次插入的標識值
@@language//當前使用的語言的名稱
@@max_connections //可以創建的同時連接的最大數目
@@rowcount //受上一個SQL語句影響的行數
@@servername//本地伺服器的名稱
@@servicename //該計算機上的SQL服務的名稱
@@timeticks //當前計算機上每刻度的微秒數
@@transcount //當前連接打開的事務數
@@version //SQL Server的版本信息
4. 輸出
print'SQL服務名:'+@@servicename
select@@SERVICENAMEas'SQL服務名'
5. 邏輯控制項語句
declare@avgfloat
select@avg=avg(Score_Num)fromScoreswhereStu_Id='sc0002'
print'平均分為'+convert(var8),@avg)+'分'
if(@avg>90)
begin
print'最高分'
selectMAX(Score_Num)fromScores
end
else
begin
print'最低分'
selectMIN(Score_Num)fromScores
6. while 循環語句
declare@nint
while(1=1)
begin
select@n=COUNT(*)fromScoreswhereScore_Num<60
if(@n>0)
updateScoressetScore_Num+=2 whereScore_Num<60
else
break
end
print'加分後的成績'
select*fromScores
7. Case多分支語句
selectStu_id,score=case
whenScore_Num>90 then'A'
whenScore_Numbetween 80 and 89 then'B'
whenScore_Numbetween 60 and 79 then'C'
else'D'
end
fromScores
十一.高級查詢
1. where子查詢
2. in 和 not in 子查詢
3. if exists (子查詢)
;㈢ SQL Server資料庫的物理文件有哪些
在microsoft
sql
server
2005中,用於數據存儲的實用工具是資料庫。資料庫的物理表現是操作系統文件,即在物理上,一個資料庫由一個或多個磁碟上的文件組成。這種物理表現只對資料庫管理員是可見的,而對用戶是透明的。邏輯上,一個資料庫由若干個用戶可視的組件構成,如表、視圖、角色等,這些組件稱為資料庫對象。用戶利用這些邏輯資料庫的資料庫對象存儲或讀取資料庫中的數據,也直接或間接地利用這些對象在不同應用程序中完成存儲、操作和檢索等工作。邏輯資料庫的資料庫對象可以從企業管理器中查看.
每個sql
server
2005資料庫(無論是系統資料庫還是用戶資料庫)在物理上都由至少一個數據文件和至少一個日誌文件組成。出於分配和管理目的,可以將資料庫文件分成不同的文件組。
數據文件:分為主要數據文件和次要數據文件兩種形式。每個資料庫都有且只有一個主要數據文件。主要數據文件的默認文件擴展名是.mdf。它將數據存儲在表和索引中,包含資料庫的啟動信息,還包含一些系統表,這些表記載資料庫對象及其他文件的位置信息。次要數據文件包含除主要數據文件外的所有數據文件。有些資料庫可能沒有次要數據文件,而有些資料庫則有多個次要數據文件。次要數據文件的默認文件擴展名是.ndf。
日誌文件:sql
server具有事務功能,以保證資料庫操作的一致性和完整性。所謂事務就是一個單元的工作,該單元的工作要麼全部完成,要麼全部不完成。日誌文件用來記錄資料庫中已發生的所有修改和執行每次修改的事務。sql
server是遵守先寫日誌再執行資料庫修改的資料庫系統,因此如果出現資料庫系統崩潰,資料庫管理員(dba)可以通過日誌文件完成資料庫的修復與重建。每個資料庫必須至少有一個日誌文件,但可以
不止一個。日誌文件的默認文件擴展名是.1df。建立資料庫時,sqi。server會自動建立資料庫的日誌文件。
文件組:一些系統可以通過控制在特定磁碟驅動器上放置的數據和索引來提高自身的性能。文件組可以對此進程提供幫助。系統管理員可以為每個磁碟驅動器創建文件組,然後將特定的表、索引、或表中的text、ntext或image數據指派給特定的文件組。
sqi.server有兩種類型的文件組:主文件組和用戶定義文件組。主文件組包含主要數據文件和任何沒有明確指派給其他文件組的文件,系統表的所有頁均分配在主文件組中;用戶定義文件組是在cr
e_ate
data_base或ai,ter
data.base語句中,使用fii,egroup關鍵字指定的文件組。sqt.server
2005在沒有文件組時也能有效地工作,因此許多系統不需要指定用戶定義文件組。在這種情況下,所有文件都包含在主文件組中,而且sqi。server
2005可以在資料庫內的任何位置分配數據。
每個資料庫中都有一個文件組作為默認文件組運行。當sqi。server給創建時沒有為其指定文件組的表或索引分配頁時,將從默認文件組中進行分配。一次只能有一個文件組作為默認文件組。如果沒有指定默認的文件組,主文件組則成為默認的文件組。
㈣ SQL添加默認約束,如何將它默認為當前日期
1、當數據表中存在數據,修改具有默認約束的欄位定義時。
2、凳逗需要先刪除已有約束,才能對欄位定義進行修改。
3、而在SQL Server建表時創建的默認約束,其名稱後會自動生成一段隨機碼。
4、因此在刪除時需要找到謹慎(在SQL Server Management Studio中選擇表——>約束,可以看到以DF_開棗晌賣頭的默認約束)已有約束名,再進行刪除,這一過程較為繁瑣。