MySQL之SQL語法介紹

結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統;同時也是數據庫腳本文件的擴展名

本節索引:

一、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集合

 

charvarchar

1.char(n) 若存入字符數小于n,則以空格補于其后,查詢之時再將空格去掉。

所以char類型存儲的字符串末尾不能有空格,varchar不限于此。

2.char(n) 固定長度,char(4)不管是存入幾個字符,都將占用4個字節,varchar

是存入的實際字符數+1個字節(n< n>255),所以varchar(4),存入3個字符將

占用4個字節。

3.char類型的字符串檢索速度要比varchar類型的快

 

varchartext

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

(1)
wangxczwangxcz
上一篇 2018-06-07
下一篇 2018-06-07

相關推薦

欧美性久久久久