摘要:有一個專門的關(guān)鍵字過程名刪除過程過程參數(shù)過程參數(shù)還有自己的類型限定參數(shù)僅需要將數(shù)據(jù)傳入存儲過程,并不需要返回計算后的該值。參數(shù)需要數(shù)據(jù)傳入存儲過程經(jīng)過調(diào)用計算后,再傳出返回值。
一:sql分類及語法
1.sql分類:
(1)DDL:數(shù)據(jù)庫定義語言,用于定義表,列,索引等數(shù)據(jù)庫對象. create,drop,alter等
(2)DML:數(shù)據(jù)庫操縱語言,增刪改查數(shù)據(jù)庫的記錄insert,delete,update,select等
(3)DCL:數(shù)據(jù)庫控制語言,定義了數(shù)據(jù)庫的表,字段,用戶的訪問權(quán)限和安全級別 grant,revoke等
2.DDL語句
(1)創(chuàng)建數(shù)據(jù)庫:create database test1;
(2)刪除數(shù)據(jù)庫:drop database test1;
(3)創(chuàng)建表:create table user(name varchar(10),age int(2));
(4)刪除表:drop table user;
(5)修改表:
alter table user modify name varchar(20); alter table user add column sex varchar(10); alter table user drop column age; Alter table user change age age1 int(4); Alter table user rename user1;
3.DML語句
(1)插入記錄insert into user(name,age)values(‘zhangsan’,18);
(2)刪除記錄:delete from user where name=’張三’
(3)更新記錄:update user set age=1 where name=’ 張三’
(4)查詢記錄:select * from user;
(5)查詢不重復(fù)的記錄j:select distinct name from user;
(6)排序查詢:select from user order by age desc;
(7)限制排序:select * from user order by age limit 1,30;
(8)聚合:select name,age from user group by age;
(9)聚合后條件:select name,age from user group by age having age > 18;
(having和where的區(qū)別:having是聚合后條件,where是聚合前條件)
(10)表連接:
①內(nèi)連接:
Select ename,deptname from emp,dept where emp.deptno=dept.deptno;
②外連接:
左連接:(查詢 emp 中所有用戶名和所在部門名稱:) select ename,deptname from emp left join dept on emp.deptno=dept.deptno; 右連接: select ename,deptname from emp left join dept on emp.deptno=dept.deptno;
· 左連接:包含所有的左邊表中的記錄甚至是右邊表中沒有和它匹配的記錄
· 右連接:包含所有的右邊表中的記錄甚至是左邊表中沒有和它匹配的記錄
(11)子查詢:需要的條件是另一個select的結(jié)果
(子查詢的關(guān)鍵字主要包括in, not in,=,!=,exists,not exists )
(如果查詢結(jié)果數(shù)唯一,可用=代替in)
select * from emp where deptno in(select deptno from dept);
select * from emp where deptno = (select deptno from dept limit 1);
(12)記錄聯(lián)合:
select * from t1 union select * from t2 select * from t1 union all select * from t2
(union和union all的區(qū)別:union是將union all查詢出來的結(jié)果進行了一次distinct,去除重復(fù)后的結(jié)果)
4.DCL語句
(1)授權(quán):創(chuàng)建一個數(shù)據(jù)庫用戶 z1,具有對 sakila 數(shù)據(jù)庫中所有表的 SELECT/INSERT 權(quán)限:
grant select,insert on sakila.* to "z1"@"localhost" identified by "123";
(2)收回權(quán)限:由于權(quán)限變更,需要將 z1 的權(quán)限變更,收回 INSERT,只能對數(shù)據(jù)進行 SELECT 操作:
revoke insert on sakila.* from "z1"@"localhost";
數(shù)字類型,字符串類型,日期和時間類型
1.數(shù)值類型
2.字符串類型
3.日期類型
三.mysdql中的運算符(1)算數(shù)運算符
(2)比較運算符
(3)邏輯運算符
(4)位運算符
四.mysql中常用的函數(shù)1.字符串函數(shù)
2.數(shù)值函數(shù)
3.日期時間函數(shù)
4.其它常用函數(shù)
五.表類型(存儲引擎的選擇)1.查詢當(dāng)前數(shù)據(jù)庫支持的存儲引擎
Show engines G
2.Mysql常見存儲引擎對比
(1)Myisam
Mysam是mysql的默認(rèn)存儲引擎 Myisam不支持事務(wù)和外鍵 優(yōu)勢是訪問速度快
(2)Innodb
Innodb提供事務(wù)和外鍵 占用磁盤空間保留索引,寫的效率比innodb差
(3)Memory
數(shù)據(jù)存放在內(nèi)存中 訪問速度非??欤ㄊ褂胔ash索引) 但服務(wù)一旦關(guān)閉,表中的數(shù)據(jù)丟失五.選擇合適的數(shù)據(jù)類型
1.char與varchar?
Char屬于固定長度的字符類型,varchar屬于可變長度的字符類型 所以char處理速度比varchar快得多,但是浪費存儲空間 (但隨著mysql版本的升級varchar的性能也在不斷的提升,所以目前varchar被更多的使用)
2.text與blob?
(1)兩者都能保存大文本數(shù)據(jù)
Blob能用來保存二進制數(shù)據(jù),比如照片
Text只能保存文本數(shù)據(jù),如文章
(2)text和bolo 字段在進行刪除操作時會出現(xiàn)“空洞”現(xiàn)象(表數(shù)據(jù)文件的大小并沒有因為刪除數(shù)據(jù)而減?。?,可以使用OPTIMIZE TABLE t; 進行優(yōu)化操作
(3)采用的優(yōu)化操作一般是把blob或text列放到一個多帶帶的表中
3.浮點數(shù)與定點數(shù)?
(1)定點數(shù):小數(shù)點固定在某個位置上的數(shù)據(jù)。 就好像 0.0000001 ,0.0001111;
(2)浮點數(shù):小數(shù)點位置可以浮動的數(shù)據(jù)。就像數(shù)學(xué)中的 1222.210^3也可以表示為1.222210^6;
(3)在java中,我們知道System.out.print("7.22-7.0=" + (7.22f-7.0f));的結(jié)果并不是0.22而是0.219999,因此在程序中盡量避免浮點數(shù)的比較,運算。而是通過定點數(shù)進行比較和運算
BigDecimal b1 = new BigDecimal(Double.toString(v1));
(4)數(shù)據(jù)庫中,float,double表示浮點數(shù)
用decimal或numberic表示定點數(shù)
所以對于貨幣等敏感數(shù)據(jù),用定點數(shù)存儲
4.日期類型的選擇?
如果只記錄年份,用year
如果還要記錄時分秒,用datetime
如果考慮不同時區(qū),用timestamp
(1)第一個字符集ASCII
(2)為了處理不同的文字,又出現(xiàn)了幾百種字符集。如iso-8859,GBK,GB2312等
(3)為了統(tǒng)一編碼,國際標(biāo)準(zhǔn)化組織iso制定了國際字符集標(biāo)準(zhǔn)UCS,這種標(biāo)準(zhǔn)采用四字節(jié)編碼,將代碼空間劃分位組,面,行,格
(4)這種UCS編碼遭到了很多美國計算機協(xié)會的反對(sun,apple,ibm等)它們組成了unicode的協(xié)會,并推出了unicode1.0(二字節(jié))
(5)后來為了編碼格式的統(tǒng)一,雙方展開談判,將unicode編碼并入UCS的0組0字面。把它稱作基本多語言文字面(BMP),剩下的兩個字節(jié)做輔助字面和專用字面
(6)其實人們常用到的還是unicode里的字符(99%),但是要用unicode里沒有而ucs有的怎么辦呢?所以制定了UTF-16,后來UTF-16在使用過程中出現(xiàn)了一系列的問題,所以出現(xiàn)了UTF-8(1至4字節(jié)編碼)
0.什么是索引?
系統(tǒng)根據(jù)某種算法,將已有的數(shù)據(jù)(和未來新增的數(shù)據(jù))多帶帶建立一個文件,文件能夠?qū)崿F(xiàn)快速的匹配數(shù)據(jù),并能夠快速的找到對應(yīng)表中的記錄
1.每種存儲引擎(innodb,myidsam等)對每個表至少支持16個索引,myisam和innodb默認(rèn)創(chuàng)建的都是BTREE索引,memory存儲引擎默認(rèn)使用hash索引
2.創(chuàng)建索引:
create index 索引名 on 表名 列命
3.刪除索引
drop index 索引名 on 表名
4.mysql中提供的索引類型?
(1)主鍵索引
(2)唯一索引
(3)全文索引:根據(jù)文章內(nèi)部的關(guān)鍵字進行索引
(4)普通索引
1.什么是視圖?
視圖是一種虛擬存在的表。通俗的講,視圖就是一條SELECT語句執(zhí)行后返回的結(jié)果集。
2.什么時候用到視圖?
(1)經(jīng)常用到的查詢或復(fù)雜的聯(lián)合查詢
(2)涉及到權(quán)限管理(比如表中某部分字段含有機密信息,不讓低權(quán)限的用戶看到,可以提供給他們一個適合他們權(quán)限的視圖
3.語句
(1)創(chuàng)建:Create or replace view 視圖名 as + 查詢語句
(2)查看:show create view 視圖名
(3)刪除:drop view 視圖名
4.視圖的意義
(1)可以節(jié)省sql語句(將一條復(fù)雜的查詢結(jié)果通過視圖保存)
(2)視圖操作是怎對查詢出來的結(jié)果,不會對原數(shù)據(jù)產(chǎn)生影響,相對安全
(3)更好的進行權(quán)限控制
1.什么是函數(shù)?
將一段代碼封裝到一個結(jié)構(gòu)中,在需要執(zhí)行代碼的時候調(diào)用函數(shù)即可(實現(xiàn)了復(fù)用)(任何函數(shù)都有返回值,因此函數(shù)通過select調(diào)用)
1.函數(shù)的分類?
(1)系統(tǒng)函數(shù):系統(tǒng)調(diào)用好的函數(shù),直接調(diào)用即可
Select subString(字符串,開始,結(jié)束)
Select char_length(字符串)
(2)自定義函數(shù):
創(chuàng)建語法:create function 函數(shù)名(形參列表)
Begin
函數(shù)體
Return 類型
End
調(diào)用: select 函數(shù)名();
1.存儲過程是什么?
存儲過程是沒有返回值的函數(shù)
2.創(chuàng)建過程?
Create procedure 過程名字(參數(shù)列表)
Begin
---過程
End
3.調(diào)用過程?
(過程沒有返回值,不能用select調(diào)用。有一個專門的關(guān)鍵字call)
Call 過程名();
4.刪除過程
Drop proceddure pro1;
5.過程參數(shù)
過程參數(shù)還有自己的類型限定(In out inout)
IN參數(shù):
僅需要將數(shù)據(jù)傳入存儲過程,并不需要返回計算后的該值。
OUT參數(shù):
不接受外部傳入的數(shù)據(jù),僅返回計算之后的值。
INOUT參數(shù):
需要數(shù)據(jù)傳入存儲過程經(jīng)過調(diào)用計算后,再傳出返回值。
(具體參考:http://blog.itpub.net/2977396...)
1.什么是觸發(fā)器?
Tigger,監(jiān)視某種情況并觸發(fā)某種操作
參考上篇博文
https://segmentfault.com/a/11...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/17762.html
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術(shù)專家我看過哪些技術(shù)類書籍。 大家好,我是...
摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
閱讀 1448·2023-04-25 19:51
閱讀 1936·2019-08-30 15:55
閱讀 1748·2019-08-30 15:44
閱讀 2707·2019-08-30 13:58
閱讀 2702·2019-08-29 16:37
閱讀 1082·2019-08-29 15:34
閱讀 4017·2019-08-29 11:05
閱讀 2633·2019-08-28 17:51