子曰:“溫故而知新,可以為師矣。”孔子說:“溫習舊知識從而得知新的理解與體會,憑借這一點就可以成為老師了。“ 尤其是咱們搞程序的人,不管是不是全棧工程師,都是集十八般武藝於一身。不過有時候有些知識如果有很久沒用了的話,就會忘記,甚至是忘的你一點都想不起來,尤其是一些基礎的東西。所以我才打算寫個"溫故而知新"的系列博文出來,一來是這些基礎的東西我比較健忘,以后方便自己翻閱;二來是希望可以幫助到一些剛入門的朋友。這個系列記錄的所有知識點都是最最最(重要的事情說三遍)基礎的知識。大部分都是我學習的時候所積累的筆記。
溫故而知新系列都是一些基礎知識,大神可以直接跳過。

v寫在前面
如果十八般武藝都融會貫通,如果什么兵器你都耍得有模有樣,那么這篇博文你大可以跳過了。只是在忘記的時候,可以拿出來溫習溫習。
v基本概念
SQL Server 是Microsoft 公司推出的關系型數據庫管理系統。具有使用方便可伸縮性好與相關軟件集成程度高等優點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2012 的大型多處理器的服務器等多種平台使用。 Microsoft SQL Server 是一個全面的數據庫平台,使用集成的商業智能 (BI)工具提供了企業級的數據管理。Microsoft SQL Server 數據庫引擎為關系型數據和結構化數據提供了更安全可靠的存儲功能,使您可以構建和管理用於業務的高可用和高性能的數據應用程序。
簡單點一句話概括: 數據是具有一定意義的數字、字母、符號的統稱,數據庫就是存放數據的
vSql(Structured Query Language) server基礎
1.Sql server的組成:
- 主要數據庫文件:.mdf 特點:有且只有一個
- 次要數據庫文件:.ndf 特點:任意個
- 日志數據庫文件:.ldf 特點:至少一個
2.操作數據庫:
- 創建數據庫:create databse 庫名
- 查看所有數據庫:exec sp_helpdb
- 查看當前數據庫:exec sp_helpdb 庫名
- 使用數據庫:use 庫名
- 刪除數據庫:drop database 庫名 ps:正在使用的數據庫無法刪除
3.表的結構: 字段 數據類型(屬性)
4.數據類型:
- 整型
- 微整型 tinyint 1個字節
- 小整型 smallint 2個字節
- 整型 int 4個字節
- 大整型 bigint 8個字節
- 浮點型
- float 不能精確存儲數值
- real 不能精確存儲數值
- decimal(numeric ) 同義,用於精確存儲數值
- 字符型
- char 長度在1到8000之間 定長字符數據
- varchar 長度在1到8000之間 變長字符數據
- text 存儲可變長度的非Unicode數據,最大長度為2^31-1(2,147,483,647)個字符
- 時間日期型:datetime 年月日時分秒毫秒
- 貨幣型:money 精確到貨幣單位的千分之十。存儲大小為 8 個字節。存儲形式為12345.67
vsql server表
1.創建表的語法:
create table 表名 ( 字段名稱1 數據類型[屬性], 字段名稱2 數據類型[屬性], ... )
2.查看所有表語法: exec sp_help
3.查看當前表語法: exec sp_help 表名
4.修改表結構:
- 增加一列語法:alter table 表名 add 字段名 數據類型
- 刪除一列語法:alter table 表名 drop column 字段名
- 修改一列語法:alter table 表名 alter column 字段名 數據類型
- 刪除表語法:drop table 表名
5.操作表數據:
- 完全插入數據語法:insert into 表名(字段名1,字段名2...) values(值1,值2...)
- 省略插入數據語法:insert into 表名 values(值1,值2...)
- 部分插入數據語法:insert into 表名(字段名1,字段名2...) values(值1,值2...)
- 多行插入數據語法:insert into 表名 values(值1,值2...),(值1,值2...)
- 查看所有記錄語法:select * from 表名
- 查看部分記錄語法:select 字段名1,字段名2... from 表名
- 修改一條記錄語法:update 表名 set 字段名=值 [where條件]
- 刪除一條記錄語法:delete from 表名 where 條件
- 清空表所有記錄
- delete from 表名
- truncate from 表名 ps:至於他們的區別,我就不多介紹了,有興趣的可以看這里SQL Server中truncate、delete和drop的異同點
6.標識列 identity(初值,增值):
- 定義:能唯一區分表中的每一條記錄,且該屬性是自動增長的
- 特點
- 一個表中有且只有一個標識列
- 標識列不能編輯,不能更新
- 標識列數據類型只能是整型
- 標識列不為null
- 標識列不重復
- 作用:保證數據完整性
7.運算符:
sql server的運算符與其他語言不同,這里列舉三個
- &&-----and
- ||-----or
- !-----not
8.六大約束:
- 檢查約束 check 語法 check(條件)
- 默認約束 default 語法 default'默認語句'
- 非空約束 not null
- 唯一性約束 unique
- 主鍵 primary key
- 主鍵的值不能重復
- 一個表中有且只有一個主鍵
- 外鍵與主鍵相對應
- 主鍵類型可以是整型、字符型
- 語法:字段名 數據類型 primary key
- 外鍵 foreign key references
- 與主鍵相對應
- 外鍵的值一定在主鍵范圍之內
- 外鍵的值可以重復
- 語法:字段名 數據類型 foreign key references 主表名
- 注意事項:
- 在操作主表從表時:先刪除從表,再刪除主表,刪除數據,也要先從后主
- 在建立表時:要先創建主表,再創建從表,插入數據,先主后從
vsql server查詢
1.查詢符合條件的數據: select 字段名 from 表名 [where 條件]
2.之間的
- and ... or
- between ... and
- 例句:查詢23歲到25歲之間的學生
- select * from student where age>=23 and age<=25
- select * from student where age between 23 and 25
3.不顯示重復項:distinct select distinct 字段名 from 表名
4.前幾項 top select top n * from 表名
5.排序 order by + 字段名 asc升序 desc降序(默認情況下為升序) select * from student where age>25 order by name desc
6. is not null/null select * from 表名 where 字段名 is null
7.列起別名as select id as 學生編號, name as 學生姓名 from student as a 注:實際語法中as可以省略
8.高級查詢(模糊查詢) like select 字段名 from 表名 where 字段名 like '通配符 值 通配符'
sql server 通配符
- % 任意字符
- []范圍內任意字符
- [^]非范圍內任意字符
9.聯合查詢 join
- 交叉查詢:select 字段名 from 表1 cross join 表2 [where 條件]
- 內連接查詢:select 字段名 from 表1 inner join 表2 on 聯合條件 [where 條件]
- 外連接
- 左外連接:select 字段名 from 表1 left join 表2 on 聯合條件 [where 條件]
- 右外連接:select 字段名 from 表1 right join 表2 on 聯合條件 [where 條件]
- 全外連接:select 字段名 from 表1 full join 表2 on 聯合條件 [where 條件]
- 多表連接:select 字段名 from 表1 inner join 表2 on 聯合條件 inner join 表3 on 聯合條件 [where 條件]
10.嵌套查詢(嵌套查詢都可以用聯合查詢完成),顯示的字段在一個表中,條件在另外一個表中
- in() 在...范圍之內的
- not in() 不在...范圍之內的
- exists 存在
- not exists 不存在
11. 分組 group by
v系統函數
1.統計(聚合)函數
2.日期函數
- getDate()獲取當前時間
- Dateadd() 增加時間
-
datediff(datepart,startdate,enddate)
startdate 和 enddate 參數是合法的日期表達式。
datepart 參數可以是下列的值:
datepart 縮寫 年 yy, yyyy 季度 qq, q 月 mm, m 年中的日 dy, y 日 dd, d 周 wk, ww 星期 dw, w 小時 hh 分鍾 mi, n 秒 ss, s 毫秒 ms 微妙 mcs 納秒 ns - datepart(datepart,date)函數用於返回日期/時間的單獨部分,比如年、月、日、小時、分鍾等等,datepartd參數可以參見上表
- datename(datepart,date)傳回代表指定 date 之指定 datepart 的字元字串
3.數學函數
- abs()取絕對值
- round()四舍五入
- floor()函數返回小於或等於所給數字表達式的最大整數
- ceiling()函數返回大於或等於所給數字表達式的最小整數
- sqrt()開平方根
- 關於abs()/round()/...這些數學函數的demo可以在我的上篇博客中找到
4.字符串函數
- left()左截串
- right()右截串
- ltrim()去左空格
- rtrim()去右空格
- replace(字符串,舊字符串,新字符串) 替換
- substring(字符串,位置,長度) 截字符串 ps:sql中字符串下標從1開始
- reverse()反轉
- len()長度
- upper()轉大寫
- lower()轉小寫
vT-sql
1.聲明變量語法: declare @變量名 數據類型
給變量賦值
- set @變量名=值
- select @變量名=值
輸出變量 select @變量名
ps:若想輸出變量、聲明變量、變量賦值和變量輸出三條語句需一起執行
2.編程語句
- begin...end
- if...else
v視圖
1.創建視圖
create view 視圖名稱 as sql中查詢語句
2.使用視圖 select * from 視圖名
3.查看視圖 exec sp_help
4.查看視圖內容 exec sp_helptext 視圖名
5.修改視圖 alter view 視圖名 as select * from 表名 [where條件]
6.刪除視圖 drop view 視圖名
7.修改視圖 update 視圖名 set 字段名=值 [where條件]
v存儲過程/觸發器/事務
1.sql server 存儲過程
create proc | procedure pro_name [{@參數數據類型} [=默認值] [output], {@參數數據類型} [=默認值] [output], .... ] as select ......
2.sql server 觸發器
- insert觸發器
- update觸發器
- delete觸發器
- 關於sql server 觸發器這里就不多介紹了,更多詳情大家有興趣可以看這里
3.sql server 事務
關於sql server 事務這里就不多介紹了,更多詳情大家有興趣可以看這里
v博客總結
關於sql server入門教程就寫到這里,只是為了希望幫助到一些入門的朋友,或者一些像我這樣健忘的人朋友恢復記憶。
作 者:請叫我頭頭哥
出 處:http://www.cnblogs.com/toutou/
關於作者:專注於基礎平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!