1.SQL語句通常分成4類:資料查詢語言、資料操作語言、資料定義語言 (Data Definition Language)和資料控制語言
2.設定日期格式
SET DATEFORMAT mdyGODECLARE @datevar datetimeSET @datevar='03/21/2013'SELECT @datevar
3.局部變數與全域變數
局部變數:用DECLARE語句聲明,用SET語句為其賦值
定義整形局部變數和一個可變長字元局部變數並賦值
DECLARE @local_variable_int int, @local_variable_char nvarchar(9)SELECT @local_variable_int=40SET @local_variable_char='welcome to guangzhou'SELECT @local_variable_intSELECT @local_variable_charGO
全域變數:是SQL Server 系統所提供並賦值的變數,使用者不能建立全域變數,也不能使用SET語句去修改全域變數的值,全域變數的名字以@@開頭
常用的全域變數:
@@connections:返回今天試圖串連到本伺服器的串連數目
@@rowcount:返回上一條T-SQL語句影響到的資料行數
@@error:返回上一條T-SQL語句執行後的錯誤號碼
@@procid:返回當前預存程序的ID標識
@@remserver:返回登入記錄中遠程伺服器的名字
@@spid:返回當前伺服器處理序的ID標識
@@version:返回當前SQL Server 服務器的版本、處理器類型等
4.數學函數
SELECT ABS(-2) /*絕對值*/, SQRT(16)/*開方*/, POWER(4,2)/*平方*/, RAND(2)/*返回0到1之間的隨機float值*/
5.字串函數
SELECT SUBSTRING('MICROSOFT SQL SERVER 2012 ',11,10),/*SQL SERVER*/ REVERSE('MICROSOFT')/*逆序返回*/
6.流程式控制制語言
CASE運算式
CASE expression {WHEN expression THEN result}[,...n][ELSE result]END
BEGIN... END
BEGIN Sql_statement END
IF...ELSE
IF Boolean_expression Sql_statement [ ELSE [IF Boolean_expression] Sql_statement ]
WHILE語句
WHILE boolean_expression sql_statement [BREAK] {Sql_statement} [CONTINUE] {Sql_statement}
7.ERA模型
在ERA模型中,實體一般用長方形表示,關係一般用棱形,屬性一般用橢圓形
8 從student 表檢索名字的第二個字不是“紅”或“虹”的同學的資料;
李紅[大](student表中有兩個學生“李紅”同名同姓,分別以李紅[大]、李紅[小]加以區分)同學的資訊
select * from student where student_name like '_[^紅,虹]%'select * from student where student_name like '李紅b[大b]' escape 'b'
在ESCAPE 子句中,定義"b"為逸出字元,這樣,like 子句中緊跟字元"b"後面的字元被定義為匹配字元而不再是萬用字元
9.多表查詢:基於主鍵和外鍵指定查詢條件,串連條件可使用"主鍵=外鍵"
從student、course及student_course 三個表中檢索學生的學號,姓名,學習課程號、學習課程名及課程成績
select student.student_id,student.student_name,student_course.course_id,course.course_name,student_course.grade
from student, course,student_coursewhere student.student_id =student_course.student_id and course.course_id =student_course.course_id
10.使用UNION子句:把兩個或多個SELECT 語句查詢的結果組合成一個結果集
select student_id,student_name from studentunionselect teacher_id,teacher_name from teacher
11.Having 子句 是針對Group By 子句的,沒有group by 子句時使用having 子句是沒有意義的
select student_id,sum(grade) from student_course group by student_id having sum(grade)>450
12.使用compute 和coupute by 子句
select student_id ,grade from student_course order by student_id compute sum(grade)
select student_id,grade from student_course order by student_id compute sum(grade) by student_id
13.若建暫存資料表,必須在表前設定#(局部暫存資料表)或##(全域暫存資料表)#temp_grade
14.刪除表的列:
alter table [dbo].[Students] drop column [student_num]
修改表的列
alter table [dbo].[Students] alter column [course_id] int not null