2016年12月6日 星期二

MySQL 指令

MySQL指令大全 :

基本指令 :

資料定義語言 ( DDL is Data Definition Language statements) :使用者角度

建立資料庫或資料表 :   create
更變資料庫或資料結構 :   alter
刪除資料庫或資料表 :   drop

資料操作語言 ( DML  is Data Manipulation Language statements) : 建設者角度,

查詢資料 : SELECT column_name(s) FROM table_name
select 查詢
  (1) 條件查詢where
    a. 條件表達式的意義,表達式為真,則該行取出
b. 比較運算符= ,!=,< > <= >=
    c. like , not like ('%'匹配任意多個字符,'_'匹配任意單個字符)in , not in , between and
    d. is null , is not null
  (2) 分組group by, 一般要配合5個聚合函數使用:max,min,sum,avg,count
  (3) 篩選having
  (4) 排序order by
  (5) 限制limit
插入指定資料 : INSERT INTO table_name (column1,column2)VALUES (value1,value2);
插入多筆資料 : INSERT INTO table_name (column1,column2)VALUES (value1,value2),(value1,value2),(value1,value2)....;
插入所有資料 : INSERT INTO table_name VALUES (value1,value2);
更新資料 :  UPDATE table_name SET column1=value, ...WHERE some_column=some_value
刪除資料 :  DELETE FROM table_name WHERE some_column = some_value

資料控制語言 ( DCL is Data Control Language statements) :管理員角度
確定資料的更變 :   commit
設定使用者對資料的操作權限 :   grant
取消使用者操作資料的權限 :   revoke
取消資料更變 :   rollback

實用指令 :

  • 顯示所有資料庫 :   show databases;
  • 選擇某一資料庫 :   use 資料庫名稱;
  • 列出資料庫底下的資料表 : show table from 資料庫名稱;
  • 顯示目前正在使用的資料表 :   show tables;
  • 顯示資料表欄位設定 :   describe 資料表名稱;
  • 重新整理資料表 :   optimize table 資料表名稱;
  • 顯示某個資料表的欄位設定 :   show columns from 資料表名稱;
  • 顯示某個資料表的索引欄位設定 :   show index from 資料表名稱;

顯示 :

  • 顯示所有資料庫 :   show databases;
  • 顯示資料庫底下的資料表 : show table from 資料庫名稱;
  • 顯示資料表的欄位 :   show columns from 資料表名稱;
  • 顯示資料庫版本:select version();
  • 顯示目前正在使用的資料表 :   show tables;
  • 顯示資料表欄位設定 :   describe 資料表名稱;
  • 顯示某個資料表的索引欄位設定 :   show index from 資料表名稱;
  • 顯示charset變數:show variables like 'character_set%'; 或 使用 status;

新增 :

  • 新增資料庫 : create database 資料庫名稱;
  • 新增資料表 : create table 資料表名稱 ( 欄位名稱1 資料型態,欄位名稱2 資料型態 );
  • 新增欄位 : alter table 資料表名稱 add 欄位名稱 資料型態;
  • 新增主鍵:alter table 資料表名稱 add primary  primary key(欄位名稱);
  • 新增索引:alter table 資料表名稱 add [unique|fulltext] index 索引名(列名);
例如:
CREATE TABLE `repairsystem`.`account` (
id mediumint(8) unsigned primary key auto_increment,
account varchar(255) not null default '',
password varchar(255) not null default ''
) ENGINE = MyISAM charset=utf8;

修改 :

  • 修改資料表名稱 : alter table 舊資料表名稱 rename 新資料表名稱;
  • 更改欄位資料型別:alter table table_name  alter coluumn column_name datatype;
  • 更改欄位欄位名稱:alter table table_name change 舊欄位名稱 新欄位名稱 資料型態;

刪除 :

  • 刪除資料庫 : drop database 資料庫名稱;
  • 刪除資料表 : drop table 資料表名稱;
  • 刪除欄位 : alter table 資料表名稱   drop  欄位名稱;
  • 刪除主鍵:alter table 資料表名稱  drop  primary key;
  • 刪除索引:alter table 資料表名稱  drop index 索引名;
  • 清空資料表資料:truncate 資料表名稱;

其他 :

  • 重新整理資料表: optimize table tbl_name
  • 連接查詢
  1. 左連接  left join  on table A left join table B on tableA.col1 = tableB.col2 ; 
  2. 右鏈接: right join  on table A left join table B on tableA.col1 = tableB.col2 ; 
  3. 內連接: inner join  on table A left join table B on tableA.col1 = tableB.col2; 
  4. 左右連接都是以在左邊的表的數據為準,沿著左表查右表.
  5. 內連接是以兩張表都有的共同部分數據為準,也就是左右連接的數據之交集.
例句:
select * from table A left join table B on tableA.col1=ableB.col2 
  • 子查詢
  •   where 型子查詢:內層sql的返回值在where後作為條件表達式的一部分
  例句: select * from tableA where colA = (select colB from tableB where ...);
  •     from 型子查詢:內層sql查詢結果,作為一張表,供外層的sql語句再次查詢
  例句:select * from (select * from ...) as tableName where ....
  •  索引作用:
  •  提高查詢速度,但是降低了增刪改的速度,所以使用索引時,要綜合考慮.
  •  索引不是越多越好,一般我們在常出現於條件表達式中的列加索引.
  •  值越分散的列,索引的效果越好
  •  索引類型
  •  primary key主鍵索引
  •  index 普通索引
  •  unique index 唯一性索引
  •  fulltext index 全文索引 

注意事項:

  • 當欄位有設定自增屬性,在新增資料未指定對應時,其值必須指定,不然會報錯,訣竅列與值,嚴可對應。
資料來源

沒有留言: