MySQL常用命令(一)

1. 常用的顯示命令

查看數據集: show character set;
查看排序規則:show collation;
查看已用的數據庫:show databases;
查看錶的結構:desc tb_name;
顯示錶的描述信息:show table status like ‘tb1’; 或者 show table status like ‘tb1’\G(以列的形式顯示)
顯示錶的索引: show indexes from tb1;或者show indexes from tb1\G(以列的形式顯示)
顯示錶的創建語句:show CREATE TABLE tb_name;

2 DDL (Database Definition Language)

2.1 創建數據庫(help create database;)

格式:create DATABASE|SCHEMA IF NOT EXISTS nuist CHARACTER SET ‘gbk’ COLLATE ‘gbk_chinese_ci’;
創建數據庫的本質就是在對應的Data目錄下創建一個nuist目錄,nuist目錄下有一個db.opt的文件保存的就是指定的字符集和排序規則,內容如下:

default-character-set=gbk
default-collation=gbk_chinese_ci

2.2 修改數據庫(修改字符集或者排序規則)(Help alter database;)

mysql> help alter database;
Name: 'ALTER DATABASE'
Description:
Syntax:
ALTER {DATABASE | SCHEMA} [db_name] alter_specification ...
ALTER {DATABASE | SCHEMA} db_name UPGRADE DATA DIRECTORY NAME
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name| [DEFAULT] COLLATE [=] collation_name

ALTER DATABASE enables you to change the overall characteristics of a database. These characteristics are stored in the db.opt file in the database directory. To use ALTER DATABASE, you need the ALTER privilege on the database. ALTER SCHEMA is a synonym for ALTER DATABASE.

2.3 刪除數據庫(help drop database;)

2.4 創建表

2.4.1 直接定義一張空表

create table tb1(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,name char(20) not null,age TINYINT not null);
create table tb1(id INT UNSIGNED NOT NULL AUTO_INCREMENT ,name char(20) not null,age TINYINT not null, primary key(id),unique key(name),index(age));

唯一鍵、主鍵、索引的區別?鍵也稱作約束,可用作索引,是特殊的索引(有特殊限定),都是B+Tree結構的形式,可以使用create index命令單獨創建索引。

2.4.2 從其他表中查詢數據,並以之創建新表

create table other_agents select * from agents where AgentNo > 100; //注意:這種方式創建表,不會繼承之前表的屬性。
這裏寫圖片描述

2.4.3 以其他表爲模板創建一張新表

create table other_agents2 like agents; //注意:表格式的屬性完全和之前的一樣
這裏寫圖片描述
顯示錶的描述信息:show table status like ‘tb1’; 或者 show table status like ‘tb1’\G
顯示錶的索引: show indexes from tb1;或者show indexes from tb1\G
顯示錶結構: desc other_agents;

2.4.4 指定索引

① 單字段: PRIMARY KEY,UNIQUE KEY
② 單或多字段:PRIMARY KEY(col, …),UNIQUE KEY(col,…),INDEX(col,…)

2.5 修改表 (help alter table ;)

2.6 刪除表 (help drop table;)

2.7 索引 (help drop table;)

索引只能不創建、查看和刪除,不能被修改

  • 創建索引:(help create index;)create index index_name on tb_name(col_name,…);
  • 查看索引:show indexes from tb_name;
  • 刪除索引:(help drop index;),DROP INDEX index_name ON tbl_name

3. DML(Database Manipulation Language)

3.1 Select

mysql> help select;
Name: 'SELECT'
Description:
Syntax:
SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    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}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
      | INTO DUMPFILE 'file_name'
      | INTO var_name [, var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]

3.1.1 簡單查詢語句

select field1,field2,field3 fromt tb_name;  //投影
select * from tb_name where conditions;     //選擇

from子句:表示要查詢的關係, 表、多個表、其他SELECT語句
where子句:布爾表達式,=,>,>=,<,<=,<>,!=,<=>
邏輯關係:AND,OR,NOT
特殊操作符

  • between … and …, like (其中,%表示任意長度,任意字符;_表示任意單個字符)
  • rlike,regexp,支持正則化比較;RLIKE ‘^[m,n,y].*$’,注意此時索引就失效了。
  • in,作離散取值;
  • is null,is not null:和null做比較;
  • 操作符
  • oder by [ASC|DESC],將查詢後的結果進行排序
  • as 字段別名
  • limit 顯示有限的行,limit NUMBER表示顯示前NUMBER個;limit NUM1, NUM2,表示從NUM1開始取NUM2個。

聚合函數: AVG()、 MAX()、MIN()、SUM()、COUNT()
GROUP BY: 根據條件進行分組
Having qualification: 要Group by結合使用,用於對Group by的結果進行過濾。
SQL執行順序

3.1.2 多表查詢

連接方式:

  • 交叉連接,笛卡爾乘積
  • 自然連接(內連接),僅僅保留具有等值關係的行。
  • 外連接之左連接:tb_name1 left jion tb_name2 on conditions
  • 外連接之右連接: tb_name1 right jion tb_name2 on conditions
  • 自連接

3.1.3 子查詢

  • 在比較操作中使用子查詢:子查詢的結果一定要是一個單值,否則會出錯;
  • 在in中使用子查詢:子查詢的結果可以是一個集合;
  • 在from中使用子查詢;
  • 聯合查詢:union;

3.1.4 視圖

視圖
視圖就是存儲下來的Select語句,基於基表的查詢結果。一般不建議直接向視圖中插入或者更新數據,視圖一般稱之爲虛表。

創建視圖: (help create view;)
刪除視圖: (help drop view;)
注意:MySQL不支持物化視圖,也不建議在MySQL中使用視圖;

3.2 Delete

mysql> help delete
Name: 'DELETE'
Description:
Syntax:
Single-table syntax:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

清空表:truncate tb_name,能夠清空表,並重置Autoincrement計數器。

3.3 Insert into

insert into tb_name (col1,col2,…) values(val1,val2,…),[,(val1,val2,…),…]
在有些場景下,批量插入可以提高性能;
注意插入的格式:字符型的值需要用單引號引起來,數值型不需要引號,日期時間型也不需要引號,空值要寫成null,”。
查看插入幫助:help insert

mysql> help insert
Name: 'INSERT'
Description:
Syntax:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

Or:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    SET col_name={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

Or:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

3.4 UPDATE

mysql> help update
Name: 'UPDATE'
Description:
Syntax:
Single-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章