平常開發常用mysql原生操作

常用的SQL例句全部懂了,你的數據庫開發所需知識就夠用了

..--查看學生表的全部數據

select*fromstudio

--插入一個新的學生信息

insertintostudio(st_name,st_sex,st_age,st_add,st_tel)values("黃蘭淇",0,36,'南充','13943943334')

--查看class全部數據

select*fromclass

--向class表增加兩條條數據

insertintoclass(cl_class,cl_coding,cl_o_time,cl_remark)values('新電實訓班','GXA-ncs-001','2008-03-11','都是很優秀的朋友')

insertintoclass(cl_class,cl_coding,cl_o_time)values('阿壩師專實訓班','GXA-ABSZ-001','2008-03-11')

--更新一條的數據條件的重要性

updateclasssetcl_remark='真的是不錯'wherecl_id=5

--刪除一條數據條件的重要性

deletefromclasswherecl_id=7

--修改列標題

selectcl_idas'班級主鍵',cl_classas'班級名稱'fromclass

select名字=st_namefromstudio

--使用文字串

select'名字是:',st_namefromstudio

--=============條件稍微復雜點的查增刪改==============

--主要涉及到orandnotbetweeninlike><=!>!()<=>=isnullisnotnull

--查詢cl_id大于1的所有信息

select*fromclasswherecl_id>1

--使用or

select*fromclasswherecl_id<>10orcl_class='百杰一班'

--使用and

select*fromclasswherecl_id<>10andcl_class='百杰一班'

--使用like和%

select*fromclasswherecl_class?like'百杰%'

select*fromclasswherecl_remark?like'%上午%'

--使用between

select*fromclasswherecl_id?between3and5

--使用between配合上not

select*fromclasswherecl_idnotbetween3and5

--使用isnotnull

select*fromclasswherecl_remarkisnotnull

--使用in

select*fromclasswherecl_classin('千星一班','百杰二班')

--=================使用數學運算符======================

--主要涉及到+=*\

--查詢Java相關課程分別要上多少周按照每周5天,每天6節課來計算

select'結果'=co_num/5/6fromcoursewhereco_namein('Java基礎','Java項目入門')

--==================使用匯總函數========================

--涉及到COUNT?SUM?AVG?MAX?MIN

--查詢課時數小于50的課程一共有多少門

selectcount(*)fromcoursewhereco_num<50

--查詢所有課程一共多少課時

selectsum(co_num)fromcourse

--計算全部課時費,假設每節課50塊錢

selectsum(co_num)*50fromcourse

--查詢課時最少的課程

selectmin(co_num)fromcourse

--查詢課時最多的課程

selectmax(co_num)fromcourse

--查詢平均每門課多少課時

selectavg(co_num)fromcourse

--=================使用數學函數=============================

--包括求絕對值函數ABS函數、求圓周率函數PI()、求正玄值SIN()函數、求指數函數EXP()等。

--查詢每門課的正弦值

selectsin(co_num)fromcourse

--查詢每門課的絕對值

selectabs(co_num)fromcourse

--查詢每門課課時數乘以圓周率,具體有什么用我也不知道,反正這好像絕對是8.5桿子都打不到的

selectpi()*co_numfromcourse

--查詢每門課的指數

selectexp(co_num)fromcourse

--隨機返回5個隨機生成的數(返回的是0~1之間的隨機float值)

declare@itinyint

set@i=1

while@i<=5

begin

selectrand(@i)as'隨機生成的數',@ias'當前值'

set@i=@i+1

end

--返回數字表達式并四舍五入為指定的長度或精度-ROUND

selectround(345.456,-1)as'參數為-1'

,round(345.456,-2,1)as'參數為-2'

,round(345.456,0)as'參數為0'

,round(345.456,1)as'參數為1'

,round(345.456,2)as'參數為2'

--================使用日期函數======================

--DAY()、MONTH()、YEAR()——返回指定日期的天數、月數、年數;

selectday(cl_s_time)as'日'fromclass--返回天

select'月'=month(cl_s_time)fromclass--返回月

select'年'=year(cl_s_time)fromclass--返回年

--DATEADD(datepart,number,date)——在日期上增加給定日期類型的數量;

selectdateadd(yyyy,4,cl_s_time)as'增加4年后'fromclass--datepart-年份

yy、yyyy

selectdateadd(q,2,cl_s_time)as'增加2季度后'fromclass

--datepart-季度

qq、q

selectdateadd(mm,3,cl_s_time)as'增加3月度后'fromclass

--datepart-月份

mm、m

--datepart-每年的某一日

dy、y

--datepart-日期

dd、d

--datepart-星期

wk、ww

--datepart-小時

hh

--datepart-分鐘

mi、n

--datepart-秒

ss、s

--datepart-毫秒

ms

--DATEDIFF(datepart,date1,date2)——獲取兩個日期之間給定的日期類型的數量差(整個函數結果是date2-date1);

selectdatediff(mm,cl_s_time,cl_o_time)as'共持續月'fromclass

--datepart(datepart,date)——在給定日期基礎上返回指定日期類型的值(整數);

--其實這個等同于DAY、MONTH、和YEAR函數

selectdatepart(dd,cl_s_time)as'日期'fromclass

--GETDATE()——返回當前日期和時間。我們在設計數據庫的時候,通常也可能把他作為默認值

updateclasssetcl_s_time=getdate()wherecl_id=6

select*fromclass

SelectCONVERT(varchar(100),GETDATE(),0):0516200610:57AM

SelectCONVERT(varchar(100),GETDATE(),1):05/16/06

SelectCONVERT(varchar(100),GETDATE(),2):06.05.16

SelectCONVERT(varchar(100),GETDATE(),3):16/05/06

SelectCONVERT(varchar(100),GETDATE(),4):16.05.06

SelectCONVERT(varchar(100),GETDATE(),5):16-05-06

SelectCONVERT(varchar(100),GETDATE(),6):160506

SelectCONVERT(varchar(100),GETDATE(),7):0516,06

SelectCONVERT(varchar(100),GETDATE(),8):10:57:46

SelectCONVERT(varchar(100),GETDATE(),9):0516200610:57:46:827AM

SelectCONVERT(varchar(100),GETDATE(),10):05-16-06

SelectCONVERT(varchar(100),GETDATE(),11):06/05/16

SelectCONVERT(varchar(100),GETDATE(),12):060516

SelectCONVERT(varchar(100),GETDATE(),13):1605200610:57:46:937

SelectCONVERT(varchar(100),GETDATE(),14):10:57:46:967

SelectCONVERT(varchar(100),GETDATE(),20):2006-05-1610:57:47

SelectCONVERT(varchar(100),GETDATE(),21):2006-05-1610:57:47.157

SelectCONVERT(varchar(100),GETDATE(),22):05/16/0610:57:47AM

SelectCONVERT(varchar(100),GETDATE(),23):2006-05-16

SelectCONVERT(varchar(100),GETDATE(),24):10:57:47

SelectCONVERT(varchar(100),GETDATE(),25):2006-05-1610:57:47.250

SelectCONVERT(varchar(100),GETDATE(),100):0516200610:57AM

SelectCONVERT(varchar(100),GETDATE(),101):05/16/2006

SelectCONVERT(varchar(100),GETDATE(),102):2006.05.16

SelectCONVERT(varchar(100),GETDATE(),103):16/05/2006

SelectCONVERT(varchar(100),GETDATE(),104):16.05.2006

SelectCONVERT(varchar(100),GETDATE(),105):16-05-2006

SelectCONVERT(varchar(100),GETDATE(),106):16052006

SelectCONVERT(varchar(100),GETDATE(),107):0516,2006

SelectCONVERT(varchar(100),GETDATE(),108):10:57:49

SelectCONVERT(varchar(100),GETDATE(),109):0516200610:57:49:437AM

SelectCONVERT(varchar(100),GETDATE(),110):05-16-2006

SelectCONVERT(varchar(100),GETDATE(),111):2006/05/16

SelectCONVERT(varchar(100),GETDATE(),112):20060516

SelectCONVERT(varchar(100),GETDATE(),113):1605200610:57:49:513

SelectCONVERT(varchar(100),GETDATE(),114):10:57:49:547

SelectCONVERT(varchar(100),GETDATE(),120):2006-05-1610:57:49

SelectCONVERT(varchar(100),GETDATE(),121):2006-05-1610:57:49.700

SelectCONVERT(varchar(100),GETDATE(),126):2006-05-16T10:57:49.827

SelectCONVERT(varchar(100),GETDATE(),130):18??????????142710:57:49:907AM

SelectCONVERT(varchar(100),GETDATE(),131):18/04/142710:57:49:920AM

--=============使用字符串函數=====================

--字符串鏈接運算符

select'結果顯示'='班級名稱是:'+cl_class+',班級編號是:'+cl_codingfromclass

--使用SUBSTRING函數截取字符串

selectsubstring(cl_class,1,4)fromclass

--從字符串的左邊開始返回3個字符

selectleft(cl_class,3)fromclass

--同理,返回右邊的

selectright(cl_class,3)fromclass

--返回值的字符數

selectlen(cl_class)fromclass

--替換

selectreplace(cl_class,'實訓','強化')fromclass

--==============使用系統函數====================

selecthost_id()

--返回工作站標識號

selecthost_name()

--返回工作站所運行的計算機名稱

selectdb_id()

selectdb_name()

selectobject_id('Stu_course_ADD')

--通過名稱得到這個服務器對象的服務器ID

selectobject_name(151671588)

--同上相反

--=======學云網-天轟穿-www.ixueyun.co?m===使用其他子句====學云網-天轟穿-www.ixueyun.com=========

--首先是orderby功能-排序

select*fromstudio?orderbyst_name

--多排序條件

select*fromstudio?orderbyst_name?DESC,st_age?DESC,st_sex?DESC

--有條件,主要是看下條件和子句的位置

select*fromstudiowherecl_id=1orderbyst_name

--GROUP?BY子句功能-分組統計

selectcl_idas'班級編號',count(*)as'人數'fromstudiogroupbycl_id

--按宿舍統計年齡平均值

selectho_idas'宿舍編號',avg(st_age)as'平均年齡'fromstudiogroupbyho_id

--多分組

selectho_idas'宿舍編號',cl_idas'班級編號',avg(st_age)as'平均年齡'fromstudiogroupbyho_id,cl_id

--有條件,主要是看下條件和子句的位置

selectho_idas'宿舍編號',avg(st_age)as'平均年齡'fromstudiowherecl_id=1groupbyho_id

--使用having子句功能-指定組或者聚合的搜索條件,通常與groupby子句一起使用,完成分組查詢后再進步篩選

selectho_idas'宿舍編號',avg(st_age)as'平均年齡'fromstudiogroupbyho_id?having?avg(st_age)>35

--多條件

selectho_idas'宿舍編號',avg(st_age)as'平均年齡'fromstudiogroupbyho_id?having?avg(st_age)>35andho_id>2

--===========聯合查詢=======學云網-天轟穿-www.ixueyun.com======

--使用union子句的查詢稱為聯合查詢,功能:將兩個以上的查詢結果集組合為一個單個結果集,該集中包括所有集中的全部行數據

--下面我們嘗試將多個查詢聯合起來

select*fromstudiowherecl_id=1

union

select*fromstudiowhereho_id=1

union

select*fromstudiowherest_age>=30

--下面我們繼續利用上面的例題,增加上All看下效果

select*fromstudiowherecl_id=1

unionall

select*fromstudiowhereho_id=1

unionall

select*fromstudiowherest_age>=30

--再繼續利用,給他加上排序

select*fromstudiowherecl_id=1

unionall

select*fromstudiowhereho_id=1

unionall

select*fromstudiowherest_age>=30

orderbyst_id

--===========連接查詢==================

--連接查詢,功能-將多個表中的數據查詢出來放在一起

--內連接:使用比較運算符=><....等進行表間某些數據庫的比較操作,并列出這些表中與連接條件相匹配的數據行

--等值連接,當然就是用等號了,毛病,這也要問

select*fromstudio?inner?joinclasson?studio.cl_id=class.cl_id

--指明要查詢的列(江湖上又稱自然連接),并排序

selectst_idas'編號',st_nameas'學生姓名',cl_classas'班級名稱'fromstudio?inner?joinclasson?studio.cl_id=class.cl_id?orderbyst_id

--使用表別名

selectst.st_nameas'學生姓名',st.cl_idas'班級編號',cl.cl_classas'班級名稱'fromstudioasst?inner?joinclassascl?on?st.cl_id=cl.cl_id

--不等連接,這個問題很好笑,既然使用等號的是等值連接,那么不等值你說是不是應該是非等于以外的呢?

--下面我們再連接第三個表,看下是怎么搞滴

selectst.st_nameas'學生姓名',st.cl_idas'班級編號',cl.cl_classas'班級名稱',ho.ho_codingas'所在宿舍編號'

fromstudioasst?inner?joinclassascl

on?st.cl_id=cl.cl_id

inner?join?hostelasho

on?st.ho_id=ho.ho_id

--我們再給他加個條件看下

--wherest.cl_id>2

--再給他個排序

--orderbyst.st_id

--外連接:

--與內連接不同的是,內連接至少要有一個同屬于兩個表的行符合連接條件時才會返回行,外連接會返回符合任意條件的行

--他的表有主從之分,他用主表中的每行去匹配從表中的,與內連不同的是,他不會丟棄沒有匹配的行,而是填充null給從結果集

--左外連接

selectst.st_idas'學生編號',st.st_nameas'學生姓名',cl.cl_idas'班級編號',cl_classas'班級名稱'

fromstudioasst?left?outer?joinclassascl

on?st.cl_id=cl.cl_id

wherecl.cl_id>2

--多表

selecttka.te_co_idas'課程安排編號'

,cl.cl_idas'班級編號',cl.cl_classas'班級名稱'

,co.co_idas'課程ID',co.co_nameas'課程名稱',co.co_numas'課時數'

,te.te_nameas'老師姓名'

fromte_kc_apastka?left?outer?joinclassascl

on?tka.cl_id=cl.cl_id

left?outer?join

courseasco

on?tka.co_id=co.co_id

left?outer?join

teacheraste

on?tka.te_id=te.te_id

--====================右外連結=======================

selectst.st_idas'學生編號',st.st_nameas'學生姓名',cl.cl_idas'班級編號',cl_classas'班級名稱'

fromstudioasst?right?outer?joinclassascl

on?st.cl_id=cl.cl_id

wherecl.cl_id>2

--多表

selecttka.te_co_idas'課程安排編號'

,cl.cl_idas'班級編號',cl.cl_classas'班級名稱'

,co.co_idas'課程ID',co.co_nameas'課程名稱',co.co_numas'課時數'

,te.te_nameas'老師姓名'

fromte_kc_apastka

right?outer?joinclassascl

on

tka.cl_id=cl.cl_id

right?outer?join?teacher?te

on

tka.te_id=te.te_id

right?outer?join?course?co

on

tka.co_id=co.co_id

--========完全連接==============

selectst.st_idas'學生編號',st.st_nameas'學生姓名',cl.cl_idas'班級編號',cl_classas'班級名稱'

fromstudioasst?full?outer?joinclassascl

on?st.cl_id=cl.cl_id

orderbyst.st_id

--多表

selecttka.te_co_idas'課程安排編號'

,cl.cl_idas'班級編號',cl.cl_classas'班級名稱'

,co.co_idas'課程ID',co.co_nameas'課程名稱',co.co_numas'課時數'

,te.te_nameas'老師姓名'

fromte_kc_apastka

full?outer?joinclassascl

on

tka.cl_id=cl.cl_id

full?outer?join?teacher?te

on

tka.te_id=te.te_id

full?outer?join?course?co

on

tka.co_id=co.co_id

--==========交叉連接================

--該方式在不帶where子句時,返回的是兩個表中所有數據行的笛卡爾積(第一個表中的行乘以第二個表中的行)

--用學生和班級表做交叉查詢

selectst_name,cl_classfromstudio?cross?joinclass

selectst_name,cl_classfromstudio,class

selectst_name,cl_classfromstudio?cross?joinclass

--=========自連接===

-----------------先臨時創建一個表-------------

create?table?zone(

idintprimary?key?identity(1,1)notnull,

z_zone?varchar(30),

z_idintreferences?zone(id))

--大家試下,這里是否可以給個默認值

select*fromzone

insertintozone(z_zone)values('北京')

insertintozone(z_zone,z_id)values('北京',4)

insertintozone(z_zone)values('四川')

insertintozone(z_zone,z_id)values('成都',6)

insertintozone(z_zone,z_id)values('綿陽',6)

insertintozone(z_zone)values('江蘇')

insertintozone(z_zone,z_id)values('南京',10)

insertintozone(z_zone,z_id)values('蘇州',10)

insertintozone(z_zone,z_id)values('無錫',10)

insertintozone(z_zone,z_id)values('常州',10)

----------------------------------------------

--看下自連接的一般用處

selecta.z_zone,b.z_zonefromzoneasa?inner?join?zoneasb?on?a.z_id=b.id

--擴展應用下

selectb.z_zone,count(a.z_zone)as'轄區數'fromzoneasa?inner?join?zoneasb?on?a.z_id=b.idgroupbyb.z_zone

--簡單說就是自己連接自己,換言之對同一個表進行連接操作

selecta.st_name,a.st_add,b.st_name,b.st_addfromstudioasa?inner?join?studioasb?on?a.st_add=b.st_add

--我們發現有人等于自己,那么增加一個條件

selecta.st_name,a.st_add,b.st_name,b.st_addfromstudioasa?inner?join?studioasb?on?a.st_add=b.st_addanda.st_name!=b.st_name

--====學云網-天轟穿-www.ixueyun.com==子查詢============

--在一個SQL語句中鑲入另一個SQL語句教鑲套查詢,而被鑲入的這個SQL語句就被江湖人稱子查詢。是處理多表操作的附加方法

--子查詢也稱內部查詢,而包含子查詢的Select語句被誠為外部查詢,子查詢自身可以包括一個或者多個子查詢,也可以鑲套任意數量的子查詢

--使用in的子查詢

select*fromstudiowherecl_idin(selectcl_idfromclasswherecl_id>2)

--使用notin

select*fromstudiowherecl_idnotin(selectcl_idfromclasswherecl_id>2)

--使用比較運算符的子查詢--any表示子查詢中任意的值all表示子查詢中的每個值

--使用any

select*fromclasswherecl_id>any(selectcl_idfromstudiowherest_age>30)

--使用all

select*fromclasswherecl_id>all(selectcl_idfromstudiowherest_age>30)

--============一個分頁的SQL語句========

selecttop3*fromstudio

wherest_id>all(selecttop3st_idfromstudio?orderbyst_id)

orderbyst_id

--使用exists,該關鍵字引入一個子查詢的時候基本上是對數據進行一次是否存在的測試

--我們查詢那些人所在的班級是編號為1的

select*fromstudiowhereexists(selectcl_idfromclasswherestudio.cl_id=class.cl_idandclass.cl_id=1)

--使用notexists

select*fromstudiowherenotexists(select*fromclasswherestudio.cl_id=class.cl_idandclass.cl_id=1)orderbyst_id

--基于查詢生成新的表

selectst_nameintoclass_3fromstudiowherecl_id=3

--將數據批量插入一個表中

insertintoclass_3selectst_namefromstudiowherecl_id=4

-----------------------sql編程--------------

declare@maxint;

--申明一個變量@max

set@max=1;

--為變量@max賦值

while@max<10

--如果@max小于10就進入循環

begin

set@max=@max+1;--每次循環就給@max加1

print@max;

--打印當前@max的值

end

print'終于循環完了';

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容

  • 一、字符轉換函數 1、ASCII() 返回字符表達式最左端字符的ASCII碼值。在ASCII()函數中,純數字的字...
    輝格食品閱讀 1,663評論 0 3
  • 50個常用的sql語句Student(S#,Sname,Sage,Ssex) 學生表Course(C#,Cname...
    哈哈海閱讀 1,247評論 0 7
  • 人,很奇怪,有時候想說的不能說,想做的不能做。 在喜歡的人面前不敢說,不敢做。把自己最好的一面展現出來,但卻不允...
    孤獨的蛋閱讀 187評論 0 0
  • 我的周末生活是:我周五回到家就在寫作業,我快寫完作業已經很晚了,我吃了點晚飯,然后,我又看了幾十分鐘的書,就上床睡...
    雁楠閱讀 279評論 0 0
  • 過濾器也是一種結構型模式,它允許我們使用不同的規則過濾某一組對象。 首先我們來編寫一個實體類,用作被過濾的對象。 ...
    樂百川閱讀 4,519評論 0 3