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.臨時表html
1.什麼是SQL語句正則表達式
sql語言:結構化的查詢語言。(Structured Query Language),是關係數據庫管理系統的標準語言。sql
它是一種解釋語言:寫一句執行一句,不須要總體編譯執行。shell
語法特色:數據庫
1.沒有「 」
,字符串使用‘ ’
包含
2.沒有邏輯相等,賦值和邏輯相等都是=
3.類型再也不是最嚴格的。任何數據均可以包含在‘ ’
之內
4.沒有bool值的概念,可是在視圖中能夠輸入true/false
5.它也有關係運算符:> < >= <= = <> !=
,它返回一個bool值
6.它也有邏輯運算符: !(not) &&(and) ||(or)
7.它不區別大小寫c#
2.使用sql語句建立數據庫和表數組
語法:服務器
create database 數據庫名稱 on primary --默認在主文件組上 ( name='邏輯名稱_data' , --當你發現它不是一句完整的sql語句,而僅僅是一個處理結構中的某一句的時候,就須要添加 , size=初始大小,--數值不包含在‘’之內 filegrowth=文件增加 , maxsize=最大容量, filename='物理路徑' ) log on ( name='邏輯名稱_log' , --當你發現它不是一句完整的sql語句,而僅僅是一個處理結構中的某一句的時候,就須要添加 , size=初始大小,--數值不包含在‘’之內 filegrowth=文件增加 , maxsize=最大容量, --通常來講日誌文件不限制最大容量 filename='物理路徑' )
--判斷數據庫文件是否已經存在 :數據庫的記錄都存儲在master庫中的sysdatabases表中 --自動切換當前數據庫 --使用代碼開啓外圍應該配置器 exec sp_configure 'show advanced options' ,1 RECONFIGURE exec sp_configure 'xp_cmdshell',1 RECONFIGURE --自定義目錄 xp_cmdshell能夠建立出目錄 'mkdir f:\project':指定建立目錄 exec xp_cmdshell 'mkdir f:\project' use master --exists 函數判斷()中的查詢語句是否返回結果集,若是返回告終果集則獲得true,不然獲得false if exists( select * from sysdatabases where name='School') drop database School --刪除當前指定名稱的數據庫 create database School on primary ( name='School_data',--邏輯名稱.說明最多可以存儲100mb數據,若是沒有限制就能夠將硬盤存儲滿 size=3mb,--初始大小 maxsize=100mb,--最大容量 filegrowth=10%,--文件增加一次增加10% filename='f:\project\School_data.mdf' ), --建立文件組 filegroup mygroup ( name='School_data1',--邏輯名稱.說明最多可以存儲100mb數據,若是沒有限制就能夠將硬盤存儲滿 size=3mb,--初始大小 maxsize=100mb,--最大容量 filegrowth=10%,--文件增加一次增加10% filename='F:\qiyi\School_data1.ndf' ) log on ( name='School_log',--邏輯名稱 size=3mb,--初始大小 --maxsize=100mb,--最大容量 filegrowth=10%,--文件增加一次增加10% filename='f:\project\School_log.ldf' ), ( name='School_log1',--邏輯名稱 size=3mb,--初始大小 --maxsize=100mb,--最大容量 filegrowth=10%,--文件增加一次增加10% filename='F:\qiyi\School_log1.ldf' )
3.建立數據表框架
語法:ide
create table 表名 ( 字段名稱 字段類型 字段特徵(是否爲null,默認值 標識列 主鍵 惟一鍵 外鍵 check約束), 字段名稱 字段類型 字段特徵(是否爲null,默認值 標識列 主鍵 惟一鍵 外鍵 check約束) ) 建立老師表Teacher :Id、Name、Gender、Age、Salary、Birthday
use School if exists(select * from sysobjects where name='Classes') drop table Classes create table Classes ( Classid int identity(1,1), ClassName nvarchar(50) not null ) if exists(select * from sysobjects where name='teacher') drop table teacher create table Teacher ( Id int identity(1,1),--能夠同時建立多個特徵,用空格 分隔開。 identity是標識列,第一個參數是種子,第二個是增量 Name nvarchar(50) not null,-- not null標記它的值不能爲null--不能不填寫 ClassId int not null, Gender bit not null, Age int , Salary money, --若是不標記爲 not null.那麼就至關於標記了null Birthday datetime )
4.數據完整性約束
實體完整性:實體就是指一條記錄。這種完整性就是爲了保證每一條記錄不是重複記錄。是有意義的
域完整性:域就是指字段,它是爲了保證字段的值是準和有效,合理值
自定義完整性:
引用完整性:一個表的某個字段的值是引用自另一個表的某個字段的值。引用的表就是外鍵表,被引用的表就是主鍵表
5.對於操做的影響
①.在添加數據時,先添加主鍵表再添加外鍵表數據
②.在刪除的時候先外鍵表數據再刪除主鍵表數據
主鍵約束(PK Primary key)惟一鍵約束(UQ unique) 外鍵約束(FK foreign key) 默認值約束(DF default) check約束(CK check)
語法:
alter table 表名 add constraint 前綴_約束名稱 約束類型 約束說明(字段 關係表達式 值)
use School if exists(select * from sysobjects where name='PK_Classes_Classid') alter table classes drop constraint PK_Classes_Classid alter table classes add constraint PK_Classes_Classid primary key(classid) --爲id添加主鍵 alter table teacher add constraint PK_teacher_id primary key(id) --爲name添加惟一鍵 alter table teacher add constraint UQ_Teacher_Name unique(Name) --同時建立salary的默認約束和age的check約束 alter table teacher add constraint DF_Teacher_Salary default(5000) for salary, constraint CK_Teacher_Age check(age>0 and age<=100) --爲teacher表的classid字段建立主外鍵 if exists(select * from sysobjects where name='FK_Teacher_Classes_Classid') alter table teacher drop constraint FK_Teacher_Classes_Classid alter table teacher with nocheck --不檢查現有數據 add constraint FK_Teacher_Classes_Classid foreign key(classid) references classes(classid) --on delete set default 級聯操做 --不執行任何操做:該報錯就報錯,該刪除就刪除 --no action --默認選擇 --級聯:刪除主表記錄,從表引用該值的記錄也被刪除 --cascade --設置null:刪除主表記錄,從表對應的字段值設置爲null,前提是能夠爲null --set null --設置爲default:刪除主表記錄,從表對應的字段值設置爲default,前提是能夠爲default --set default
5.四中基本字符類型說明
--len(參數) --獲取指定參數內容的字符個數 select LEN('abcd') 【4】運行結果 select LEN('中華人民共和國') 【7】 --DataLength(參數):獲取指定內佔據的字節數--空間大小 select DataLength('abcd') 【4】 select DataLength('中華人民共和國') 【14】 --char類型:當空間分配後,不會由於存儲的內容比分配的空間小就回收分配的空間。可是若是存儲的內容超出了指定的空間大小,就會報錯,當你存儲的內容的長度變化區間不大的時候能夠考慮使用char select LEN(char) from CharTest 【2】 select DataLength(char) from CharTest 【10】 --varchar var--變化的:當你存儲的內容小於分配的空間的時候,多餘的空間會自動收縮。可是若是存儲的內容超出了指定的空間大小,就會報錯 當存儲的內容波動區間比較大時候使用varchar select LEN(varchar) from CharTest 【2】 select DataLength(varchar) from CharTest 【2】 --nchar-- n表明它是一個unicode字符。規定無論什麼樣的字符都佔據兩個字節。 char:空間是固定的 select LEN(nchar) from CharTest 【10】 select DataLength(nchar) from CharTest 【20】 --nvarchar n var char select LEN(nvarchar) from CharTest 【2】 select DataLength(nvarchar) from CharTest 【4】
6.SQL基本語句
數據插入
調用方法 一 一對應原則:類型對應,數量對應,順序對應。
語法: 形參 實參
insert into 表名([字段列表]) values(值列表) --數據必需要符合數據完整性 插入操做是單個表的操做 插入操做insert一次只能插入一條記錄
use School --插入teacher全部字段的數據.若是在表後沒有指定須要插入的字段名稱,那麼就默認爲全部字段添加值 --可是必定須要注意的是:標識列永遠不能自定義值--不能人爲插入值 --僅當使用了列列表而且 IDENTITY_INSERT 爲 ON 時,才能爲表'Teacher'中的標識列指定顯式值。 insert into Teacher values('張三',5,1,30,4000,'1984-9-11') insert into Teacher(Name,ClassId,Gender,Age,Salary,Birthday) values('張三',5,1,30,4000,'1984-9-11') --不爲能夠爲null的字段插入值 :能夠null的字段能夠不賦值 --列名或所提供值的數目與表定義不匹配 insert into Teacher(Name,ClassId,Gender,Age,Salary) values('李四',5,1,30,4000) --非空字段必定須要賦值 :不能將值 NULL 插入列 'Gender',表 'School.dbo.Teacher';列不容許有 Null 值。INSERT 失敗 insert into Teacher(Name,ClassId,Age,Salary) values('李四',5,30,4000) --爲有默認值的字段插入值: --1.不寫這一列讓系統自動賦值 insert into Teacher(Name,ClassId,Gender,Age) values('王五',5,1,30) --指定 null或者default insert into Teacher(Name,ClassId,Gender,Age,Salary,Birthday) values('趙六',5,1,30,default,null) --數據必須徹底符合表的完整性約束 insert into Teacher(Name,ClassId,Gender,Age,Salary,Birthday) values('趙六1',5,1,300,default,null) --任意類型的數據均可以包含在''之內, 不包括關鍵字