------------------ 操作mysql的命令 --------------------
cmd命令列中查看mysql版本:
mysql -V
mysql --version
登陸mysql:
mysql -uroot -pluis
mysql -uroot -p
在mysql中查看資料庫版本:
select version();
查看所有資料庫:
show databases;
切換資料庫:
use xxx;
查看當前庫中的表:
show tables;
查看其他庫中的表:
show tables from 庫名;
創建資料庫:
create database xxx;
洗掉資料庫:
drop database xxx;
導表:(需要先有資料庫)
source sql腳本;
查看表結構:
desc 表名;
查看當前庫:
select database();
終止一條陳述句:
\c
退出mysql:
exit 或 Ctrl + c
查看某建表陳述句:
show create table 表名;
------------------ SQL陳述句 --------------------
條件查詢 between and
條件查詢 is null 和 is not null
and or
條件查詢 in
模糊查詢 like
資料排序 desc 和 asc
分組函式 group by
多欄位分組查詢
group by 之 having 二次過濾
去除重復記錄 distinct
判空函式 ifnull()
內連接、外連接、全連接
內連接:等值連接、非等值連接、自連接
外連接:左外連接、右外連接
多表連接查詢
夠用測驗題:找出每一個員工的部門名稱、工資等級以及上級領導(內連接和外連接之多表查詢)
select、where、from 后嵌套子查詢(from后接子查詢用的最多)
union 資料拼接
分頁查詢 limit mysql特有
desc asc 默認升序
count() 分組函式/多行處理函式
分組函式(sum,count,max,min,avg)自動忽略null
分組函式不可直接用于while子句中,因為分組函式是在group by之后執行,而group by是在while之后執行
ifnull() 空處理函式 有null參與的運算結果都為null
count() 和 count(欄位) 區別:
count(*) 統計總記錄條數
count(欄位) 統計不為null的該欄位記錄的條數
分組函式一般都會和group by聯合使用
重要結論:當一條陳述句后面有group by的話,select后面只能跟分組函式和參與分組的欄位,其他
欄位不能跟,有的話會有問題!(mysql中無意義,oracle中直接報錯,)
多欄位聯合分組:group by后使用逗號分隔,按照欄位先后順序進行分組,
查詢結果去重用distinct關鍵字
distinct出現在多欄位最前面表示多欄位聯合去重
建表create、添加資料insert、修改資料update、洗掉資料delete、洗掉大表中資料truncate(留表頭,刪其他資料,不可回滾,永久洗掉)
表的復制create as select、表的洗掉drop
總結 DQL 陳述句執行順序:
select 5
xxx
from 1
xxx
where 2
xxx
group by 3
xxx
having 4
xxx
order by 6
xxx;
約束:
非空約束: not null 只存在列級
唯一性約束:unique 列級&表級(唯一不可重復,但是可以為null)
主鍵約束:primary key 列級&表級(唯一不可重復,且不可為null)
外鍵約束:foreign key(欄位) reference 表名(一般填父表主鍵)
原則:
洗掉:先洗掉子表,再洗掉父表
建表:先創建父表,再創建子表
主鍵自增:primary key auto_increment
三大搜索引擎:
MyISAM(不支持事務,但可壓縮,占空間小,最常用的)
InnoDB(支持事務,安全,但執行效率較低,mysql默認引擎)
MEMORY(不支持事務,但查詢效率最高,資料存在記憶體中,斷電清空)
事務四大特性:
原子性:最小單元,不可再分
一致性:同時成功,同時失敗
隔離性:四大隔離級別(讀未提交、讀已提交[oracle默認]、可重復讀[mysql默認]、串行化讀)
使用分組函式后,查詢的時候只允許有參與分組的欄位和分組函式,其他欄位不允許寫,
寫了的話,其結果顯示無意義,在oracle中會報錯!
DQL 資料查詢語言 (Date Query Language) select
DML 資料操控語言 (Date Manipulation Language) insert delete update
DDL 資料定義語言 (Date Definition Language) create drop alter
TCL 事務控制語言 (Transactional Control Language) commit rollback
DCL 資料控制語言 (Data Control Language) grant revoke
資料庫設計三范式:
第一范式:所有表必須有主鍵,每個欄位原子性不可再分
第二范式:所有非主鍵欄位完全依賴主鍵,不能產生部分依賴
第三范式:所有非主鍵欄位完全依賴主鍵,不能產生傳遞依賴
口訣:
多對多,三張表,關系表兩個外鍵,
一對多,兩張表,多的表加外鍵,
目的:減少資料冗余
提醒:實際開發中,以滿足客戶需求為主,有時候會拿冗余換執行速度,
(多表聯查會降低執行速度,放一起雖然冗余,但效率有時會高一些)
一對一設計兩種方案:主鍵共享、外鍵唯一
情景:用戶登錄和用戶詳情,登錄單獨出一張表就不用查全部資訊,
分組函式是在分完組后可用,所以可以用在having二次過濾中!!!
select
deptno,count(*)
from
emp
group by
deptno
having
count(*) >= 5;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/525072.html
標籤:其他
上一篇:配置MySQL5.7主從復制
