sql数据黑马程序员——SQL入门
最近研究sql數(shù)據(jù),稍微總結(jié)一下,以后繼續(xù)補充:
????---------------------- ASP.Net+Android+IO開辟S、.Net培訓(xùn)、等待與您交流! ----------------------??????
????
今天看了SQL入門視頻,簡單的記錄下。
?
-
Catalog、Table、Column
????Catalog(分類)又叫數(shù)據(jù)庫DataBase、表空間TableSpace。?
????將不同類的數(shù)據(jù)放到不同的數(shù)據(jù)庫中,存儲在不同的表中,表中每一列(Column)代表數(shù)據(jù)的一項屬性。
????分類的利益:1.便于對各個Catalog的管理
? ?? ?? ?? ?? ??? ? ?? ?2.防止定名沖突
? ?? ?? ??? ? ?? ?? ?? ?3.安全性更高
????
?
-
主鍵 PrimaryKey
????是數(shù)據(jù)行的獨一標(biāo)識。不會重復(fù)的列才能當(dāng)主鍵。分為業(yè)務(wù)主鍵和邏輯主鍵。
????業(yè)務(wù)主鍵:應(yīng)用有業(yè)務(wù)意思的字段做主鍵。
????邏輯主鍵:應(yīng)用沒有任何業(yè)務(wù)意思的字段做主鍵。
????SQL中經(jīng)常使用的主鍵類型:int(bigint)+標(biāo)識列(主動增加字段)和 uniqueidentifier 類型(GUID)
????SQL中應(yīng)用newid()方法失掉一個GUID,C#中應(yīng)用Guid.NewGuid()方法獲得GUID。
????
?
-
SQL語句
????SQL語句是標(biāo)準(zhǔn)的數(shù)據(jù)庫操縱語句。對大小寫不敏感。
????需要注意的一些地方:sql中字符串用單引號表現(xiàn),而不是用雙引號;等于判斷用“=”,不等判斷用“!=”或者“<>”。
????一般將sql語句分為兩類:DDL和DDM。
????DDL(數(shù)據(jù)定義語言):create、drop、alter操縱
????DDM(數(shù)據(jù)操縱語言):insert、delete、update、select操縱
????
?
-
SQL中常見的類型
????bit 只能選擇0或者1
????int 32位數(shù)? ?? ?? ?? ?? ???bigint 64位數(shù)
????char(lenth) 指定lenth長度的字符串
????varchar(lenth) 可變長字符串,長度最大值lenth? ?? ?? ?? ?? ? nvarchar(lenth) 允許字段含有非ASCII碼的字符串,如中文
????
?
-
一些基本的SQL語法
????create table Person(id int not null, name varchar(50), age int)
????insert into Person(id, name, age) values(1, 'A', 10)
????update Person set age=18 where id=1
????select * from Person
????delete form Person? ?? ? 與drop不同的是:drop刪除全部表結(jié)構(gòu),delete刪除的是表中的數(shù)據(jù)
????drop talbe Person
????
?
-
排序 order by
????排序方式:ASC遞增,DESC遞減。
????需要注意 order by 要放在 where 語句之后,? ?select * from Person where age > 10 order by age
????當(dāng)對多個項目排序時早年往后進(jìn)行,? ???select * from Person order by age DESC,name ASC
????
?
-
分組 group by
????group by 必須放在 where 之后。沒有出現(xiàn)在 group by 子句中的列是不能放在 select 語句的列名列表中的。
????select age, name from Person group by age? ???應(yīng)用就是錯誤的,對age分組后,每一組中可能有多個name值
每日一道理雖然你現(xiàn)在還只是一株稚嫩的幼苗。然而只要堅韌不拔,終會成為參天大樹;雖然你現(xiàn)在只是涓涓細(xì)流,然而只要鍥而不舍,終會擁抱大海;雖然你現(xiàn)在只是一只雛鷹,然而只要心存高遠(yuǎn),跌幾個跟頭之后,終會占有藍(lán)天。
????
?
-
Having語句
????用于對分組進(jìn)行過濾。聚合函數(shù)不能出現(xiàn)在where子句中,除非該聚合位于Having語句或選擇列表所包含的子查詢中。
????Having 要位于group by 之后。并且Having中不能應(yīng)用為參數(shù)分組的列。
????select age, count(*) from Person group by age having coung(*)>1
????
?
-
通配符過濾(模糊匹配)
????分為單字通配符和多字通配符兩種。
????單字通配符用“_”表現(xiàn),只能代表一個字符。多字通配符用“%”。
????select * from Person wher name like 'A%'? ?? ?查找結(jié)果為所用姓名以A掃尾的數(shù)據(jù)
????
?
-
空值處置
????在sql中null表現(xiàn)不知道的意思,而不是編程語言中的空。
????應(yīng)用 is null, is not null 可以進(jìn)行空值的判定。
????select * from Person where name is not null
????
?
-
多值匹配
????應(yīng)用 and、or、between and 做判定范圍的連接。
????select * from Person where age=10 or age=18
????
?
-
制約結(jié)果集行數(shù)
????select top 3 * from Person order by age? ?? ???按照年齡升序排列后,取得排前三的數(shù)據(jù)行
????select top 3 * from Person where id not in (select top 5 id from Person order by age DESC) order by age DESC? ?取得年齡降序排6、7、8的三個數(shù)據(jù)行
????
?
-
去掉重復(fù)數(shù)據(jù)
????應(yīng)用 distinct 關(guān)鍵字可以去掉查詢結(jié)果中重復(fù)的數(shù)據(jù)行。
????select distinct age from Person
????
?
-
結(jié)合 union
????要求進(jìn)行結(jié)合的每個結(jié)果集必須有相同的列數(shù),并且列必須類型相容。
????有 union 和 union all 兩種結(jié)合方式。
????union 會默認(rèn)去掉完全相同的數(shù)據(jù),因為需要進(jìn)行重復(fù)值掃描,所以 union 效率低。
????union all 不進(jìn)行重復(fù)行合并。
????select name, salary from Person
????union
????select '工資合計', sum(salary) from Person
????-The End-
????
????? Jervis
?????
?????
????---------------------- ASP.Net+Android+IOS開辟、.Net培訓(xùn)、等待與您交流! ----------------------
????詳細(xì)請查看:http://edu.csdn.net
文章結(jié)束給大家分享下程序員的一些笑話語錄: 程序員喝酒
我偶爾采用“木馬策略”、“交叉測試”,時間不長就開始“頻繁分配釋放資源”,“cache”也是免不了的了,
不過我從不搞“輪巡”,也不會“捕獲異常”,更不會“程序異常”,因為我有理性
克制的。
--------------------------------- 原創(chuàng)文章 By
sql和數(shù)據(jù)
---------------------------------
轉(zhuǎn)載于:https://www.cnblogs.com/jiangu66/p/3153206.html
總結(jié)
以上是生活随笔為你收集整理的sql数据黑马程序员——SQL入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【PHP 】伪静态 - 4. 实际运用
- 下一篇: 常用SQL整理