




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1、mysql安裝及簡單配置:安裝Mysql時要選擇UTF-8的字符集;命令行啟動Mysql:net start mysql登錄mysql:mysql u root p回車然后輸入密碼或者mysql h localhost u root p回車然后輸入密碼創(chuàng)建數(shù)據(jù)庫:create database student Character set gbk查看已有表的詳細(xì)信息:describe 表名;或者 desc 表名在運(yùn)行時若遇到字符集不能顯示時,可在命令行通過以下命令:set names gbk(改顯示字符集)結(jié)構(gòu)化SQL語句:(以下均是以學(xué)生表進(jìn)行操作)2、sql語句及使用:2.1、selec
2、t語句及使用:查詢成績大于80的:select * from tb_score where score>=80;顯示指定列信息:select sid,socre from tb_score where score>=80;用order by進(jìn)行排序,order by一定是應(yīng)用在最后 默認(rèn)是升序排序(asc)降序排序是(desc)select * from tb_score order by score desc;(按照分?jǐn)?shù)降序排序)select * from tb_score order by kid desc,score;(ID降序,分?jǐn)?shù)升序進(jìn)行排序)有多個排序的時候,按照從左到
3、右依次進(jìn)行,先排第一個再排第二個單表查詢綜合應(yīng)用:select stuid,score from tb_score where score>80 order by score desc;含義:從成績表中選擇成績大于80的人的ID以及成績按照得分的降序進(jìn)行排序顯示選擇列的最大值:SELECT MAX(列名) AS (顯示結(jié)果包括的列) FROM shop;選擇一列中不同的數(shù)據(jù):Null和“ ”不一樣;null是沒有數(shù)據(jù) 是有數(shù)據(jù),但是是空Select * from tb_stu where tel is not null and tel <> ;2.2、distinct關(guān)鍵字的
4、使用Select distinct (列名) from (表名);select distinct sold_date from store_information;2.3、where子句的使用where子句的操作符:= 等于 <> 或者!= 不等于< <= 小于,小于等于 !< 不小于> >= 大于,大于等于 !> 不大于Between and 在和之間is null或者is not null 為空或者不為空select * from tb_student where tel is null;查出tel為null的記錄 tel為的記錄查詢不出來查
5、詢電話不為空的記錄的名單select * from tb_student where tel is not null and tel <> ;存儲的時候 會自動TRIM掉變成Null和“ ”不一樣;null是沒有數(shù)據(jù) 是有數(shù)據(jù),但是是空Null表示允許插入值,但是沒有設(shè)置過,與字段包含0,空字符串或者僅僅包含空格不同。2.4、and 和or關(guān)鍵字使用select store_name from store_information where (sales<2000 and sales>1000) or sales>100;幾個條件可以用and 和or連接起來,不同
6、的條件間加括號分開。And的優(yōu)先級高于orSelect prod_name,prod_price from products Where venid=dell01or venid=brs01 and prod_price>10;上面語句的意思是:查詢供應(yīng)商brs01制造的價格在十元以上的產(chǎn)品,或者是dell01供應(yīng)商生產(chǎn)的產(chǎn)品。Select prod_name,prod_price from products Where (venid=dell01or venid=brs01) and prod_price>10;上面語句的意思是:查詢供應(yīng)商brs01或者是dell01供應(yīng)商生產(chǎn)價
7、格在十元以上的產(chǎn)品。2.5、in關(guān)鍵字的使用在sql中,有兩種情況會用到inz這個指令,這里先介紹其中之一:與where有關(guān)的那一個情況,在這種情況下,我們事先至少知道一個我們需要的值。而將這些知道的值放到in這個子句中。SELECT "欄位名" FROM "表格名" WHERE "欄位名" IN ('值一', '值二', .);select * from store_information where store_name in("Los_Angeles");select * fr
8、om store_information where sales>200 and store_name in("Los_Angeles");等價于:select * from store_information where sales>200 and Store_name="Los_Angeles"in操作符的優(yōu)點(diǎn):in關(guān)鍵字支持和其他條件用and 和or進(jìn)行聯(lián)合條件的查詢查詢效率一般比or操作符號高In后面可以包含select子句2.6、between的使用Between讓我們可以在一定的范圍內(nèi)抓取數(shù)據(jù)庫中的值Select 列名 from
9、表名 where 列名 between A and B;Select * from tb_student where age between 16 and 19;包含and后面的數(shù)值2.7 通配符%和_%表示任何字符或者字符串,出現(xiàn)任意次數(shù) _表示一個字符,一個漢字要兩個下劃線;select * from store_information where sales like "%700%"通配符的優(yōu)缺點(diǎn):通配符比其他條件會發(fā)花費(fèi)更多的時間,能用其它的條件優(yōu)先選擇其它的查詢條件。通配符盡量不要放在搜索條件的首部,因?yàn)檫@樣是最慢的2.8 not 、not exists操作符no
10、t操作符只有一個功能:就是否定它之后所跟的任何條件。mysql中使用not exsists2.9 like關(guān)鍵字的使用select * from tb_student where tel like 136*;使用like時對后面 里面的內(nèi)容是區(qū)分大小寫的2.10拼接字段 在mysql中使用concat拼接字段在不同的數(shù)據(jù)庫中有不同的表示:Oracle DB2 Sybase使用 |SQL Server使用 +Mysql不支持以上兩種字符的使用,它使用concat函數(shù)Mysql中|相當(dāng)于or,&&相當(dāng)于and; trim的使用去掉字段兩邊的空格select trim( 1111 )
11、 as a from tb_student;運(yùn)行結(jié)果:ltrim 以及rtrim 去除字符串左邊空格或者右邊空格執(zhí)行算術(shù)運(yùn)算mysql> select (sage+1) as xusui from tb_stu;可以對一些字段進(jìn)行算術(shù)操作2.11函數(shù)操作每個DBMS都有不同的函數(shù),這里需要參照每個數(shù)據(jù)庫自己的使用說明如提取字符串:oracle,DB2使用SUNSTR()SQL Server Mysql使用SUNSTRING()數(shù)據(jù)類型轉(zhuǎn)化DB2使用CAST()Mysql SQL Server使用convert()獲取當(dāng)前日期DB2使用current_date();Mysql使用curda
12、te();oracle使用sysdate()sqlserver使用getdate();Mysql操作:mysql> select curdate() as today from tb_stu;操作結(jié)果:left從左邊取字符串,5表示取5位lpad表示左補(bǔ)齊 例子中為左補(bǔ)齊,補(bǔ)齊后為11位,用0補(bǔ)齊lower(str)將str變成小寫upper(str)將str變成大寫length(str)返回str字符串的長度right()返回字符串右邊的字符select right(hellworld,5); 結(jié)果:worldmysql> SELECT SUBSTRING('Quadra
13、tically',5); -> 'ratically'mysql> SELECT SUBSTRING('foobarbar' FROM 4); -> 'barbar'mysql> SELECT SUBSTRING('Quadratically',5,6); -> 'ratica' mysql> SELECT SUBSTRING('Sakila', -3); -> 'ila' mysql> SELECT SUBSTRING(
14、9;Sakila', -5, 3); -> 'aki'mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2); -> 'ki'日期處理函數(shù):mysql> select year(curdate() as curyy;運(yùn)行結(jié)果:| curyy | 2011 |不同系統(tǒng)的日期操作函數(shù):數(shù)值處理函數(shù):2.12聚集函數(shù)匯總數(shù)據(jù) 聚集函數(shù)有:avg(),返回某列的平均值count()返回某列的行數(shù)max() min() sum() 返回某列的最大最小值 總和值count函數(shù)使用的兩種形
15、式:使用count(*)對表中行的數(shù)目進(jìn)行計(jì)數(shù),不管某列的值是不是NULL還是非空值都會統(tǒng)計(jì)使用count(某一具體列)時,如果其中某些值是NULL則這些不計(jì)入count的結(jié)果中也可以此而成select count(1) from tb_stu;max min sum統(tǒng)計(jì)時也是忽略值為NULL的行的select max(score) from tb_score;select max(distinct score) from tb_score;一個默認(rèn)是統(tǒng)計(jì)All所有的,一個是統(tǒng)計(jì)不同的值的聚集函數(shù)2.13 分組函數(shù):group by 和having子句按照group by后面的字段進(jìn)行分組my
16、sql> select avg(score) from tb_score group by kid;| avg(score) | 88.83333 | 91.00000 | 67.50000 |mysql> select stuid,kid ,avg(score) from tb_score group by kid;| stuid | kid | avg(score) | 2001 | 1 | 88.83333 | 2001 | 2 | 91.00000 | 2002 | 4 | 67.50000 |group后面不能使用別名進(jìn)行分組過濾分組:having子句mysql>
17、select kid ,avg(score) as avg ,max(score) as max, min(score) as min from tb_score group by kid having avg>=75;| kid | avg | max | min | 1 | 88.83333 | 99.0 | 80.5 | 2 | 91.00000 | 92.0 | 90.0 |不加having子句的時候mysql> select kid ,avg(score) as avg ,max(score) as max, min(score) as min from tb_score
18、 group by kid;| kid | avg | max | min | 1 | 88.83333 | 99.0 | 80.5 | 2 | 91.00000 | 92.0 | 90.0 | 4 | 67.50000 | 85.0 | 50.0 |having子句不一定與group by一起出現(xiàn),但一起出現(xiàn)的情況比較多having后面的字段一定是在select中出現(xiàn)的字段where過濾的是原始行的數(shù)據(jù),having過濾的是分組之后的數(shù)據(jù)2.14各個子句的順序2.15內(nèi)連接 inner join on應(yīng)該選擇一個基準(zhǔn)表。on關(guān)鍵字表示條件,兩個join中間不用逗號不采用內(nèi)連接的寫法:sele
19、ct st.stuname,sub.kname,sc.scorefrom tb_stu st,tb_subject sub,tb_score scwhere st.stuid=sc.stuid and sub.kid=sc.kid and score >70;采用內(nèi)連接寫法:select s.stuname,k.kname,c.score from tb_score c inner join tb_stu s on s.stuid=c.stuid inner join tb_subject k on c.kid=k.kid where c.score>=70;兩種寫法的運(yùn)行結(jié)果是一
20、致的,知識查找效率有區(qū)別在SQL規(guī)范中推薦使用inner join的用法,因?yàn)椴檎倚矢咭恍┻\(yùn)行結(jié)果:+-+-+-+| stuname | kname | score |+-+-+-+| 張三 | 數(shù)學(xué) | 80.0 | 張三 | 語文 | 81.0 | 張三 | 英語 | 82.0 | 張三 | 物理 | NULL | 張三 | 化學(xué) | 84.0 | 李四 | 數(shù)學(xué) | 70.0 | 李四 | 語文 | NULL | 李四 | 英語 | 72.0 | 李四 | 物理 | 73.0 | 李四 | 化學(xué) | 74.0 | 李四 | 生物 | 75.0 | 王五 | 數(shù)學(xué) | 80.0 | 王
21、五 | 語文 | 81.0 | 王五 | 英語 | NULL | 王五 | 物理 | 83.0 | 王五 | 化學(xué) | 84.0 | 趙六 | NULL | NULL | 張飛 | NULL | NULL | 曹操 | NULL | NULL | 趙云 | NULL | NULL | 司馬懿 | NULL | NULL | 關(guān)羽 | NULL | NULL | 孫策 | NULL | NULL | 周瑜 | NULL | NULL | 楊過 | NULL | NULL | 小龍女 | NULL | NULL | 小龍女 | NULL | NULL | 小龍女 | NULL | NULL |2.
22、16外連接 、left outer joinon 左連接right oute joinon 右連接full outer joinon 全連接 檢索兩個表中的所有的行,并關(guān)聯(lián)那些可以關(guān)聯(lián)的行 mysql不支持left outer join表示指定包含左邊的表right outer join 表示指定包含右邊的表left outer joinon實(shí)例:應(yīng)該選定一個基準(zhǔn)表。select s.stuname,k.kname,c.score from tb_stu s left outer join tb_score c on c.stuid=s.stuid left outer join tb_sub
23、ject k on k.kid=c.kid;注:以tb_stu為中心,把表中所有的值列出,后面匹配的列出值,不匹配的輸出為NULL運(yùn)行結(jié)果:| 李四 | 英語 | 72.0 | 李四 | 物理 | 73.0 | 李四 | 化學(xué) | 74.0 | 李四 | 生物 | 75.0 | 王五 | 數(shù)學(xué) | 80.0 | 王五 | 語文 | 81.0 | 王五 | 英語 | 82.0 | 王五 | 物理 | 83.0 | 王五 | 化學(xué) | 84.0 | 趙六 | NULL | NULL | 張飛 | NULL | NULL | 曹操 | NULL | NULL | 趙云 | NULL | NULL |
24、 司馬懿 | NULL | NULL | 關(guān)羽 | NULL | NULL | 孫策 | NULL | NULL | 周瑜 | NULL | NULL |相同的語句改成內(nèi)連接:select s.stuname,k.kname,c.score from tb_stu sinner join tb_score c on c.stuid=s.stuid inner join tb_subject k on k.kid=c.kid;執(zhí)行結(jié)果:| stuname | kname | score | 張三 | 數(shù)學(xué) | 80.0 | 張三 | 語文 | 81.0 | 張三 | 英語 | 82.0 | 張三
25、 | 物理 | NULL | 張三 | 化學(xué) | 84.0 | 李四 | 數(shù)學(xué) | 70.0 | 李四 | 語文 | NULL | 李四 | 英語 | 72.0 | 李四 | 物理 | 73.0 | 李四 | 化學(xué) | 74.0 | 李四 | 生物 | 75.0 | 王五 | 數(shù)學(xué) | 80.0 | 王五 | 語文 | 81.0 | 王五 | 英語 | NULL | 王五 | 物理 | 83.0 | 王五 | 化學(xué) | 84.0 |內(nèi)連接和外連接的差別(自己覺得):內(nèi)連接只顯示所選內(nèi)容不全為空的值,即至少會滿足一些條件,外連接是只要是基準(zhǔn)表中有這個值與他相關(guān)的屬性就會顯示出來。外連接的查詢結(jié)果
26、一般會比內(nèi)連接更多。帶聚集函數(shù)的連接:就是多了個聚集函數(shù),沒什么他別的select st.stuname, count(sc.kid) as countfrom tb_score scinner join tb_stu st on st.stuid=sc.stuidgroup by sc.stuid;運(yùn)行結(jié)果:| stuname | count | 張三 | 5 | 李四 | 6 | 王五 | 5 |2.17自連接在一個表中查詢自己的字段,自連接的查詢速度較快mysql> select * from tb_stu -> st1, tb_stu st2 -> where st1
27、.stuid=st2.stuid -> and st2.stuname='張三'| stuid | stuname | sage | sdept | stuid | stuname | sage | sdept | 2001 | 張三 | 18 | NULL | 2001 | 張三 | 18 | NULL |2.18自然連接先列出所有表,再寫出表之間的關(guān)系select st.stuname,sc.score,sub.knamefrom tb_stu st,tb_score sc, tb_subject subwhere sc.stuid =st.stuid and sc.
28、kid=sub.kid;運(yùn)行結(jié)果:| stuname | score | kname | 張三 | 80.0 | 數(shù)學(xué) | 張三 | 81.0 | 語文 | 張三 | 82.0 | 英語 | 張三 | NULL | 物理 | 張三 | 84.0 | 化學(xué) |。2.19使用連接的注意事項(xiàng)一般使用內(nèi)連接,但需要查出所有值的時候也使用外連接應(yīng)該總是提供連接條件,否則會出現(xiàn)笛卡爾乘積2.20組合查詢用union連接不同的select查詢語句兩種情況會用到組合查詢:1、 在單個查詢中從不同的表中返回相似的數(shù)據(jù)結(jié)構(gòu)2、 查詢多個表,按單個查詢結(jié)果返回使用規(guī)則:1、 union中必須由兩條級以上的selec
29、語句組成2、 每個查詢語句必須包含相同的列,表達(dá)是或者聚集函數(shù)3、 列數(shù)據(jù)必須兼容,類型不必完全相同,但DBMS必須可以隱式的轉(zhuǎn)換數(shù)據(jù)類型4、 union從查詢結(jié)果中自動去除重復(fù)的行,如果要返回所有的行,可以使用union all5、 在使用組合查詢時只能有一條order by語句,只能放在最后。order by是用來排序組合查詢結(jié)果集,而不是針對某一select查詢結(jié)果集2.21插入、更新、刪除數(shù)據(jù)插入數(shù)據(jù)使用insert關(guān)鍵字。插入數(shù)據(jù)有幾種方式:插入完整的行,插入行的一部分,插入查詢結(jié)果插入時,每列必須提供一個值,若不插入且允許為空,則數(shù)據(jù)庫會提供一個NULL值插入完整的行:mysql&
30、gt; insert into tb_Stu(stuid,stuname,sage,sdept) values('2027','郭靖',40,'武當(dāng)');mysql> insert into tb_Stu values('2027','郭靖',40,'武當(dāng)');插入行的一部分mysql> insert into tb_Stu(stuid,stuname,sage) values('2027','郭靖',40);插入查詢結(jié)果查詢結(jié)果中的字段類型在插入的表中應(yīng)
31、該是相似的。并不強(qiáng)制要求兩個的列名完全一致,但需要對應(yīng),相應(yīng)的數(shù)據(jù)類型可以做轉(zhuǎn)化使用insertselect語句,一次可以插入多個數(shù)據(jù)insert into tb_student select * from tb_stu;從一個表完全復(fù)制到另外一個表中 select into mysql使用create tableinsert select和select into的區(qū)別:insert selec是增補(bǔ)數(shù)據(jù)到一個已經(jīng)存在的表select into是將從一個已經(jīng)存在的表中檢索的數(shù)據(jù)插入到一個新表中,有的DBMS可以覆蓋已經(jīng)存在的表,有的不行,著以來于具體的DBMS的規(guī)定。mysql創(chuàng)建一個新表:
32、create table tb_student select * from tb_stu;注意事項(xiàng):任何select子句都可以使用包括where和group by子句可以使用多表連接選擇數(shù)據(jù)更新數(shù)據(jù)更新要有where子句,要不然就全部更新了更新一列:mysql> select * from tb_stu where stuid='2001'| stuid | stuname | sage | sdept | 2001 | 張三 | 25 | network |mysql> update tb_stu set sdept='計(jì)算機(jī)' where stu
33、id='2001'mysql> select * from tb_stu where stuid='2001'| stuid | stuname | sage | sdept | 2001 | 張三 | 25 | 計(jì)算機(jī) |更新多列數(shù)據(jù):update tb_stu set sdept='計(jì)算機(jī)' ,sage=25 where stuid='2001'注意事項(xiàng):一般來說,當(dāng)表中存在數(shù)據(jù)時,不要對它進(jìn)行更新允許重命名已經(jīng)存在的列刪除數(shù)據(jù)刪除一列或者多列數(shù)據(jù)delete from tb_stu where stuid=2001;不
34、加where子句默認(rèn)刪除全部數(shù)據(jù),在每個表中設(shè)置主鍵,以保證刪除更改數(shù)據(jù)的唯一性Create:創(chuàng)建一個表DROP TABLE IF EXISTS y2k;CREATE TABLE y2k (date date primary key not null default 1, 設(shè)置默認(rèn)值date_time datetime not null, time_stamp timestamp not null);INSERT INTO y2k VALUES ("1998-12-31更新表結(jié)構(gòu) alteralter table tb_stu add address varchar(200);alt
35、er table tb_stu drop column address;復(fù)雜的表結(jié)構(gòu)一般手動刪除列,步驟為:1、定義一個和原表一樣的表,使用insert。select語句將數(shù)據(jù)導(dǎo)入到新標(biāo)2、檢查新表的數(shù)據(jù),重命名或者刪除3、用舊表的名稱重名新表刪除表drop table tb_stu1;有外鍵關(guān)聯(lián)的表,應(yīng)先將與之關(guān)聯(lián)的外鍵刪除重命名表rename table tb_stu1 tb_stu;2.23視圖視圖是一個虛擬的表,本身不存儲數(shù)據(jù),可以避免每次查詢相同的東西而重復(fù)輸入SQL語句。主要是對Table中的數(shù)據(jù)進(jìn)行簡單的加工,以藏復(fù)雜的SQLcreate view v_stu_score as后
36、面加上相應(yīng)的語句即可create view v_stu_score as select st.stuname ,sub.kname,sc.score from tb_score sc inner join tb_stu st on st.stuid=sc.stuid inner join tb_subject sub on sub.kid=sc.kid;它的結(jié)果和只寫select st.stuname ,sub.kname,sc.score from tb_score sc inner join tb_stu st on st.stuid=sc.stuid inner join tb_subj
37、ect sub on sub.kid=sc.kid;一樣查詢視圖和查詢表的操作一樣select * from v_stu_score;select * from v_stu_score where score>80;各種查詢語句、聚集函數(shù)、分組語句、計(jì)算字段都行2.24存儲過程()SQL Server中創(chuàng)建存儲過程以下是抄來的存儲過程語法存儲過程如同一門程序設(shè)計(jì)語言,同樣包含了數(shù)據(jù)類型、流程控制、輸入和輸出和它自己的函數(shù)庫。-基本語法-一.創(chuàng)建存儲過程create procedure sp_name()begin.end二.調(diào)用存儲過程1.基本語法:call sp_name()注意:存儲
38、過程名稱后面必須加括號,哪怕該存儲過程沒有參數(shù)傳遞三.刪除存儲過程1.基本語法:drop procedure sp_name/2.注意事項(xiàng)(1)不能在一個存儲過程中刪除另一個存儲過程,只能調(diào)用另一個存儲過程四.其他常用命令1.show procedure status顯示數(shù)據(jù)庫中所有存儲的存儲過程基本信息,包括所屬數(shù)據(jù)庫,存儲過程名稱,創(chuàng)建時間等2.show create procedure sp_name顯示某一個mysql存儲過程的詳細(xì)信息-數(shù)據(jù)類型及運(yùn)算符-一、基本數(shù)據(jù)類型:略二、變量:自定義變量:DECLARE a INT ; SET a=100; 可用以下語句代替:DECLARE a
39、 INT DEFAULT 100;變量分為用戶變量和系統(tǒng)變量,系統(tǒng)變量又分為會話和全局級變量用戶變量:用戶變量名一般以開頭,濫用用戶變量會導(dǎo)致程序難以理解及管理1、 在mysql客戶端使用用戶變量mysql> SELECT 'Hello World' into x;mysql> SELECT x;mysql> SET y='Goodbye Cruel World'mysql> select y;mysql> SET z=1+2+3;mysql> select z;2、 在存儲過程中使用用戶變量mysql> CREATE
40、PROCEDURE GreetWorld( ) SELECT CONCAT(greeting,' World');mysql> SET greeting='Hello'mysql> CALL GreetWorld( );3、 在存儲過程間傳遞全局范圍的用戶變量mysql> CREATE PROCEDURE p1( ) SET last_procedure='p1'mysql> CREATE PROCEDURE p2( ) SELECT CONCAT('Last procedure was ',last_pr
41、ocedure);mysql> CALL p1( );mysql> CALL p2( );三、運(yùn)算符:1.算術(shù)運(yùn)算符+ 加 SET var1=2+2; 4- 減 SET var2=3-2; 1* 乘 SET var3=3*2; 6/ 除 SET var4=10/3; 3.3333DIV 整除 SET var5=10 DIV 3; 3% 取模 SET var6=10%3 ; 12.比較運(yùn)算符> 大于 1>2 False< 小于 2<1 False<= 小于等于 2<=2 True>= 大于等于 3>=2 TrueBETWEEN 在兩值之
42、間 5 BETWEEN 1 AND 10 TrueNOT BETWEEN 不在兩值之間 5 NOT BETWEEN 1 AND 10 FalseIN 在集合中 5 IN (1,2,3,4) FalseNOT IN 不在集合中 5 NOT IN (1,2,3,4) True= 等于 2=3 False<>, != 不等于 2<>3 False<=> 嚴(yán)格比較兩個NULL值是否相等 NULL<=>NULL TrueLIKE 簡單模式匹配 "Guy Harrison" LIKE "Guy%" TrueREGEXP
43、 正則式匹配 "Guy Harrison" REGEXP "Ggreg" FalseIS NULL 為空 0 IS NULL FalseIS NOT NULL 不為空 0 IS NOT NULL True3.邏輯運(yùn)算符4.位運(yùn)算符| 或& 與<< 左移位>> 右移位 非(單目運(yùn)算,按位取反)注釋:mysql存儲過程可使用兩種風(fēng)格的注釋雙橫杠:-該風(fēng)格一般用于單行注釋c風(fēng)格:/* 注釋內(nèi)容 */ 一般用于多行注釋-流程控制-一、順序結(jié)構(gòu)二、分支結(jié)構(gòu)ifcase三、循環(huán)結(jié)構(gòu)for循環(huán)while循環(huán)loop循環(huán)repeat un
44、til循環(huán)注:區(qū)塊定義,常用begin.end;也可以給區(qū)塊起別名,如:lable:begin.end lable;可以用leave lable;跳出區(qū)塊,執(zhí)行區(qū)塊以后的代碼begin和end如同C語言中的 和 。-輸入和輸出-mysql存儲過程的參數(shù)用在存儲過程的定義,共有三種參數(shù)類型,IN,OUT,INOUTCreate procedure|function(IN |OUT |INOUT 參數(shù)名 數(shù)據(jù)類形.)IN 輸入?yún)?shù)表示該參數(shù)的值必須在調(diào)用存儲過程時指定,在存儲過程中修改該參數(shù)的值不能被返回,為默認(rèn)值OUT 輸出參數(shù)該值可在存儲過程內(nèi)部被改變,并可返回INOUT 輸入輸出參數(shù)調(diào)用時指
45、定,并且可被改變和返回IN參數(shù)例子:CREATE PROCEDURE sp_demo_in_parameter(IN p_in INT)BEGINSELECT p_in; -查詢輸入?yún)?shù)SET p_in=2; -修改select p_in;-查看修改后的值END;執(zhí)行結(jié)果:mysql> set p_in=1mysql> call sp_demo_in_parameter(p_in)略mysql> select p_in;略以上可以看出,p_in雖然在存儲過程中被修改,但并不影響p_id的值OUT參數(shù)例子創(chuàng)建:mysql> CREATE PROCEDURE sp_demo
46、_out_parameter(OUT p_out INT)BEGINSELECT p_out;/*查看輸出參數(shù)*/SET p_out=2;/*修改參數(shù)值*/SELECT p_out;/*看看有否變化*/END;執(zhí)行結(jié)果:mysql> SET p_out=1mysql> CALL sp_demo_out_parameter(p_out)略mysql> SELECT p_out;略INOUT參數(shù)例子:mysql> CREATE PROCEDURE sp_demo_inout_parameter(INOUT p_inout INT)BEGINSELECT p_inout;SE
47、T p_inout=2;SELECT p_inout;END;執(zhí)行結(jié)果:set p_inout=1call sp_demo_inout_parameter(p_inout) /略select p_inout;略附:函數(shù)庫mysql存儲過程基本函數(shù)包括:字符串類型,數(shù)值類型,日期類型一、字符串類CHARSET(str) /返回字串字符集CONCAT (string2 , ) /連接字串INSTR (string ,substring ) /返回substring首次在string中出現(xiàn)的位置,不存在返回0LCASE (string2 ) /轉(zhuǎn)換成小寫LEFT (string2 ,length )
48、 /從string2中的左邊起取length個字符LENGTH (string ) /string長度LOAD_FILE (file_name ) /從文件讀取內(nèi)容LOCATE (substring , string ,start_position ) 同INSTR,但可指定開始位置LPAD (string2 ,length ,pad ) /重復(fù)用pad加在string開頭,直到字串長度為lengthLTRIM (string2 ) /去除前端空格REPEAT (string2 ,count ) /重復(fù)count次REPLACE (str ,search_str ,replace_str )
49、/在str中用replace_str替換search_strRPAD (string2 ,length ,pad) /在str后用pad補(bǔ)充,直到長度為lengthRTRIM (string2 ) /去除后端空格STRCMP (string1 ,string2 ) /逐字符比較兩字串大小,SUBSTRING (str , position ,length ) /從str的position開始,取length個字符,注:mysql中處理字符串時,默認(rèn)第一個字符下標(biāo)為1,即參數(shù)position必須大于等于1mysql> select substring(abcd,0,2);+| substr
50、ing(abcd,0,2) |+| |+1 row in set (0.00 sec)mysql> select substring(abcd,1,2);+| substring(abcd,1,2) |+| ab |+1 row in set (0.02 sec)TRIM(BOTH|LEADING|TRAILING padding FROMstring2) /去除指定位置的指定字符UCASE (string2 ) /轉(zhuǎn)換成大寫RIGHT(string2,length) /取string2最后length個字符SPACE(count) /生成count個空格二、數(shù)值類型ABS (numbe
51、r2 ) /絕對值BIN (decimal_number ) /十進(jìn)制轉(zhuǎn)二進(jìn)制CEILING (number2 ) /向上取整CONV(number2,from_base,to_base) /進(jìn)制轉(zhuǎn)換FLOOR (number2 ) /向下取整FORMAT (number,decimal_places ) /保留小數(shù)位數(shù)HEX (DecimalNumber ) /轉(zhuǎn)十六進(jìn)制注:HEX()中可傳入字符串,則返回其ASC-11碼,如HEX(DEF)返回4142143也可以傳入十進(jìn)制整數(shù),返回其十六進(jìn)制編碼,如HEX(25)返回19LEAST (number , number2 ,.) /求最小值MOD (numerator ,denominator ) /求余POWER (number ,power ) /求指數(shù)RAND(seed) /隨機(jī)數(shù)ROUND (number ,decimals ) /四舍五入,decimals為小數(shù)位數(shù)注:返回類型并非均為整數(shù),如:(1)默認(rèn)變?yōu)檎沃祄ysql> select round(1.23);+-+| round(1.23) |+-+| 1 |+-+1 row in set (0.00 sec)mysql> select round(1.56);+-+| round(1.56) |+-+| 2 |+-+1 row in set
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育的研究技術(shù)課件
- DB23-T 1167-2024 裝配式聚苯模塊保溫系統(tǒng)技術(shù)規(guī)程
- 【廣州】2025年廣東廣州市荔灣區(qū)教育局招聘第二批事業(yè)編制人員204人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 【杭州】2025年浙江杭州市蕭山區(qū)機(jī)關(guān)事業(yè)單位第二次招聘編外人員84人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 胃字教學(xué)課件
- 題型09 實(shí)驗(yàn)方案設(shè)計(jì)與評價-備戰(zhàn)2020年中考化學(xué)實(shí)驗(yàn)題型特訓(xùn)(解析版)
- 春節(jié)廣州送溫暖活動方案
- 早餐傳統(tǒng)活動方案
- 星巴克月餅活動方案
- 舊書循環(huán)活動方案
- 大學(xué)課件-機(jī)電傳動控制(完整)
- 廠石墨深加工項(xiàng)目可行性研究報(bào)告
- 鋼結(jié)構(gòu)起重機(jī)行車軌道安裝工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
- Translating China智慧樹知到答案章節(jié)測試2023年湖南工業(yè)大學(xué)
- 耳尖放血課件完整版
- 輸尿管結(jié)石診療指南
- 基坑開挖專項(xiàng)施工方案
- 2023年安順市公共資源交易服務(wù)中心事業(yè)單位工作人員招聘筆試題庫及答案解析
- GB/T 9074.18-2017自攻螺釘和平墊圈組合件
- 變壓器培訓(xùn)資料
- 斷絕子女關(guān)系協(xié)議書模板(5篇)
評論
0/150
提交評論