本節索引:
一、SQL簡介及數據類型
二、數據定義語言(DDL):CREATE, DROP, ALTER
三、數據操作語言(DML):INSERT,UPDATE,DELETE
四、數據查詢語言(DQL):SELECT,LIKE,GROUP,ODER BY
五、多表查詢SQJ JOIN
六、視圖VIEW
一、SQL語言簡介:
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫
查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統;同時也是數據庫腳本文件
的擴展名
關系型數據庫的常見組件
數據庫:database
表:table
行:row
列:column
索引:index
視圖:view
用戶:user
權限:privilege
存儲過程:procedure,無返回值
存儲函數:function,有返回值
觸發器:trigger
事件調度器:event scheduler,任務計劃
命名規則:
必須以字母開頭
可包括數字和三個特殊字符(# _ $)
不要使用MySQL的保留字
同一database(Schema)下的對象不能同名
數據類型:
(一)整型
tinyint(m) 1個字節 范圍(-128~127)
smallint(m) 2個字節 范圍(-32768~32767)
mediumint(m) 3個字節 范圍(-8388608~8388607)
int(m) 4個字節 范圍(-2147483648~2147483647)
bigint(m) 8個字節 范圍(+-9.22*10的18次方)
取值范圍如果加了unsigned,則最大值翻倍,如tinyint unsigned的取值范圍為(0~255)
(二)浮點型(float和double),近似值
float(m,d) 單精度浮點型 8位精度(4字節) m總個數,d小數位
double(m,d) 雙精度浮點型16位精度(8字節) m總個數,d小數位
設一個字段定義為float(6,3),如果插入一個數123.45678,實際數據庫里存
的是123.457,但總個數還以實際為準,即6位
(三)字符串(char,varchar,_text)
char(n) 固定長度,最多255個字符
varchar(n)可變長度,最多65535個字符
inytext 可變長度,最多255個字符
ext 可變長度,最多65535個字符
mediumtext 可變長度,最多2的24次方-1個字符
ongtext 可變長度,最多2的32次方-1個字符
BINARY(M) 固定長度,可存二進制或字符,長度為0-M字節
VARBINARY(M) 可變長度,可存二進制或字符,允許長度為0-M字節
內建類型:ENUM枚舉, SET集合
char和varchar:
1.char(n) 若存入字符數小于n,則以空格補于其后,查詢之時再將空格去掉。
所以char類型存儲的字符串末尾不能有空格,varchar不限于此。
2.char(n) 固定長度,char(4)不管是存入幾個字符,都將占用4個字節,varchar
是存入的實際字符數+1個字節(n< n>255),所以varchar(4),存入3個字符將
占用4個字節。
3.char類型的字符串檢索速度要比varchar類型的快
varchar和text:
1.varchar可指定n,text不能指定,內部存儲varchar是存入的實際字符數+1個
字節(n< n>255),text是實際字符數+2個字節。
2.text類型不能有默認值
3.varchar可直接創建索引,text創建索引要指定前多少個字符。varchar查詢速
度快于text
(四)二進制數據:BLOB
BLOB和text存儲方式不同,TEXT以文本方式存儲,英文存儲區分大小寫,
而Blob是以二進制方式存儲,不分大小寫
BLOB存儲的數據只能整體讀出
TEXT可以指定字符集,BLOB不用指定字符集
(五)日期時間類型
date 日期 ‘2008-12-2’
time 時間 ’12:25:36′
datetime 日期時間 ‘2008-12-2 22:06:44’
timestamp 自動存儲記錄修改時間
YEAR(2), YEAR(4):年份
timestamp字段里的時間數據會隨其他字段修改的時候自動刷新,這個數據類
型的字段可以存放這條記錄最后被修改的時間
修飾符:
NULL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數據列可包含NULL值
NOT NULL? ? ? ? ? ? ? ? ? ? 數據列不允許包含NULL值
DEFAULT ???? ? ? ? ? ? ? ? ? 默認值
PRIMARY KEY? ? ? ? ? ? ?主鍵
UNIQUE KEY ? ? ? ? ? ? ? ?唯一鍵
CHARACTER SET name ? ? ? ? ?? 指定一個字符集
AUTO_INCREMENT ?????????????? 自動遞增,適用于整數類型
UNSIGNED ???????????? 無符號
SQL語句分類:
DDL:Data Defination Language?????????
代表操作:
CREATE??? 可用來創建數據庫,表
DROP?????? 可用來刪除數據庫,表
ALTER????? 可用來修改表的屬性,字段的結構
DML:Data Manipulation Language???????
代表操作:
INSERT??? 可用來添加表中的行
DELETE??? 可用來刪除表中的行
UPDATE?? 可用來修改標準行的信息
DCL:Data Control Language? ??????
代表操作:
GRANT
REVOKE
DQL:Data Query Language??
代表操作:
SELECT
二、數據定義語言(DDL):CREATE, DROP, ALTER
數據定義語言(DDL):其語句包括動詞CREATE和DROP。在數據庫中創建新表或刪除表(CREAT
TABLE 或 DROP TABLE);為表加入索引等。DDL包括許多與人數據庫目錄中獲得數據
有關的保留字。它也是動作查詢的一部分。
新建數據庫:
CREATE DATABASE|SCHEMA [IF NOT EXISTS] DB_NAME;
CHARACTER SET ‘character set name’
COLLATE ‘collate name’
刪除數據庫:
DROP DATABASE|SCHEMA [IF EXISTS]’DB_NAME’
新建表:
CREATE TABLE
(1) 直接創建
(2) 通過查詢現存表創建;新表會被直接插入查詢而來的數據
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,…)] [table_options]
[partition_options] select_statement
(3) 通過復制現存的表的表結構創建,但不復制數據
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE
oldtblname | (LIKE oldtblname) }
示例:直接創建表
MariaDB [(db1)]> create table emp
??? -> ( id int unsigned primary key? auto_increment,
??? -> name varchar(30) not null ,
??? -> sex char(1) default ‘m’ ,
??? -> address varchar(100) ) engine=innodb charset=utf8;
示例:通過查詢現存表創建
MariaDB [db1]> create table user select user,host,password from mysql.user;
MariaDB [db1]> desc user;
+———-+———-+——+—–+———+——-+
| Field??? | Type???? | Null | Key | Default | Extra |
+———-+———-+——+—–+———+——-+
| user???? | char(16) | NO?? |???? |???????? |?????? |
| host???? | char(60) | NO?? |???? |???????? |???? ??|
| password | char(41) | NO?? |???? |???????? |?????? |
+———-+———-+——+—–+———+——-+
MariaDB [db1]> select * from user;
+——+—————+———-+
| user | host????????? | password |
+——+—————+———-+
| root | localhost???? |????????? |
| root | centos7.wangx |????????? |
| root | 127.0.0.1???? |????????? |
| root | ::1?????????? |????????? |
|????? | localhost???? |????????? |
|????? | centos7.wangx |????????? |
+——+—————+———-+
示例:通過復制現存的表的表結構創建,但不復制數據
MariaDB [db1]> create table user3 like mysql.user;
示例:創建表包含復合主鍵
MariaDB [db1]> create table t1 ( name char(30),city char(30),sex char(1) primary key(name,city) );
表操作:
查看所有的引擎:SHOW ENGINES
查看表:SHOW TABLES [FROM db_name]
查看表結構:DESC [db_name.]tb_name
刪除表:DROP TABLE [IF EXISTS] tb_name
查看表創建命令:SHOW CREATE TABLE tbl_name
查看表狀態:SHOW TABLE STATUS LIKE ‘tbl_name’
查看庫中所有表狀態:SHOW TABLE STATUS FROM db_name
示例:直接創建TABLE
MariaDB [db1]> CREATE TABLE students ( id tinyint unsigned not null primary key,
name char(10) not null,phone char(11) not null ,sex char(1) );
MariaDB [db1]> show tables;?
+—————+
| Tables_in_db1 |
+—————+
| students????? |
+—————+
示例:查看表狀態信息
MariaDB [db1]> show table status like ‘students’\G
*************************** 1. row ***************************
Name: students
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 0
Avg_row_length: 0
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 10485760
Auto_increment: NULL
Create_time: 2018-06-06 18:19:05
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
示例:查看數據庫狀態信息
MariaDB [db1]> show table status from db1\G
*************************** 1. row ***************************
Name: students
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 0
Avg_row_length: 0
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 10485760
Auto_increment: NULL
Create_time: 2018-06-06 18:19:05
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
表操作
DROP TABLE [IF EXISTS] ‘tbl_name’;
ALTER TABLE ‘tbl_name’
字段:
添加字段:add
?? ADD col1 data_type [FIRST|AFTER col_name]
刪除字段:drop
修改字段:
alter(默認值), change(字段名), modify(字段屬性)
索引:
添加索引:add index
刪除索引: drop index
表選項
修改:
查看表上的索引:SHOW INDEXES FROM [db_name.]tbl_name;
查看幫助:Help ALTER TABLE
示例:
修改表名
ALTER TABLE students RENAME s1;
添加表s1中phone列到name列后
ALTER TABLE s1 ADD phone varchar(11) AFTER name;
修改表s1中的phone字段屬性為int
ALTER TABLE s1 MODIFY phone int;
修改表s1中的phone字段名稱為mobile
ALTER TABLE s1 CHANGE COLUMN phone mobile char(11);
刪掉表s1中的一個字段mobile
ALTER TABLE s1 DROP COLUMN mobile;
在students表中新增加一列gender,只允許填入m,f
ALTER TABLE students ADD gender ENUM(‘m’,’f’)
修改students表中的id字符變為sid字段
ALETR TABLE students CHANGE id sid int UNSIGNED NOT NULL PRIMARY KEY;
將students表中name字段設為唯一鍵
ALTER TABLE students ADD UNIQUE KEY(name);
將students表中age字段設為索引
ALTER TABLE students ADD INDEX(age);
DESC students;
SHOW INDEXES FROM students;
刪掉students表中的age字段
ALTER TABLE students DROP age;
三、數據操作語言(DML):INSERT,UPDATE,DELETE
數據操作語言(DML):其語句包括動詞INSERT,UPDATE和DELETE。它們分別用于添加,修
改和刪除表中的行。也稱為動作查詢語言。
INSERT
功能:可用來添加表中的行
示例:添加表中的行第一種語法
MariaDB [db1]> insert students values(1,’bai’,’10086′,’m’);
MariaDB [db1]> select * from students;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 1 | bai? | 10086 | m??? |
+—-+——+——-+——+
示例:添加表中的行第二種語法
MariaDB [db1]> insert students(name,id) value (‘wangx’,70);
MariaDB [db1]> select * from students;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 1 | bai? | 10086 | m??? |
| 70 | wangx|?????? | NULL |
+—-+——+——-+——+
多行添加
MariaDB [db1]> insert students(id,name,sex) values (2,’liu’,’m’),(3,’lin’,’f’);
MariaDB [db1]> select * from students;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 1 | bai? | 10086 | m??? |
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
| 70 | wang |?????? | NULL |
+—-+——+——-+——+
示例:添加表中的行第三種語法
MariaDB [db1]> insert students set id=4,name=’zhao’ ;
MariaDB [db1]> select * from students;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 1 | bai? | 10086 | m??? |
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
|? 4 | zhao |?????? | NULL |
| 70 | wang |?????? | NULL |
+—-+——+——-+——+
UPDATE
功能:可用來修改標準行的信息
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] …
[WHERE where_condition]
[ORDER BY …]
[LIMIT row_count]
注意:一定要有限制條件,否則將修改所有行的指定字段
限制條件:
WHERE
LIMIT
Mysql 選項:–safe-updates| –i-am-a-dummy|-U
MariaDB [db1]> select * from students;???
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 1 | bai? | 10086 | m??? |
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
|? 4 | zhao |?????? | NULL |
| 70 | wang |?????? | NULL |
+—-+——+——-+——+
示例:修改表中行內容
MariaDB [db1]> update students set name=’admin’,sex=’f’ where id=1;??
MariaDB [db1]> select * from students;
+—-+——-+——-+——+
| id | name? | phone | sex? |
+—-+——-+——-+——+
|? 1 | admin | 10086 | f??? |
|? 2 | liu?? |?????? | m??? |
|? 3 | lin?? |?????? | f??? |
|? 4 | zhao? |?????? | NULL |
| 70 | wang? |?????? | NULL |
+—-+——-+——-+——+
DELETE
功能:可用來刪除表中的行
生產環境一般用偽刪除代替DELETE:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_condition]
[ORDER BY …]
[LIMIT row_count]
可先排序再指定刪除的行數
注意:一定要有限制條件,否則將清空表中的所有數據
限制條件:
WHERE
LIMIT
TRUNCATE TABLE tbl_name; 清空表,慎用!
MariaDB [db1]> delete from students where id=1;
MariaDB [db1]> select * from students;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
|? 4 | zhao |?????? | NULL |
| 70 | wang |?????? | NULL |
+—-+——+——-+——+
為避免操作時忘加where可使用安全更新模式
mysql –safe-updates|-U
當執行修該操作未指定WHERE時就會進行報錯提醒
MariaDB [db1]> update user set user=’admin’
-> ;
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
方法一:添加別名
alias mysql=mysql -U????
方法二:修改配置文件
vim /etc/my.cnf.d/mysql-clients.cnf
[mysql]
safe-updates
四、數據查詢語言(DQL):SELECT,LIKE,GROUP,ODER BY
數據查詢語言(DQL):也稱為“數據檢索語句”,用以從表中獲得數據,確定數據怎樣在
應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保
留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一
起使用。
select語句執行順序:
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[SQL_CACHE | SQL_NO_CACHE]
select_expr [, select_expr …]
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], … [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], …]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[FOR UPDATE | LOCK IN SHARE MODE]
注意:select語句用法不同會造成性能消耗不同,性能差的寫法甚至可能造成宕機
LIKE:
%: 任意長度的任意字符
_:任意單個字符
RLIKE:正則表達式,索引失效,不建議使用
REGEXP:匹配字符串可用正則表達式書寫模式,同上
邏輯操作符:
???????? NOT
???????? AND
???????? OR
???????? XOR
示例:
單表操作
MariaDB [db1]> select * from user;
+——+—————+———-+
| user | host????????? | password |
+——+—————+———-+
| root | localhost???? |????????? |
| root | centos7.wangx |????????? |
| root | 127.0.0.1???? |????????? |
| root | ::1?????????? |????????? |
|????? | localhost???? |????????? |
|????? | centos7.wangx |????????? |
+——+—————+———-+
select也是一種語句:
MariaDB [db1]> select ‘hello world’;
+————-+
| hello world |
+————-+
| hello world |
+————-+
也可以進行運算
MariaDB [db1]> select ‘1+2=’,1+2;
+——+—–+
| 1+2= | 1+2 |
+——+—–+
| 1+2= |?? 3 |
+——+—–+
有類似與sed的特性:
MariaDB [db1]> select ‘1+2=’,1+2 from user;
+——+—–+
| 1+2= | 1+2 |
+——+—–+
| 1+2= |?? 3 |
| 1+2= |?? 3 |
| 1+2= |?? 3 |
| 1+2= |?? 3 |
| 1+2= |?? 3 |
| 1+2= |?? 3 |
+——+—–+
MariaDB [db1]> select user,password from user;????
+——+———-+
| user | password |
+——+———-+
| root |????????? |
| root |????????? |
| root |????????? |
| root |????????? |
|????? |????????? |
|????? |????????? |
+——+———-+
可添加自定義字符:
MariaDB [db1]> select ‘number’,user,password from user;
+——–+——+———-+
| number | user | password |
+——–+——+———-+
| number | root |????????? |
| number | root |????????? |
| number | root |????????? |
| number | root |????????? |
| number |????? |????????? |
| number |????? |????????? |
+——–+——+———-+
限定條件select
MariaDB [db1]> select ‘number’,user,password from user where user=’root’;
+——–+——+———-+
| number | user | password |
+——–+——+———-+
| number | root |????????? |
| number | root |????????? |
| number | root |????????? |
| number | root |????????? |
+——–+——+———-+
MariaDB [db1]> select * from students;?????????????????
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 2 | liu? |?????? | m ???|
|? 3 | lin? |?????? | f??? |
|? 4 | zhao |?????? | NULL |
| 70 | wang |?????? | NULL |
+—-+——+——-+——+
判斷條件,是否為空
搜索性別為空的學生信息
MariaDB [db1]> select * from students where sex is null;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 4 | zhao |?????? | NULL |
| 70 | wang |?????? | NULL |
+—-+——+——-+——+
搜索性別不為空的學生信息
MariaDB [db1]> select * from students where sex is not null;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
+—-+——+——-+——+
搜索id大于2小于5的學生信息
MariaDB [db1]> select * from students where id >=2 and id<=5;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
|? 4 | zhao |?????? | NULL |
+—-+——+——-+——+
也可用between寫法表示范圍
MariaDB [db1]> select * from students where id between 2 and 5;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
|? 4 | zhao |?????? | NULL |
+—-+——+——-+——+
字符范圍搜索
MariaDB [db1]> select * from students where sex in (‘f’,’m’);?
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
+—-+——+——-+——+
邏輯或關系搜索
MariaDB [db1]> select * from students where sex in (‘f’,’m’) or sex is null;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 0 | 70?? |?????? | NULL |
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
|? 4 | zhao |?????? | NULL |
| 70 | wang |?????? | NULL |
+—-+——+——-+——+
可對字段定義別名(as可省略)
MariaDB [db1]> select id as 編號,name 姓名 from students where sex in (‘f’,’m’) or sex is null;???
+——–+——–+
| 編號?? | 姓名?? |
+——–+——–+
|????? 0 | 70???? |
|????? 2 | liu??? |
|????? 3 | lin??? |
|????? 4 | zhao?? |
|???? 70 | wang?? |
+——–+——–+
LIKE
功能:支持模糊搜索
搜索名字以w開頭學生信息
MariaDB [db1]> select * from students where name like ‘w%’;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
| 70 | wang |?????? | NULL |
+—-+——+——-+——+
搜索名字包含i的學生信息
MariaDB [db1]> select * from students where name like ‘%i%’;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
+—-+——+——-+——+
“_”可用來表示單個字符,搜索名字為三個字符的學生信息
MariaDB [db1]> select * from students where name like ‘___’;
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
+—-+——+——-+——+
RLIKE
功能:支持正則表達式,不建議使用,將導致索引生效?。。。?!
搜索名字以l開頭的學員信息
MariaDB [db1]> select * from students where name rlike ‘^l’;??
+—-+——+——-+——+
| id | name | phone | sex? |
+—-+——+——-+——+
|? 2 | liu? |?????? | m??? |
|? 3 | lin? |?????? | f??? |
+—-+——+——-+——+
GROUP
功能:根據指定的條件把查詢結果進行“分組”以用于做“聚合”運算
avg(), max(), min(), count(), sum()
HAVING: 對分組聚合運算后的結果指定過濾條件
ORDER BY: 根據指定的字段對查詢結果進行排序
升序:ASC
降序:DESC
LIMIT [[offset,]row_count]:對查詢的結果進行輸出行數數量限制
對查詢結果中的數據請求施加“鎖”
FOR UPDATE: 寫鎖,獨占或排它鎖,只有一個讀和寫
LOCK IN SHARE MODE: 讀鎖,共享鎖,同時多個讀
以下表為示例
MariaDB [db1]> select * from students;???????????
+—-+——-+——-+——-+——+
| id | name? | phone | score | sex? |
+—-+——-+——-+——-+——+
|? 2 | liu?? |?????? |??? 88 | m??? |
|? 3 | lin?? |?????? |??? 84 | f??? |
|? 6 | zhang | 10010 |??? 76 | m??? |
| 70 | wang? |?????? |??? 93 | f??? |
+—-+——-+——-+——-+——+
按性別分組統計最好成績
MariaDB [db1]> select sex,max(score) as 最好成績 from students group by sex;?
+——+————–+
| sex? | 最好成績???? |
+——+————–+
| f??? |?????????? 93 |
| m??? |?????????? 88 |
+——+————–+
按性別分組統計平均成績
MariaDB [db1]> select sex,avg(score) from students group by sex;?????????????
+——+————+
| sex? | avg(score) |
+——+————+
| f??? |??? 88.5000 |
| m??? |??? 82.0000 |
+——+————+
多行分組:
MariaDB [db1]> select * from students;???????????????????????
+—-+——-+——-+——-+——+——-+
| id | name? | phone | score | sex? | class |
+—-+——-+——-+——-+——+——-+
|? 2 | liu?? |?????? |??? 88 | m??? |???? 1 |
|? 3 | lin?? |?????? |??? 84 | f??? |???? 1 |
|? 4 | abc?? | 11000 |??? 86 | f??? |???? 1 |
|? 6 | zhang | 10010 |??? 76 | m??? |???? 2 |
| 70 | wang? |?????? |??? 93 | f??? |???? 2 |
+—-+——-+——-+——-+——+——-+
統計按班級,性別分組后的各組平均成績
MariaDB [db1]> select class,sex,avg(score) from students group by class,sex;
+——-+——+————+
| class | sex? | avg(score) |
+——-+——+————+
|???? 1 | f??? |??? 85.0000 |
|???? 1 | m??? |??? 88.0000 |
|???? 2 | f??? |??? 93.0000 |
|??? ?2 | m??? |??? 76.0000 |
+——-+——+————+
count()統計數量:
MariaDB [db1]> select class,sex,count(*) from students group by class,sex;
+——-+——+———-+
| class | sex? | count(*) |
+——-+——+———-+
|???? 1 | f??? |??????? 2 |
|???? 1 | m??? |??????? 1 |
|???? 2 | f??? |??????? 1 |
|???? 2 | m??? |??????? 1 |
+——-+——+———-+
統計數量時建議統計主鍵,可提高數率
MariaDB [db1]> select class,sex,count(id) from students group by class,sex;
+——-+——+———–+
| class | sex? | count(id) |
+——-+——+———–+
|???? 1 | f??? |???????? 2 |
|???? 1 | m??? |???????? 1 |
|???? 2 | f??? |???????? 1 |
|???? 2 | m??? |???????? 1 |
+——-+——+———–+
統計學生人數
MariaDB [db1]> select count(id) from students;
+———–+
| count(id) |
+———–+
|???????? 5 |
+———–+
分組后過濾:
統計按班級,性別分組后的各組平均成績,只顯示平均成績打印80的組統計信息
MariaDB [db1]> select class,sex,avg(score) from students group by class,sex having avg(score) >80;
+——-+——+————+
| class | sex? | avg(score) |
+——-+——+————+
|???? 1 | f??? |??? 85.0000 |
|???? 1 | m??? |??? 88.0000 |
|???? 2 | f??? |??? 93.0000 |
+——-+——+————+
分組前過濾
只顯示1班分組后的統計信息
MariaDB [db1]> select class,sex,avg(score) from students where class=1 group by class,sex having avg(score) >80;
+——-+——+————+
| class | sex? | avg(score) |
+——-+——+————+
|???? 1 | f??? |??? 85.0000 |
|???? 1 | m??? |??? 88.0000 |
+——-+——+————+
ORDER BY
正序排列:
MariaDB [db1]> select * from students order by score;
+—-+——-+——-+——-+——+——-+
| id | name? | phone | score | sex? | class |
+—-+——-+——-+——-+——+——-+
|? 6 | zhang | 10010 |??? 76 | m??? |???? 2 |
|? 3 | lin?? |?????? |??? 84 | f??? |???? 1 |
|? 4 | abc?? | 11000 |??? 86 | f??? |???? 1 |
|? 2 | liu?? |?????? |??? 88 | m??? |???? 1 |
| 70 | wang ?|?????? |??? 93 | f??? |???? 2 |
+—-+——-+——-+——-+——+——-+
倒序排列:
MariaDB [db1]> select * from students order by score desc;
+—-+——-+——-+——-+——+——-+
| id | name? | phone | score | sex? | class |
+—-+——-+——-+——-+——+——-+
| 70 | wang? |?????? |??? 93 | f??? |???? 2 |
|? 2 | liu?? |?????? |??? 88 | m??? |???? 1 |
|? 4 | abc?? | 11000 |??? 86 | f??? |???? 1 |
|? 3 | lin?? |?????? |??? 84 | f??? |???? 1 |
|? 6 | zhang | 10010 |??? 76 | m??? |???? 2 |
+—-+——-+——-+——-+——+——-+
小技巧:利用-調整空字符NULL的位置
MariaDB [db1]> select * from students order by score desc;
+—-+——-+——-+——-+——+——-+
| id | name? | phone | score | sex? | class |
+—-+——-+——-+——-+——+——-+
| 70 | wang? |?????? |??? 93 | f??? |???? 2 |
|? 2 | liu?? |?????? |??? 88 | m??? |???? 1 |
|? 4 | abc?? | 11000 |??? 86 | f??? |???? 1 |
|? 3 | lin?? |?????? |??? 84 | f??? |???? 1 |
|? 6 | zhang | 10010 |??? 76 | m??? |???? 2 |
|? 7 | zz??? | 10086 |??? 69 | m??? |???? 2 |
|? 8 | zhao? | 10000 |? NULL | m??? |???? 1 |
+—-+——-+——-+——-+——+——-+
MariaDB [db1]> select * from students order by -score desc;
+—-+——-+——-+——-+——+——-+
| id | name? | phone | score | sex? | class |
+—-+——-+——-+——-+——+——-+
|? 7 | zz??? | 10086 |??? 69 | m??? |???? 2 |
|? 6 | zhang | 10010 |??? 76 | m??? |???? 2 |
|? 3 | lin?? |?????? |??? 84 | f??? |???? 1 |
|? 4 | abc?? | 11000 |??? 86 | f??? |???? 1 |
|? 2 | liu?? |?????? |??? 88 | m??? |???? 1 |
| 70 | wang? |?????? |??? 93 | f??? |???? 2 |
|? 8 | zhao? | 10000 |? NULL | m??? |???? 1 |
+—-+——-+——-+——-+——+——-+
LIMIT
MariaDB [db1]> select * from students order by score limit 3;
+—-+——-+——-+——-+——+——-+
| id | name? | phone | score | sex? | class |
+—-+——-+——-+——-+——+——-+
|? 8 | zhao? | 10000 |? NULL | m??? |???? 1 |
|? 7 | zz??? | 10086 |??? 69 | m??? |???? 2 |
|? 6 | zhang | 10010 |??? 76 | m??? |???? 2 |
+—-+——-+——-+——-+——+——-+
五、多表查詢SQJ JOIN
多表查詢中主要的 SQL JOIN 類型:
INNER JOIN:如果表中有至少一個匹配,則返回行
LEFT JOIN:即使右表中沒有匹配,也從左表返回所有的行
RIGHT JOIN:即使左表中沒有匹配,也從右表返回所有的行
FULL JOIN:只要其中一個表中存在匹配,則返回行
CROSS JOIN:用于生成兩張表的笛卡爾集
本次示例,我們將使用 HELLODB 樣本數據庫。
下面是選自 “teachers” 表的數據:
MariaDB [hellodb]> select * from teachers;
+—–+—————+—–+——–+
| TID | Name????????? | Age | Gender |
+—–+—————+—–+——–+
|?? 1 | Song Jiang??? |? 45 | M????? |
|?? 2 | Zhang Sanfeng |? 94 | M????? |
|?? 3 | Miejue Shitai |? 77 | F????? |
|?? 4 | Lin Chaoying? |? 93 | F????? |
+—–+—————+—–+——–+
以下是 “students” 表的數據
MariaDB [hellodb]> select * from students;
+——-+—————+—–+——–+———+———–+
| StuID | Name????????? | Age | Gender | ClassID | TeacherID |
+——-+—————+—–+——–+———+———–+
|???? 1 | Shi Zhongyu?? |? 22 | M????? |?????? 2 |???????? 3 |
|???? 2 | Shi Potian??? |? 22 | M????? |?????? 1 |???????? 7 |
|???? 3 | Xie Yanke???? |? 53 | M????? |?????? 2 |??????? 16 |
|?? ??4 | Ding Dian???? |? 32 | M????? |?????? 4 |???????? 4 |
|???? 5 | Yu Yutong???? |? 26 | M????? |?????? 3 |???????? 1 |
|???? 6 | Shi Qing????? |? 46 | M????? |?????? 5 |????? NULL |
|???? 7 | Xi Ren??????? |? 19 | F????? |?????? 3 |????? NULL |
|???? 8 | Lin Daiyu???? |? 17 | F????? |?????? 7 |????? NULL |
|???? 9 | Ren Yingying? |? 20 | F????? |?????? 6 |????? NULL |
|??? 10 | Yue Lingshan? |? 19 | F????? |?????? 3 |????? NULL |
|??? 11 | Yuan Chengzhi |? 23 | M????? |?????? 6 |????? NULL |
|??? 12 | Wen Qingqing? |? 19 | F????? |?????? 1 |????? NULL |
|??? 13 | Tian Boguang? |? 33 | M????? |?????? 2 |????? NULL |
|??? 14 | Lu Wushuang?? |? 17 | F????? |?????? 3 |????? NULL |
|??? 15 | Duan Yu?????? |? 19 | M????? |?????? 4 |????? NULL |
|?? ?16 | Xu Zhu??????? |? 21 | M????? |?????? 1 |????? NULL |
|??? 17 | Lin Chong???? |? 25 | M????? |?????? 4 |????? NULL |
|??? 18 | Hua Rong????? |? 23 | M????? |?????? 7 |????? NULL |
|??? 19 | Xue Baochai?? |? 18 | F????? |?????? 6 |????? NULL |
|??? 20 | Diao Chan???? |? 19 | F????? |?????? 7 |????? NULL |
|??? 21 | Huang Yueying |? 22 | F????? |?????? 6 |????? NULL |
|??? 22 | Xiao Qiao???? |? 20 | F????? |?????? 1 |????? NULL |
|??? 23 | Ma Chao?????? |? 23 | M????? |?????? 4 |????? NULL |
|??? 24 | Xu Xian?????? |? 27 | M????? |??? NULL |????? NULL |
|??? 25 | Sun Dasheng?? | 100 | M????? |??? NULL |????? NULL |
+——-+—————+—–+——–+———+———–+
內連接:INNER JOIN
效果:如果表中有至少一個匹配,則返回行
寫法一:舊寫法
MariaDB [hellodb]> select s.name,t.name from students as s,teachers as t where s.teacherid=t.tid;
+————-+—————+
| name??????? | name????????? |
+————-+—————+
| Yu Yutong?? | Song Jiang??? |
| Shi Zhongyu | Miejue Shitai |
| Ding Dian?? | Lin Chaoying? |
+————-+—————+
MariaDB [hellodb]> select s.name as 學生姓名,t.name as 講師姓名 from students as s,teachers as t where s.teacherid=t.tid;???
+————–+—————+
| 學生姓名???? | 講師姓名????? |
+————–+—————+
| Yu Yutong??? | Song Jiang??? |
| Shi Zhongyu? | Miejue Shitai |
| Ding Dian??? | Lin Chaoying? |
+————–+—————+
寫法二:SQL標準寫法,適合其他類型數據庫
MariaDB [hellodb]> select s.name as 學生姓名,t.name as 講師姓名 from students as s inner join teachers as t on s.teacherid=t.tid;
+————–+—————+
| 學生姓名???? | 講師姓名????? |
+————–+—————+
| Yu Yutong??? | Song Jiang??? |
| Shi Zhongyu? | Miejue Shitai |
| Ding Dian??? | Lin Chaoying? |
+————–+—————+
交叉連接:CROSS JOIN
效果:用于生成兩張表的笛卡爾集,笛卡爾集的列數為每個表的列數之
和,笛卡爾集的行數為每個表的行數相乘。我們經常做的多表查詢就是在笛卡
爾集中通過篩選條件得出的數據,所以笛卡爾集是多表查詢的基礎。
MariaDB [hellodb]> select * from students cross join teachers;
+——-+—————+—–+——–+———+———–+—–+—————+—–+——–+
| StuID | Name????????? | Age | Gender | ClassID | TeacherID | TID | Name????????? | Age | Gender |
+——-+—————+—–+——–+———+———–+—–+—————+—–+——–+
|???? 1 | Shi Zhongyu?? |? 22 | M????? |?????? 2 |???????? 3 |?? 1 | Song Jiang??? |? 45 | M????? |
|???? 1 | Shi Zhongyu?? |? 22 | M????? |?????? 2 |????? ???3 |?? 2 | Zhang Sanfeng |? 94 | M????? |
|???? 1 | Shi Zhongyu?? |? 22 | M????? |?????? 2 |???????? 3 |?? 3 | Miejue Shitai |? 77 | F????? |
|???? 1 | Shi Zhongyu?? |? 22 | M????? |?????? 2 |???????? 3 |?? 4 | Lin Chaoying? |? 93 | F????? |
|???? 2 | Shi Potian??? |? 22 | M????? |?????? 1 |???????? 7 |?? 1 | Song Jiang??? |? 45 | M????? |
|???? 2 | Shi Potian??? |? 22 | M????? |?????? 1 |???????? 7 |?? 2 | Zhang Sanfeng |? 94 | M????? |
|???? 2 | Shi Potian??? |? 22 | M????? |?????? 1 |???????? 7 |?? 3 | Miejue Shitai |? 77 | F????? |
|???? 2 | Shi Potian??? |? 22 | M????? |?????? 1 |???????? 7 |?? 4 | Lin Chaoying? |? 93 | F????? |
|???? 3 | Xie Yanke???? |? 53 | M????? |?????? 2 |??????? 16 |?? 1 | Song Jiang??? |? 45 | M????? |
|???? 3 | Xie Yanke???? |? 53 | M????? |?????? 2 |??????? 16 |?? 2 | Zhang Sanfeng |? 94 | M????? |
|???? 3 | Xie Yanke???? |? 53 | M????? |?????? 2 |??????? 16 |?? 3 | Miejue Shitai |? 77 | F????? |
|???? 3 | Xie Yanke???? |? 53 | M????? |?????? 2 |??????? 16 |?? 4 | Lin Chaoying? |? 93 | F????? |
|???? 4 | Ding Dian???? |? 32 | M????? |?????? 4 |???????? 4 |?? 1 | Song Jiang??? |? 45 | M????? |
|???? 4 | Ding Dian???? |? 32 | M????? |?????? 4 |???????? 4 |?? 2 | Zhang Sanfeng |? 94 | M????? |
|???? 4 | Ding Dian???? |? 32 | M?? ???|?????? 4 |???????? 4 |?? 3 | Miejue Shitai |? 77 | F????? |
|???? 4 | Ding Dian???? |? 32 | M????? |?????? 4 |???????? 4 |?? 4 | Lin Chaoying? |? 93 | F????? |
|???? 5 | Yu Yutong???? |? 26 | M????? |?????? 3 |???????? 1 |?? 1 | Song Jiang??? |? 45 | M????? |
…….
左外連接:LEFT JOIN
功能:即使右表中沒有匹配,也從左表返回所有的行
注釋:在某些數據庫中,LEFT JOIN 稱為 LEFT OUTER JOIN
MariaDB [hellodb]> select s.name as studentname,t.name as teachername from students as s left outer join teachers as t on s.teacherid=t.tid;
+—————+—————+
| studentname?? | teachername?? |
+—————+—————+
| Shi Zhongyu?? | Miejue Shitai |
| Shi Potian??? | NULL????????? |
| Xie Yanke???? | NULL????????? |
| Ding Dian???? | Lin Chaoying? |
| Yu Yutong???? | Song Jiang??? |
| Shi Qing????? | NULL????????? |
| Xi Ren??????? | NULL????????? |
| Lin Daiyu???? | NULL????????? |
| Ren Yingying? | NULL????????? |
| Yue Lingshan? | NULL????????? |
| Yuan Chengzhi | NULL????????? |
| Wen Qingqing? | NULL????????? |
| Tian Boguang? | NULL????????? |
| Lu Wushuang?? | NULL????????? |
| Duan Yu?????? | NULL????????? |
| Xu Zhu??????? | NULL????????? |
| Lin Chong???? | NULL????????? |
| Hua Rong????? | NULL????????? |
| Xue Baochai?? | NULL????????? |
| Diao Chan???? | NULL????????? |
| Huang Yueying | NULL????????? |
| Xiao Qiao???? | NULL????????? |
| Ma Chao?????? | NULL????????? |
| Xu Xian?????? | NULL????????? |
| Sun Dasheng?? | NULL????????? |
+—————+—————+
右外連接:RIGHT JOIN
效果:即使左表中沒有匹配,也從右表返回所有的行
注釋:在某些數據庫中,LEFT JOIN 稱為 RIGHT OUTER JOIN
MariaDB [hellodb]> select s.name as studentname,t.name as teachername from students as s right outer join teachers as t on s.teacherid=t.tid;???
+————-+—————+
| studentname | teachername?? |
+————-+—————+
| Shi Zhongyu | Miejue Shitai |
| Ding Dian?? | Lin Chaoying? |
| Yu Yutong?? | Song Jiang??? |
| NULL??????? | Zhang Sanfeng |
+————-+—————+
聯合查詢:union
效果:兩張表上下連起來,類似cat a b的效果
MariaDB [hellodb]> select name from students union select name from teachers;
+—————+
| name????????? |
+—————+
| Shi Zhongyu?? |
| Shi Potian??? |
| Xie Yanke???? |
| Ding Dian???? |
| Yu Yutong???? |
| Shi Qing????? |
| Xi Ren??????? |
| Lin Daiyu???? |
| Ren Yingying? |
| Yue Lingshan? |
| Yuan Chengzhi |
| Wen Qingqing? |
| Tian Boguang? |
| Lu Wushuang?? |
| Duan Yu?????? |
| Xu Zhu??????? |
| Lin Chong???? |
| Hua Rong????? |
| Xue Baochai?? |
| Diao Chan???? |
| Huang Yueying |
| Xiao Qiao???? |
| Ma Chao?????? |
| Xu Xian?????? |
| Sun Dasheng?? |
| Song Jiang??? |
| Zhang Sanfeng |
| Miejue Shitai |
| Lin Chaoying? |
+—————+
29 rows in set (0.00 sec)
自連接
功能:將一張表想象成兩張表,自己連接自己
MariaDB [hellodb]> select s1.name as emp,s2.name as leader from students as s1 inner join students as s2 on s1.teacherid=s2.stuid;??
+————-+————-+
| emp???????? | leader????? |
+————-+————-+
| Shi Zhongyu | Xie Yanke?? |
| Shi Potian? | Xi Ren????? |
| Xie Yanke?? | Xu Zhu????? |
| Ding Dian?? | Ding Dian?? |
| Yu Yutong?? | Shi Zhongyu |
+————-+————-+
左自連接
MariaDB [hellodb]> select s1.name as emp,s2.name as leader from students as s1 left outer join students as s2 on s1.teacherid=s2.stuid;????????
+—————+————-+
| emp?????????? | leader????? |
+—————+————-+
| Shi Zhongyu?? | Xie Yanke?? |
| Shi Potian??? | Xi Ren????? |
| Xie Yanke???? | Xu Zhu????? |
| Ding Dian???? | Ding Dian?? |
| Yu Yutong???? | Shi Zhongyu |
| Shi Qing????? | NULL??????? |
| Xi Ren??????? | NULL??????? |
| Lin Daiyu???? | NULL??????? |
| Ren Yingying? | NULL??????? |
| Yue Lingshan? | NULL??????? |
| Yuan Chengzhi | NULL??????? |
| Wen Qingqing? | NULL??????? |
| Tian Boguang? | NULL??????? |
| Lu Wushuang?? | NULL??????? |
| Duan Yu?????? | NULL??????? |
| Xu Zhu??????? | NULL??????? |
| Lin Chong???? | NULL??????? |
| Hua Rong????? | NULL??????? |
| Xue Baochai?? | NULL??????? |
| Diao Chan???? | NULL??????? |
| Huang Yueying | NULL??????? |
| Xiao Qiao???? | NULL??????? |
| Ma Chao?????? | NULL??????? |
| Xu Xian?????? | NULL??????? |
| Sun Dasheng?? | NULL??????? |
+—————+————-+
右自連接
MariaDB [hellodb]> select s1.name as emp,s2.name as leader from students as s1 right join students as s2 on s1.stuid=s2.teacherid;???
+————-+—————+
| emp???????? | leader??????? |
+————-+—————+
| Xie Yanke?? | Shi Zhongyu?? |
| Xi Ren????? | Shi Potian??? |
| Xu Zhu????? | Xie Yanke???? |
| Ding Dian?? | Ding Dian???? |
| Shi Zhongyu | Yu Yutong???? |
| NULL??????? | Shi Qing????? |
| NULL??????? | Xi Ren??????? |
| NULL??????? | Lin Daiyu???? |
| NULL??????? | Ren Yingying? |
| NULL??????? | Yue Lingshan? |
| NULL??????? | Yuan Chengzhi |
| NULL??????? | Wen Qingqing? |
| NULL??????? | Tian Boguang? |
| NULL??????? | Lu Wushuang?? |
| NULL??????? | Duan Yu?????? |
| NULL??????? | Xu Zhu??????? |
| NULL??????? | Lin Chong???? |
| NULL??????? | Hua Rong????? |
| NULL??????? | Xue Baochai?? |
| NULL??????? | Diao Chan???? |
| NULL??????? | Huang Yueying |
| NULL??????? | Xiao Qiao???? |
| NULL??????? | Ma Chao?????? |
| NULL??????? | Xu Xian?????? |
| NULL??????? | Sun Dasheng?? |
+————-+—————+
子查詢
下表是內連接查詢姓名和分數信息
MariaDB [hellodb]> select students.name,scores.score from students inner join scores on students.stuid=scores.id;
+—————+——-+
| name????????? | score |
+—————+——-+
| Shi Zhongyu?? |??? 77 |
| Shi Potian??? |??? 93 |
| Xie Yanke???? |??? 47 |
| Ding Dian???? |??? 97 |
| Yu Yutong???? |??? 88 |
| Shi Qing????? |??? 75 |
| Xi Ren??????? |??? 71 |
| Lin Daiyu???? |??? 89 |
| Ren Yingying? |??? 39 |
| Yue Lingshan? |??? 63 |
| Yuan Chengzhi |??? 96 |
| Wen Qingqing? |??? 86 |
| Tian Boguang? |??? 83 |
| Lu Wushuang?? |??? 57 |
| Duan Yu?????? |??? 93 |
+—————+——-+
取大于平均成績的同學和成績
MariaDB [hellodb]> select students.name,scores.score from students inner join scores on students.stuid=scores.id and score > (select avg(score) from scores);
+—————+——-+
| name????????? | score |
+—————+——-+
| Shi Zhongyu?? |??? 77 |
| Shi Potian??? |??? 93 |
| Ding Dian???? |??? 97 |
| Yu Yutong???? |??? 88 |
| Lin Daiyu???? |??? 89 |
| Yuan Chengzhi |??? 96 |
| Wen Qingqing? |??? 86 |
| Tian Boguang? |??? 83 |
| Duan Yu?????? |??? 93 |
+—————+——-+
六、視圖VIEW
視圖:VIEW,虛表,保存有實表的查詢結果
類似于shell中起個別名
視圖不存數據,修改視圖實際是修改了背后的表
物化視圖:視圖在磁盤上也占空間
示例:
MariaDB [hellodb]> create view view_students as select stuid,name from students;
MariaDB [hellodb]> select * from view_students;
+——-+—————+
| stuid | name????????? |
+——-+—————+
|???? 1 | Shi Zhongyu?? |
|???? 2 | Shi Potian??? |
|???? 3 | Xie Yanke???? |
|???? 4 | Ding Dian???? |
|???? 5 | Yu Yutong???? |
|???? 6 | Shi Qing????? |
|???? 7 | Xi Ren??????? |
|???? 8 | Lin Daiyu?? ??|
|???? 9 | Ren Yingying? |
|??? 10 | Yue Lingshan? |
|??? 11 | Yuan Chengzhi |
|??? 12 | Wen Qingqing? |
|??? 13 | Tian Boguang? |
|??? 14 | Lu Wushuang?? |
|??? 15 | Duan Yu?????? |
|??? 16 | Xu Zhu??????? |
|??? 17 | Lin Chong???? |
|??? 18 | Hua Rong????? |
|??? 19 | Xue Baochai?? |
|??? 20 | Diao Chan???? |
|??? 21 | Huang Yueying |
|??? 22 | Xiao Qiao???? |
|??? 23 | Ma Chao?????? |
|??? 24 | Xu Xian?????? |
|??? 25 | Sun Dasheng?? |
+——-+—————+
25 rows in set (0.00 sec)
判斷一個表是否為視圖:Comment狀態
MariaDB [hellodb]> show tables;
+——————-+
| Tables_in_hellodb |
+——————-+
| classes?????????? |
| coc?????????????? |
| courses?????????? |
| scores??????????? |
| students????????? |
| teachers????????? |
| toc?????????????? |
| view_students???? |
+——————-+
MariaDB [hellodb]> show table status like ‘view_students’\G;?
*************************** 1. row ***************************
Name: view_students
Engine: NULL
Version: NULL
Row_format: NULL
Rows: NULL
Avg_row_length: NULL
Data_length: NULL
Max_data_length: NULL
Index_length: NULL
Data_free: NULL
Auto_increment: NULL
Create_time: NULL
Update_time: NULL
Check_time: NULL
Collation: NULL
Checksum: NULL
Create_options: NULL
??????? Comment: VIEW
MariaDB [hellodb]> show table status like ‘students’\G;????
*************************** 1. row ***************************
Name: students
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 25
Avg_row_length: 655
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 9437184
Auto_increment: 26
Create_time: 2018-06-06 21:25:56
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
刪除視圖
MariaDB [hellodb]> show tables;
+——————-+
| Tables_in_hellodb |
+——————-+
| classes?????????? |
| coc?????????????? |
| courses?????????? |
| scores??????????? |
| students????????? |
| teachers????????? |
| toc?????????????? |
| view_goodstudent? |
| view_students???? |
+——————-+
MariaDB [hellodb]> drop view view_goodstudent;
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/100561