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