@
目錄- MySQL講解
- 一.啟動服務
- 二.MySQL命令之資料庫操作
- 三. MySQL命令之表操作
- 四.MySQL語法規范
- 五.DQL語言(主查詢)
- 六.DML語言(對表中的資料操作)
- 七. DDL語言(表欄位操作)
MySQL講解
一.啟動服務
- 用管理員身份運行命令提示符
停止服務
net stop + 服務名
啟動服務
net start + 服務名
查詢服務器連接所用埠資訊
select @@port;
查詢系統所支持的存盤引擎型別
show engines;
登錄到MySQL服務端查看服務器版本資訊
select version();
未登錄到MySQL服務器端查看服務器版本資訊
mysql --version/--V;
查看默認存盤引擎
show variables like 'default_storage_engine';
二.MySQL命令之資料庫操作
創建資料庫
create database 庫名;
查看當前所有資料庫
show databases;
打開指定的資料庫
use 庫名;
洗掉指定的資料庫
drop database 庫名;
查看當前在哪個資料庫
select database();
查看資料庫的存盤引擎
show variables like 'storage_engine'
查看資料庫的存盤引擎
show variables like '%storage_engine%'
三. MySQL命令之表操作
創建表
create table if not exists 表名
查看當前資料庫的所有表
show tables;
查看其他資料庫的所有表
show tables from 庫名;
查看表結構
desc 表名;
show index from 表名;
show create table 表名 \g
洗掉表
drop table [if exists] 表名;
四.MySQL語法規范
- 不區分大小寫,但建議關鍵字大寫,表名,列名小寫
- 建議每條命令用分號結尾
- 每條命令根據需要,可以進行縮進或換行
- 注釋
- 單行注釋:# 或 --格 注釋文字
- 多行注釋:/.../
MySQL資料型別
| 資料型別 | 系統資料型別 |
|---|---|
| 整數型 | TINYINY / SMALLINT / MEDIUMINT / INT / BIGINT |
| 精確數值型 | DECIMAL(M,D) / NUMERIC(M,D) |
| 浮點型 | FLOAT / REAL / DOUBLE |
| 位型 | BIT |
| 二進制型 | BINARY / VARBINARY |
| 字符型 | CHAR / VARCHAR / BLOB / TEXT / ENUM / SET |
| Unicode字符型 | NCHAR / NVARCHAR |
| 文本型 | TINTTEXT / TEXT / MEDIUMTEXT / LONGTEXT |
| BLOB型別 | TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB |
| 日期時間型 | DATETIME / DATE / TIMESTAMP / TIME / YEAR |
五.DQL語言(主查詢)
-
基礎查詢
- 語法
select 查詢串列 from 表名;
- 類似于
system.out.printLn(列印的東西)
- 特點
- 查詢串列可以是
- 表中的欄位
- 常量值
- 運算式
- 函式
- 查詢結果是一個虛數值
- 起別名
- 使用AS
select 要查詢的欄位 As 別名;
- 使用空格
select 要查詢的欄位 別名;
- 去重
select distinct 要查詢的欄位 from 表名;
- 拼接
select concat(str1,str2,...) As 別名;
- 查詢串列可以是
-
條件查詢
- 語法
select 查詢串列 from 表名 where 篩選條件;
- 篩選條件分類
- 條件運算子
>.<.=.!=.<>.>=.<=- 邏輯運算子
&&(與) / ||(或) / !(非) / and / or / not- 模糊查詢
like / between / and / in / is null / is not nulllike一般與通配符搭配使用
- 通配符
1. %:任意多個字符,包含0個字符
2. _:任意單個字符
-
排序查詢
- 語法:
select * from student where [篩選條件] order by 排序串列 [asc | desc]
支持多欄位排序,中間用,分割
-
常見函式
- 概念:類似Java中的方法
- 隱藏了實作細節
- 提高代碼的重用性
- 呼叫
select 函式名() [from 表];
- 分類
- 單行函式
concat:拼接字串
length:個數
ifnull:判斷是否為空單行函式: 字符函式 獲取引數值的位元組個數 length 拼接字串 concat 變大寫 upper 變小寫 lower 截取字串 substr/substring 回傳str2在str1中第一次出現的起始索引 instr(str1,str2) 去掉str2中前后的str1 trim(str1 form str2) eg:select trim('a' from 'aaaStudentaaa'); 用指定的字符實作左填充指定長度 lpad(str,len,str) 右填充 rpad 替換 replace 數學函式 四舍五入 round 向上取整 ceil 向下取整 floor 截斷 truncate() 取余 mod 日期函式 回傳當前系統日期和時間 now 回傳當前系統的日期,不包含時間 curdate 回傳當前系統的時間,不包含日期 curtime 將日期格式字符轉換成指定格式 str_to_date('9-13-2020','%m-%d-%y') 將日期轉換為字串 date_format('2020/11/16','%y年%m月%d日') 回傳(date1-date2)的天數 DATEDIFF(date1,date2) 其他函式 查看MySQL版本號 version() 查看當前資料庫 database() 查看當前用戶 user() 流程控制函式 if函式:實作if else的效果 case函式: --switch case的效果 語法:(當then后面接的是陳述句的時候,要用';'結尾,值的話就不用) case 要判斷的欄位或運算式 when 常量1 then 要顯示的值1或陳述句1 when 常量2 then 要顯示的值2或陳述句2 ... else 要顯示的陳述句n或值 end --多重if -
分組函式
- 功能:做統計使用,又稱為統計函式、聚合函式、組函式
分類: 求和 sum 平均值 avg 最大值 max 最小值 min 計算非空的值的個數 count- 特點:
- 一般sum、avg處理數值型別的資料
max、min、count可以處理任何型別 - 以上分組函式都忽略null值
- 可以和distinct搭配去重
- count函式的詳細介紹
一般用count(*)統計行數 - 和分組函式一同查詢的欄位要求是group by后面的欄位
- 一般sum、avg處理數值型別的資料
- 效率:
MYISAM存盤引擎下,count()效率最高
innodb存盤引擎下,count()和COUNT(1)效率差不多,但比COUNT(欄位)要高一些 -
分組查詢
- 語法:
select 分組函式,列(要求出現在group by的后面)
from 表名
【where 篩選條件】
【group by 分組串列】
【order by 子句】 -
注意:查詢串列必須特殊,要求是分組函式和group by后出現的欄位
-
特點:
- 分組查詢中的篩選條件分為兩類
分組前篩選:從原始表篩選,放在group by前,用where關鍵字
分組后篩選:分組后的結果集,放在group by后,用having關鍵字 - 分組函式做條件一定放在having子句中
- group by子句支持
單個欄位分組
多個欄位分組(多個欄位之間用逗號來連接)
運算式
函式 - 也可以添加排序
- 分組查詢中的篩選條件分為兩類
-
連接查詢
- 含義:又稱為多表查詢,多表連接,當查詢的欄位涉及/來自多個表時
- 笛卡爾乘積現象:表1 m 行,表2 n 行,結果=m*n行
- 如何發生:沒有有效的連接條件
- 如何避免:添加有效的連接條件
- 分類:
- 按年代分類
sql92標準:僅僅支持內連接
sql99標準【推薦】:支持內連接+外連接(左外、右外)+交叉連接- 按功能分類
- 內連接
等值連接
非等值連接
自連接 - 外連接
左外連接
右外連接
全外連接 - 交叉連接
- 內連接
-
子查詢
-
分頁查詢
-
union聯合查詢
六.DML語言(對表中的資料操作)
- 查看
select * from 表名;
- 插入
- 語法一
> insert into 表名 (欄位名,...) value(值,[約束]),(值,[約束]);
- 特點
1. 要求值的型別和欄位的型別一致或兼容
2. 欄位名和值要匹配
- 語法二
> insert into 表名 set=值,...;
- 語法三
> insert into 表名 values();
- 修改
- 語法
> update 表名 set 欄位=值,欄位=值 [where 篩選條件];
- 洗掉
- 語法
> delete from 表名 where id=1;
- 標識列
-
又稱為自增長列
-
含義:可以不用手動的插入值,系統提供默認的序列值
-
特點
- 標識列必須與一個key搭配使用,可以是primary key、foreign key、unique……
- 一個表至多一個標識列
- 標識列型別只能是數值型
- 標識列可以通過:SET auto_increment_increment=3;設定步長
- 標識列可以通過手動插入值來設定起始值
-
創建表時設定標識列
- 關鍵詞:auto_increment
查看標識列 show variables like '%auto_increment%'; { auto_increment_increment:步長 auto_increment_offset:默認值,MySQL中不支持修改默認值 }
-
七. DDL語言(表欄位操作)
- 表的約束
- 常見約束:六大約束
非空約束 not null 默認約束 default 主鍵約束 primary key 外鍵約束 foreign key 唯一性約束 類似于primary key,可以為空 unique 檢查約束 check- 約束可以分為表級約束和列級約束
- 列級約束,在列后面添加
- 表級約束
constraint 約束名 約束型別;
- 常見約束:六大約束
修改表名
alter table 舊表名 rename [to] 新表名;
修改列名/欄位語法規則
alter table 表名 change 原欄位名 新欄位名 新欄位型別;
添加列
alter table 表名 add column 列名 型別 [first | after 欄位名];
修改列型別或約束
alter table 表名 modify column 列名 新型別 [新約束];
洗掉某列
alter table 表名 drop column 列名;
復制舊表的結構
create table if not exists 表名 like 舊表名;
復制舊表的結構和資料
create table if not exists 表名 select 查詢串列 from 舊表名 [where 篩選條件];
### 八.TCL語言(事務控制語言)
- TCL語言
- 通過show engines;來查看MySQL支持的存盤引擎
- 其中innodb支持事務,而myisam,memory等不支持事務
- 事務的屬性/特點:
- 原子性:一個事務不可再分割,要么全部執行,要么全部不執行
- 一致性:一個事務執行會使資料從一個一致狀態切換到另一個一致狀態
- 隔離性:一個事務的執行不受其他事務的干擾
- 持久性:一個事務一旦提交,則會永久的改變資料庫的資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/257346.html
標籤:其他
上一篇:Redis-第七章節-持久化
