SQL Server 2012 從頭開始學(xué)筆記

  1. 用Transact-SQL創(chuàng)建數(shù)據(jù)庫


  2. 查看數(shù)據(jù)庫的存儲路徑


    右鍵屬性
  3. sp_helpdb命令查看所有數(shù)據(jù)庫信息

  4. 刪除數(shù)據(jù)庫
    右鍵刪除或使用命令

DROP DATABASE database_name
  1. 視圖攒射、索引咪辱、存儲過程、觸發(fā)器概述


  2. 數(shù)據(jù)類型

  • real是實數(shù)
  • varchar(n) 中的n是存儲字符最大長度
  1. 自定義數(shù)據(jù)類型


  2. 使用資源管理器修改表結(jié)構(gòu)




    若無法保存修改



  3. 使用SQL命令修改表結(jié)構(gòu)

-- 新增字段
ALTER TABLE authors
ADD auth_note VARCHAR(100) NULL

-- 修改字段
ALTER TABLE authors
ALTER COLUMN auth_phone VARCHAR(15)
GO

-- 刪除字段
ALTER TABLE authors
DROP COLUMN auth_phone
  1. 標(biāo)識符



select @@VERSION AS 'SQL Server版本', @@SERVERNAME AS '服務(wù)器名稱'
  1. 局部變量
-- 聲明局部變量
DECLARE @Name varchar(30), @Phone varchar(20), @Address char(2);

-- 用select賦值
DECLARE @MyCount INT
SELECT @MyCount = 10
SELECT @MyCount
GO

-- 用set賦值
DECLARE @rows int
SET @rows = (SELECT count(*) from member)
SELECT @rows
GO

select 與set的區(qū)別:
select可以一次給多個變量賦值,set一次只能給一個
set賦值的是多個值的子查詢會出錯严卖,select會選擇最后一個賦值

  1. GO命令:表示批處理的結(jié)束
    批處理若出錯烟具,則不會執(zhí)行
USE test   -- 指明要操作的數(shù)據(jù)庫
GO   
-- 一個批處理結(jié)束

select * from ...
update ...
...
GO
-- 第二個批處理結(jié)束

依次類推
  1. PRINT輸出用戶自定義信息以及變量的字符串值
DECLARE @name VARCHAR(10) = '小明'  -- 這里DECLARE直接賦值
DECLARE @age INT = 21
PRINT '姓名  年齡'
PRINT @name + '   ' + CONVERT(VARCHAR(20), @age)

-- 若直接PRINT @age會報錯梢什,必須是字符串
  1. 流程控制語句
    14.1 BEGIN...END

用在while循環(huán)和IF...ELSE判斷內(nèi),以包含多條語句

14.2 IF...ELSE

DECLARE @age int
SELECT @age = 10
IF @age < 30
  BEGIN
  PRINT 'HELLO'
  PRINT 'This is a young man!'
  END
ELSE 
  PRINT 'This is an old man!'

14.3 CASE 的兩種用法

USE test_db
SELECT s_id, s_name,
-- 用法一
CASE s_name
  WHEN '馬華' THEN '班長'
  WHEN '張三' THEN '學(xué)習(xí)委員'
  WHEN '李四' THEN '體育委員'
  ELSE '無'
END
AS '職位'
FROM stu_info
SELECT s_id, s_name, s_score,
-- 用法二
CASE 
  WHEN s_score > 90 THEN '優(yōu)秀'
  WHEN s_score > 80 THEN '良好'
  WHEN s_score > 70 THEN '一般'
  WHEN s_score > 60 THEN '及格'
  ELSE '不及格'
END
AS '評價'
FROM stu_info

14.4 WHILE循環(huán)朝聋,注意CONTINUE和BREAK

DECLARE @num INT;
SELECT @num = 10;
WHILE @num > -1
BEGIN
  IF @num > 5
    BEGIN
      PRINT '@num 等于' + CONVERT(VARCHAR(4), @num) + '大于5循環(huán)繼續(xù)執(zhí)行';
      SELECT @num = @num - 1;
      CONTINUE;  -- 結(jié)束本次循環(huán)嗡午,進(jìn)入下一次循環(huán)
    END
  ELSE
    BEGIN
      PRINT '@num 等于' + CONVERT(VARCHAR(4), @num);
      BREAK;  -- 跳出整個循環(huán)
    END
END

PRINT '循環(huán)終止之后@num等于' + CONVERT(VARCHAR(4), @num);

14.5 GOTO

USE test_db;
BEGIN
SELECT s_name FROM stu_info;
GOTO jump            --跳轉(zhuǎn)到j(luò)ump標(biāo)簽
SELECT s_score FROM stu_info;
jump:                       --jump標(biāo)簽
PRINT '第二條SELECT語句沒有執(zhí)行';
END

14.6 WAITFOR延遲

DECLARE @name VARCHAR(50);
SET @name = 'admin';
BEGIN
WAITFOR DELAY '00:00:10';    -- 延遲10秒,標(biāo)準(zhǔn)格式
PRINT @name;
END;

14.7 RETURN 查詢過程無條件退出

RETURN 0;  -- 0表示成功冀痕,1表示失敗
  1. CAST(x AS TYPE)和CONVERT(TYPE, x)數(shù)據(jù)類型轉(zhuǎn)換
SELECT CAST('121231' AS DATE), CAST(100 AS CHAR(3)), CONVERT(TIME, '2012-05-01 12:11:10');
  1. 存儲過程

存儲過程是可重復(fù)調(diào)用的批處理荔睹,系統(tǒng)存儲過程在master數(shù)據(jù)庫中,用戶可以自定義存儲過程

USE mytest;
GO
CREATE PROCEDURE SelProc  -- 創(chuàng)建查詢member表的存儲過程
AS
SELECT * FROM member;
GO
-- 調(diào)用存儲過程
USE mytest;
GO
EXEC SelProc;
-- 創(chuàng)建帶參數(shù)的存儲過程
USE test;
GO
CREATE PROCEDURE QueryById @sID INT
AS
SELECT * FROM fruits WHERE s_id = @sID;
GO
-- 用兩種方式調(diào)用帶參數(shù)存儲過程
USE test;
GO
EXECUTE QueryById 101;
EXECUTE QueryById @sID=101;  -- 多參數(shù)情況下好用
-- 創(chuàng)建帶默認(rèn)參數(shù)的存儲過程
USE test;
GO
CREATE PROCEDURE QueryById @sID INT = 101
AS
SELECT * FROM fruits WHERE s_id = @sID;
GO
-- 創(chuàng)建帶輸出變量的存儲過程
USE test;
GO
CREATE PROCEDURE QueryById3
@sID INT = 101,
@fruitscount INT OUTPUT  -- 輸出變量
AS
SELECT @fruitscount=COUNT(fruits.s_id) FROM fruits WHERE s_id=@sID;
GO
-- 調(diào)用帶輸出參數(shù)的存儲過程
USE test;
GO
DECLARE @fruitscount INT;
DECLARE @sID INT = 101;
EXEC QueryById3 @sID, @fruitscount OUTPUT
SELECT '該供應(yīng)商一共提供了' + LTRIM(STR(@fruitscount)) + '種水果'
GO

用資源管理器可以執(zhí)行言蛇、修改僻他、刪除存儲過程

  1. 函數(shù)
-- 標(biāo)值函數(shù),最后返回一個學(xué)生姓名
CREATE FUNCTION GetStuNameById(@stuid INT)
RETURN VARCHAR(30)
AS
BEGIN
DECLARE @stuName CHAR(30)
SELECT @stuName=(SELECT s_name FROM stu_info WHERE s_id = @stuid)
RETURN @stuName
END
-- 表值函數(shù)腊尚,返回的是一張表
CREATE FUNCTION getStuRecordBySex(@stuSex CHAR(2))
RETURNS TABLE
AS
RETURN
(
  SELECT s_id, s_name, s_sex, (s_score-10) AS newScore
  FROM stu_info
  WHERE s_sex = @stuSex
)

-- 調(diào)用表值函數(shù)
SELECT * FROM getStuRecordbySex('男');
  1. 刪除存儲過程和函數(shù)
DROP PROCEDURE pName;
DROP FUNCTION fName;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吨拗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劝篷,老刑警劉巖哨鸭,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異娇妓,居然都是意外死亡像鸡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門哈恰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來只估,“玉大人,你說我怎么就攤上這事蕊蝗〗雠遥” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵蓬戚,是天一觀的道長夸楣。 經(jīng)常有香客問我,道長子漩,這世上最難降的妖魔是什么豫喧? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮幢泼,結(jié)果婚禮上紧显,老公的妹妹穿的比我還像新娘。我一直安慰自己缕棵,他們只是感情好孵班,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著招驴,像睡著了一般篙程。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上别厘,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天虱饿,我揣著相機(jī)與錄音,去河邊找鬼触趴。 笑死氮发,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的冗懦。 我是一名探鬼主播爽冕,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼披蕉!你這毒婦竟也來了扇售?” 一聲冷哼從身側(cè)響起前塔,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎承冰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體食零,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡困乒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贰谣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娜搂。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吱抚,靈堂內(nèi)的尸體忽然破棺而出百宇,到底是詐尸還是另有隱情,我是刑警寧澤秘豹,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布携御,位于F島的核電站,受9級特大地震影響既绕,放射性物質(zhì)發(fā)生泄漏啄刹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一凄贩、第九天 我趴在偏房一處隱蔽的房頂上張望誓军。 院中可真熱鬧,春花似錦疲扎、人聲如沸昵时。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽修然。三九已至,卻和暖如春娘纷,著一層夾襖步出監(jiān)牢的瞬間么库,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工久橙, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留俄占,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓淆衷,卻偏偏與公主長得像缸榄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子祝拯,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • MYSQL 基礎(chǔ)知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 7,780評論 5 116
  • 什么是SQL數(shù)據(jù)庫: SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫甚带。SQL是...
    西貝巴巴閱讀 1,801評論 0 10
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時她肯,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,176評論 0 9
  • 以下是我讀《得到》上古典老師《超級個體》專欄中的“4-5 聽說你訂了很多專欄看不過來?來看看這條鄙視鏈”的學(xué)習(xí)與思...
    知行迢迢閱讀 866評論 1 0
  • 零八日 剛剛刷知乎看到一句話是“熬過異地戀就結(jié)婚吧”碉输。這不是我第一次看到這句話籽前,卻是我第一次看到這句話的頃刻間流出...
    徐象閱讀 289評論 0 0