SQL server 复习一
第一天
下面我們從最基礎(chǔ)的開(kāi)始:
在運(yùn)行里面輸入:services.msc
?
一、啟動(dòng)服務(wù)
?
?
?
二、數(shù)據(jù)庫(kù)登錄的兩種身份驗(yàn)證方式
另外一種身份驗(yàn)證方式就是SQL Server身份驗(yàn)證.
sa不能使用的時(shí)候可以這樣的操作:
1.用windows登錄,然后在“實(shí)例”右鍵“屬性”,“安全性”,設(shè)置“服務(wù)器身份驗(yàn)證方式”
為“SQl Server和windows混合”,點(diǎn)擊確定。“重啟服務(wù)”.
2.啟用sa賬號(hào)。用windows連接好數(shù)據(jù)庫(kù)后,點(diǎn)擊“安全性”,→“登錄名”→右鍵“sa”屬性,→狀態(tài)→啟用,啟用后,再找到“常規(guī)”選項(xiàng)卡,修改sa的密碼。
?
實(shí)例
?
啟用sa賬號(hào)
?
相關(guān)的登錄操作已經(jīng)介紹完了,接下來(lái)開(kāi)始進(jìn)入實(shí)戰(zhàn)
1.創(chuàng)建數(shù)據(jù)庫(kù):
?
三、創(chuàng)建數(shù)據(jù)庫(kù)
怎么樣建一張表呢?
?
四、新建表
?
?
五、如何設(shè)定自動(dòng)編號(hào)
?
六、修改創(chuàng)建好的表
?
七、給表中添加數(shù)據(jù)
?
八、數(shù)據(jù)庫(kù)中的常用數(shù)據(jù)類(lèi)型
上圖中列舉的是常用的數(shù)據(jù)庫(kù)當(dāng)中的數(shù)據(jù)類(lèi)型。
下面分別介紹一下。
有的時(shí)候圖片信息是存儲(chǔ)在數(shù)據(jù)庫(kù)里面的,這個(gè)時(shí)候就要用二進(jìn)制image類(lèi)型。
?
char(10)存的多了不行,如11個(gè),但是少了是可以的。占得空間是固定的。
nchar(10)? 性別存儲(chǔ)建議用它
char、nchar凡是?? 前面不帶var的都表示固定長(zhǎng)度。
?
varchar、nvarchar則表示可變長(zhǎng)度,長(zhǎng)度是可變的。
varchar(10); 2,實(shí)際存儲(chǔ)的時(shí)候,會(huì)根據(jù)實(shí)際的數(shù)據(jù)來(lái)動(dòng)態(tài)的計(jì)算長(zhǎng)度,
對(duì)于超出預(yù)先聲明的長(zhǎng)度則會(huì)報(bào)錯(cuò),如果不夠的,則重新計(jì)算,按實(shí)際長(zhǎng)度來(lái)算。
地址一般用可變長(zhǎng)度。
?
nchar(10)
char(10)和nchar(10)的區(qū)別:
char(10) 'aaaaaaaaaa','找找找找找'? 占10個(gè)字節(jié)
nchar(10) 'aaaaaaaaaa','找找找找找找找找找找'? ,占20個(gè)字節(jié)
什么時(shí)候用帶n的呢?系統(tǒng)用的是帶中文的信息,用char就行了。
但是如果我們要在英文的操作系統(tǒng)下執(zhí)行,還是建議使用帶n的。
?
?
它們的最大值:varchar(8000)
????????????? char(8000)?
?
????????????? nvarchar(4000)
????????????? nchar(4000)
?
varchar(10)
nvarchar(10)
varchar(max)文章的內(nèi)容非常的長(zhǎng)時(shí)用。
nvarchar(max)
?
SQL2005以后,不建議使用這個(gè)。
text
ntext
?
數(shù)據(jù)庫(kù)的分離和附加
?
九、分離
?
十、分離2
?
十一、附加
?
十二、附加2
?? 自動(dòng)編號(hào)永遠(yuǎn)是勇往直前的,不會(huì)后退的。
下面介紹用代碼的方式創(chuàng)建數(shù)據(jù)庫(kù)
?
?
十三、新建數(shù)據(jù)庫(kù)
????
十四、創(chuàng)建數(shù)據(jù)庫(kù)的代碼
接下來(lái)時(shí)創(chuàng)建表:
?
十五、在數(shù)據(jù)庫(kù)中創(chuàng)建表
?
十六、go語(yǔ)句
如果我想把我的數(shù)據(jù)庫(kù)的腳本拷給我的同事,但是他的現(xiàn)在使用的是SQL2005版本,我用的是SQL2008版本,此時(shí)就不能用分離,附加了.請(qǐng)看下面的步驟:
?
十七、生成腳本步驟一
?選擇下一步
選擇:編寫(xiě)整個(gè)數(shù)據(jù)庫(kù)的所有的腳本。
?
十八、生成腳本步驟二
當(dāng)然這里面還有一些我們可以選擇的項(xiàng)。在這不一一敘述了。
關(guān)于附加這塊可能會(huì)遇到些小問(wèn)題,有問(wèn)題的朋友可以向我提問(wèn)?
?
Ctrl+K+C注釋;
Ctrl+K+U取消注釋;
?
結(jié)果試圖可以用ctrl+R
?
十九、如何查看表中的數(shù)據(jù)
下面介紹插入數(shù)據(jù)的幾種形式。
?
二十、插入數(shù)據(jù)
? 這里除去自動(dòng)編號(hào),不需要人工插入的那些列。
?
二十一、插入不為空的數(shù)據(jù)
?
二十二、轉(zhuǎn)譯了
? 不能為空的列必須插入數(shù)據(jù),否則的話(huà)會(huì)報(bào)錯(cuò)的。
?
二十三、插入自動(dòng)編號(hào)
?
二十四、插入多行數(shù)據(jù)
? 注意這的寫(xiě)法,union在后面詳細(xì)介紹。
?
二十五、把現(xiàn)用表中的數(shù)據(jù)導(dǎo)出到一個(gè)新表
?
二十六、創(chuàng)建一張表,與源表的結(jié)構(gòu)一樣,但是不含數(shù)據(jù)
?
新增內(nèi)容
?
新增建議
二十七、向已有表中插入數(shù)據(jù)
?
二十八、插入中文,前面加N
下面介紹更新的常用方法:
?
二十九、更新一列
?
三十、同時(shí)更新多列數(shù)據(jù)
先來(lái)說(shuō)一下這個(gè)。
?
三十一、限定條件查詢(xún)行
?
三十二、限定列和行查詢(xún)
?
三十三、同時(shí)更新指定行和指定的列
? 注意在更新之前先要備份一下,否則會(huì)出現(xiàn)令人麻煩的事情。可以做個(gè)備份,還原。
?
三十四、同時(shí)限定更新符合兩列條件。
? 同時(shí)注意下數(shù)據(jù)庫(kù)當(dāng)中邏輯運(yùn)算符not and or 的使用;優(yōu)先級(jí):not and or
?
三十五、把所有的年齡都加1
? 在數(shù)據(jù)庫(kù)中寫(xiě)加1還是寫(xiě)成圖中的形式比較的好。永遠(yuǎn)這么寫(xiě),換個(gè)地方可能就不能用了。小括號(hào)可以改變優(yōu)先級(jí)。
? 下面介紹下刪除數(shù)據(jù)的兩種方式:
?
三十六、刪除指定的數(shù)據(jù)
?
三十七、兩種刪除語(yǔ)句及其區(qū)別
? 圖中注釋部分是它們之間的區(qū)別。
下面介紹下關(guān)于約束的一些知識(shí):
建約束以前先把之前的數(shù)據(jù)都刪掉,因?yàn)橹暗臄?shù)據(jù)都是不合法的。
?
三十八、建約束第一步
?
三十九、建約束第二步
?
四十、建約束第三步
點(diǎn)擊:表達(dá)式
輸入約束條件
點(diǎn)擊:確定
?
?
四十一、約束執(zhí)行
?
四十二、再設(shè)定其它的一些約束
?
四十三、約束獲取當(dāng)前數(shù)據(jù)庫(kù)時(shí)間
除檢查約束外的其它的形式:
默認(rèn)約束:
?
四十四、修改默認(rèn)值
唯一約束
?
四十五、唯一約束,如身份證號(hào)碼不能一樣
四十六、填好唯一約束的內(nèi)容
如果我在輸入數(shù)據(jù)的時(shí)候,輸入的部門(mén)是30,而部門(mén)表中沒(méi)有30這個(gè)部門(mén)。這個(gè)時(shí)候,我需要設(shè)定外鍵。
外鍵約束:
?
四十七、建立外鍵約束
?
四十八、外鍵關(guān)系設(shè)定
點(diǎn)下:表和列規(guī)范
設(shè)定好主鍵表 外鍵表? 以及相關(guān)聯(lián)的ID,注意要一樣
點(diǎn)擊確定自動(dòng)生成標(biāo)識(shí),名稱(chēng)
?
?
四十九、設(shè)定好的主外鍵
? 從圖中我們清晰的看到,主鍵為黃色,外鍵為灰色。
? 沒(méi)有被外鍵引用的表可以刪掉,而被引用的不能刪掉。
? 由于建立了主外建關(guān)系會(huì)引起一系列的麻煩,所以,一般我們不建。但是,我們通過(guò)程序來(lái)維護(hù)主外建關(guān)系。
?
五十、刪除主外建約束前奏
?
?
五十一、刪除主外建約束一
?
五十二、刪除主外建約束二-級(jí)聯(lián)刪除
?
第二天:
數(shù)據(jù)庫(kù)對(duì)我們現(xiàn)在工作中的朋友的幫助是相當(dāng)大的,在大數(shù)據(jù)處理的時(shí)候,可以讓我們方面的查詢(xún),管理數(shù)據(jù)。
? 尤其是當(dāng)下的電商行業(yè),都是在網(wǎng)絡(luò)上面進(jìn)行銷(xiāo)售,所以,數(shù)據(jù)庫(kù)更加彰顯出其魅力。
比如,我在指南針的幾年里面,當(dāng)然是公司設(shè)計(jì)好的數(shù)據(jù)庫(kù)讓我們用。對(duì)于客戶(hù)的查詢(xún),處理等問(wèn)題,包括對(duì)自己管轄范圍內(nèi)的客戶(hù)的管理。基本上都是通過(guò)數(shù)據(jù)庫(kù)來(lái)完成的。所以,經(jīng)常的會(huì)用到一些基本的查詢(xún),更新,刪除等等語(yǔ)句。
? 在這里我也為大家整理了相關(guān)的資料,希望大家喜歡。
?
一、新建兩張表
?
二、手動(dòng)刪除一列
?
三、手動(dòng)增加一列
?
四、增加一個(gè)非空列
?
五、修改列
? 下面我們看看數(shù)據(jù)庫(kù)中增加約束和刪除約束的相關(guān)案例:
?
六、增加一個(gè)主鍵約束
?
七、增加一個(gè)非空約束
?
八、增加一個(gè)唯一約束
?
九、為性別增加一個(gè)默認(rèn)約束
?
十、為性別增加一個(gè)檢查約束
?
十一、為年齡增加一個(gè)檢查約束
?
十二、增加一個(gè)外鍵約束
?
十三、增加級(jí)聯(lián)刪除,更新
?
十四、刪除某個(gè)名字的約束
?
十五、一條語(yǔ)句刪除多個(gè)約束
?
十六、用一條語(yǔ)句為表增加多條約束
下面看下數(shù)據(jù)的檢索:
?
十七、查詢(xún)學(xué)生表
?
十八、這列是干什么的呢?
? 圖中畫(huà)圈的部分是干什么的呢?比如,我在中國(guó)移動(dòng)辦了個(gè)手機(jī)號(hào),現(xiàn)在注銷(xiāo)了。那么,在中國(guó)移動(dòng)的數(shù)據(jù)庫(kù)中我的數(shù)據(jù)就真的刪了么?很多時(shí)候,并沒(méi)有刪。對(duì)于用戶(hù)來(lái)講,是刪了,只是中國(guó)移動(dòng)做了個(gè)標(biāo)記。就是用戶(hù)下次再登陸的時(shí)候登陸不進(jìn)去了,但是,并沒(méi)有刪。在記錄里面用0和1表示,這個(gè)我們一般叫做“軟刪除”。一般0表示false沒(méi)有刪,1表示true刪了。
?
我只想看其中的三列,這么寫(xiě),見(jiàn)下圖:
?
十九、只看其中三列的信息
? 上圖中直接顯示英文,對(duì)于用戶(hù)來(lái)講不是特別的友好,我現(xiàn)在需要顯示它們的中文信息。也就是給列起別名。怎么給列起別名呢?
?
二十、起別名
?
二十一、起別名的第2,3種寫(xiě)法
?
二十二、顯示自定義查詢(xún)結(jié)果
?
二十三、基本檢索
?
二十四、top
?
二十五、查看前十行且只有姓名
?
二十六、返回前百分之十
現(xiàn)在數(shù)據(jù)庫(kù)里面就有11條數(shù)據(jù),返回百分之十,是多少條呢?
答案是:2條。
?
二十七、排序
?
二十八、distinct
如果有三列,看三列當(dāng)中這個(gè)的數(shù)據(jù)有沒(méi)有重復(fù),有的話(huà),就會(huì)去掉重復(fù)。
影響表中數(shù)據(jù)么?根本不影響。
?
下面我看來(lái)看看數(shù)據(jù)庫(kù)當(dāng)中五個(gè)常用的聚合函數(shù):
當(dāng)我們?cè)诠ぷ髦杏惺裁床粫?huì)的了,可以點(diǎn)開(kāi)幫助-索引,輸入:聚合函數(shù)。
?
二十九、五種常用聚合函數(shù)
下面我們看下帶條件查詢(xún):
?
三十、帶條件查詢(xún)1
?
三十一、帶條件查詢(xún)2? in的用法
接下來(lái)我們看下帶條件查詢(xún)-模糊查詢(xún)
?
三十二、like查詢(xún) %
?
三十三、like查詢(xún) _
?
三十四、like查詢(xún) [? ]
^ 是非的意思,跟正則表達(dá)式中一樣。
?
三十五、like查詢(xún) ^
下面我們看下數(shù)據(jù)庫(kù)中的Null值處理
請(qǐng)你查出年齡不為空的所有人得年齡,怎么查呢?
?
三十六、null就是unknow的意思
? 系統(tǒng)沒(méi)辦法識(shí)別了,就是比如20不等于不知道。怎么比啊?返回的也是個(gè)unknow,在where后面就是個(gè)false,所以沒(méi)有任何的查詢(xún)記錄。
? 沒(méi)法用<> 和 = 進(jìn)行比較,那么我們?cè)趺磳?xiě)呢?
?
三十七、這么寫(xiě)null判斷
?
三十八、空值的替換
? 設(shè)計(jì)器上面要插入個(gè)空值的話(huà),得寫(xiě)大寫(xiě)的N,Null。要是什么都沒(méi)寫(xiě),不行的,那是個(gè)字符串為0的字符串。要是寫(xiě)的小寫(xiě)的null,是字符串為null的字符串。這是我們需要小注意的地方。
下面我們?cè)倏聪耾rder by語(yǔ)句:
一般都是寫(xiě)在查詢(xún)語(yǔ)句的最后的。
?
三十九、按多列的條件進(jìn)行排序
?
四十、按表達(dá)式排序
一旦有了order by以后這個(gè)表就不是集合了。現(xiàn)在只提一下這個(gè)概念。
?
接下來(lái)我們看下數(shù)據(jù)分組:
? 首先,我們提出幾個(gè)問(wèn)題。什么時(shí)候才會(huì)遇到這個(gè)分組情況呢?分組是個(gè)什么東西呢?
? 比如根據(jù)籍貫分組,根據(jù)男女分組。
? Group by在數(shù)據(jù)匯總統(tǒng)計(jì)的時(shí)候用,一般和聚合函數(shù)一起來(lái)用。如果不分組就用聚合函數(shù)的話(huà),它是把組里面所有的信息當(dāng)成了一組來(lái)統(tǒng)計(jì)。
? 要是分組了再用聚合函數(shù)的話(huà),統(tǒng)計(jì)的是每一組的信息。
?
四十一、按照班級(jí)分組
?
四十二、分組后查詢(xún)每個(gè)組里面有多少個(gè)人
? 現(xiàn)在想看看組中數(shù)據(jù)大于3的,如果要想對(duì)分組再進(jìn)行篩選,我們用的是having。
?
四十三、對(duì)分組以后再篩選用having
?
四十四、分組判斷的時(shí)候需要注意的情況
?
四十五、分組判斷的時(shí)候需要注意的情況二
? Select 這塊哪些列能寫(xiě)?哪些列不能寫(xiě)呢?group by中包含的列和聚合函數(shù)都能寫(xiě),其它的不能寫(xiě)。
? 為什么呢?還是思考那個(gè)問(wèn)題,當(dāng)分完組以后,就都是組當(dāng)中的信息了。在分組之前對(duì)數(shù)據(jù)的篩選用where,它們兩個(gè)是不能混用的。
四十六、簡(jiǎn)單的SQL語(yǔ)句執(zhí)行順序
? 了解SQL語(yǔ)句的執(zhí)行順序能知道哪用別名?對(duì)于理解SQL語(yǔ)句的命令也是有好處的。當(dāng)然,這里列出的是簡(jiǎn)單的SQL語(yǔ)句執(zhí)行順序。
?
四十七、Group By練習(xí)
下面我看來(lái)看下函數(shù)的類(lèi)型轉(zhuǎn)換:
?
四十八、數(shù)據(jù)類(lèi)型轉(zhuǎn)換的兩種寫(xiě)法
?什么情況下會(huì)遇到數(shù)據(jù)類(lèi)型的轉(zhuǎn)換呢?
?
四十九、實(shí)際問(wèn)題中遇到的數(shù)據(jù)類(lèi)型轉(zhuǎn)換一
如果不轉(zhuǎn)換的話(huà),將按照字符進(jìn)行排序。而不是兩起來(lái)的兩個(gè)或多個(gè)數(shù)字進(jìn)行排序。
?
五十、實(shí)際問(wèn)題中遇到的數(shù)據(jù)類(lèi)型轉(zhuǎn)換二
? 在日期轉(zhuǎn)換的時(shí)候用convert就行了,120是不同數(shù)據(jù)庫(kù)中時(shí)間的類(lèi)型。
接下來(lái)我們看下聯(lián)合結(jié)果集union(集合運(yùn)算符)
?
五十一、union
? 這里有個(gè)需要注意的地方,每列當(dāng)中相對(duì)應(yīng)的數(shù)據(jù)類(lèi)型必須得一樣。調(diào)一下位置是不行的。要想能聯(lián)合的話(huà),必須得保證每個(gè)列的數(shù)量相同,數(shù)據(jù)類(lèi)型相同。
?
五十二、聯(lián)合中有一列為空的時(shí)候
? 最后查詢(xún)的結(jié)果集是以第一個(gè)的列名命名的。
但從姓名和性別看的話(huà),有幾條是一樣的數(shù)據(jù)。Union可以去除重復(fù)數(shù)據(jù),如果不想去除的話(huà),后面加個(gè)all
?
五十三、union all
那么union all在什么時(shí)候用呢?
常見(jiàn)應(yīng)用:底部匯總。
?
五十四、年齡匯總
?
五十五、成績(jī)匯總
? 下面我們看看字符串函數(shù):
? 這塊的學(xué)習(xí),使用還是要多借鑒微軟的幫助。
?
五十六、字符串函數(shù)
? 自己可以看看replace,stuff這兩個(gè)函數(shù)怎么用。
再下來(lái)我們看看日期函數(shù):
? 日期函數(shù)還是,我們可以在數(shù)據(jù)庫(kù)當(dāng)中的幫助里面輸入:日期和時(shí)間
?
五十七、在當(dāng)前時(shí)間增加時(shí)間
?
五十八、計(jì)算兩個(gè)時(shí)間的差
?
五十九、datediff具體的應(yīng)用
?
六十、獲取時(shí)間的某個(gè)部分
下面這個(gè)案例對(duì)做電銷(xiāo)工作的朋友非常的實(shí)用:
?
創(chuàng)建一張表,記錄電話(huà)呼叫員的工作流水,記錄呼叫員編號(hào)、對(duì)方號(hào)碼、通話(huà)開(kāi)始時(shí)間、通話(huà)結(jié)束時(shí)間。建表、插數(shù)據(jù)等最后都自己寫(xiě)SQL語(yǔ)句。 要求:輸出所有數(shù)據(jù)中通話(huà)時(shí)間最長(zhǎng)的5條記錄。orderby datediff 輸出所有數(shù)據(jù)中撥打長(zhǎng)途號(hào)碼(對(duì)方號(hào)碼以0開(kāi)頭)的總時(shí)長(zhǎng)。like、sum 輸出本月通話(huà)總時(shí)長(zhǎng)最多的前三個(gè)呼叫員的編號(hào)。 輸出本月?lián)艽螂娫?huà)次數(shù)最多的前三個(gè)呼叫員的編號(hào).group by,count(*)
?
CREATE TABLE [CallRecords] ([Id] [int] NOT NULL identity(1,1),[CallerNumber] [nvarchar](50), --三位數(shù)字,呼叫中心員工編號(hào)(工號(hào))[TelNum] [varchar](50),[StartDateTime] [datetime] NULL,[EndDateTime] [datetime] NULL --結(jié)束時(shí)間要大于開(kāi)始時(shí)間,默認(rèn)當(dāng)前時(shí)間 )--主鍵約束 alter table [CallRecords] add constraint PK_CallRecords primary key(id)--檢查約束 alter table [CallRecords] add constraint CK_CallRecords check(CallerNumber like ‘[0-9][0-9][0-9]’) \d{3}錯(cuò)誤!!alter table [CallRecords] add constraint CK_CallRecords_EndDateTime check(EndDateTime > StartDateTime)--默認(rèn)約束 alter table [CallRecords] add constraint DF_CallRecords default(getdate()) for EndDateTimeINSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('001', '0208888888', CAST(0x00009DAF00A4CB80 AS DateTime), CAST(0x00009DAF00A62E94 AS DateTime)); INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('001', '0208888888', CAST(0x00009DB000D63BC0 AS DateTime), CAST(0x00009DB000D68DC8 AS DateTime)); INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('001', '89898989', CAST(0x00009DB000E85C60 AS DateTime), CAST(0x00009DB000E92F50 AS DateTime)); INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('002', '98987676', CAST(0x00009DB2015BB7A0 AS DateTime), CAST(0x00009DB2015C4DA0 AS DateTime)); INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('002', '02188839389', CAST(0x00009DA4014C9C70 AS DateTime), CAST(0x00009DA4014E0308 AS DateTime)); INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('001', '767676766', CAST(0x00009DB400DAA0C0 AS DateTime), CAST(0x00009DB400DD5FE0 AS DateTime)); INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('003', '0227864656', CAST(0x00009DB200B9AB40 AS DateTime), CAST(0x00009DB200B9FC1C AS DateTime)); INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('003', '676765777', CAST(0x00009DB8014042B8 AS DateTime), CAST(0x00009DB80141804C AS DateTime)); INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('001', '89977653', CAST(0x00009D9A00FB9898 AS DateTime), CAST(0x00009D9A00FE6118 AS DateTime)); INSERT [dbo].[CallRecords] ([CallerNumber], [TelNum], [StartDateTime], [EndDateTime]) VALUES ('004', '400400400', CAST(0x00009D9A00FB9898 AS DateTime), CAST(0x00009D9A00FE6118 AS DateTime));?
六十一、通話(huà)第一小題
? 思路:看到通話(huà)時(shí)長(zhǎng)最長(zhǎng)的,先求通話(huà)時(shí)長(zhǎng);最長(zhǎng)-倒排序;前五條-top 5
?
六十二、通話(huà)時(shí)長(zhǎng)第二小題
?
六十三、通話(huà)時(shí)長(zhǎng)第三小題
?
六十四、通話(huà)時(shí)長(zhǎng)第四小題
最后一個(gè)小題,暫時(shí)不公布答案,留個(gè)做思考。
?
轉(zhuǎn)載于:https://www.cnblogs.com/zxh930508/p/4189648.html
總結(jié)
以上是生活随笔為你收集整理的SQL server 复习一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vsftp服务器搭建
- 下一篇: 谈谈用SQLite和FMDB而不用Cor