Mysql數據庫常用操作語句大全

[TOC]

一.用戶管理:

1.新建用戶:

CREATE USER name IDENTIFIED BY 'ssapdrow';

2.更改密碼:

SET PASSWORD FOR name=PASSWORD('fdddfd');

3.權限管理

SHOW GRANTS FOR name; //查看name用戶權限

GRANT SELECT ON db_name.* TO name; //給name用戶db_name數據庫的所有權限

REVOKE SELECT ON db_name.* TO name; //GRANT的反操作,去除權限;

二.數據庫操作:

1.查看數據庫:

SHOW DATABASES;

2.創建數據庫:

CREATE DATABASE db_name;  //db_name爲數據庫名

3.使用數據庫:

USE db_name;

4.刪除數據庫:

DROP DATABASE db_name;

三.創建表:

1.創建表:

 

CREATE TABLE table_name(

id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,    //id值,無符號、非空、遞增——唯一性,可做主鍵。

name VARCHAR(60) NOT NULL

score TINYINT UNSIGNED NOT NULL DEFAULT 0,    //設置默認列值

PRIMARY KEY(id)

)ENGINE=InnoDB    //設置表的存儲引擎,一般常用InnoDB和MyISAM;InnoDB可靠,支持事務;MyISAM高效不支持全文檢索

DEFAULT charset=utf8;  //設置默認的編碼,防止數據庫中文亂碼

    如果有條件的創建數據表還可以使用   >CREATE TABLE IF NOT EXISTS tb_name(........

2.複製表:

CREATE TABLE tb_name2 SELECT * FROM tb_name;

或者部分複製:

CREATE TABLE tb_name2 SELECT id,name FROM tb_name;

3.創建臨時表:

CREATE TEMPORARY TABLE tb_name(這裏和創建普通表一樣);

4.查看數據庫中可用的表:

SHOW TABLES;

5.查看錶的結構:

DESCRIBE tb_name;

也可以使用:

SHOW COLUMNS in tb_name;    //from也可以

6.刪除表:

DROP [ TEMPORARY ] TABLE [ IF EXISTS ] tb_name[ ,tb_name2.......];

實例:

DROP TABLE IF EXISTS tb_name;

7.表重命名:

RENAME TABLE name_old TO name_new;

還可以使用:

ALTER TABLE name_old RENAME name_new;

四、修改表:

1.更改表結構:

ALTER TABLE tb_name ADD[CHANGE,RENAME,DROP] ...要更改的內容...

實例:

ALTER TABLE tb_name ADD COLUMN address varchar(80) NOT NULL;

ALTER TABLE tb_name DROP address;

ALTER TABLE tb_name CHANGE score score SMALLINT(4) NOT NULL;

五、插入數據:

1.插入數據:

INSERT INTO tb_name(id,name,score)VALUES(NULL,'張三',140),(NULL,'張四',178),(NULL,'張五',134);

這裏的插入多條數據直接在後邊加上逗號,直接寫入插入的數據即可;主鍵id是自增的列,可以不用寫。

2.插入檢索出來的數據:

INSERT INTO tb_name(name,score) SELECT name,score FROM tb_name2;

六.更新數據:

1.指定更新數據:

UPDATE tb_name SET score=189 WHERE id=2;

UPDATE tablename SET columnName=NewValue [ WHERE condition ]

七.刪除數據:

1.刪除數據:

DELETE FROM tb_name WHERE id=3;

八.條件控制:

1.WHERE 語句:

SELECT * FROM tb_name WHERE id=3;

2.HAVING 語句:

SELECT * FROM tb_name GROUP BY score HAVING count(*)>2

3.相關條件控制符:

=、>、<、<>、IN(1,2,3......)、BETWEEN a AND b、NOT

AND 、OR

Linke()用法中 % 爲匹配任意、 _ 匹配一個字符(可以是漢字)

IS NULL 空值檢測

九.MySQL的正則表達式:

1.Mysql支持REGEXP的正則表達式:

SELECT * FROM tb_name WHERE name REGEXP '^[A-D]' //找出以A-D 爲開頭的name

2.特殊字符需要轉義。

十.MySQL的一些函數:

1.字符串鏈接——CONCAT()

SELECT CONCAT(name,'=>',score) FROM tb_name

2.數學函數:

AVG、SUM、MAX、MIN、COUNT;

3.文本處理函數:

TRIM、LOCATE、UPPER、LOWER、SUBSTRING

4.運算符:

+、-、*、\

5.時間函數:

DATE()、CURTIME()、DAY()、YEAR()、NOW().....

十一.分組查詢:

1.分組查詢可以按照指定的列進行分組:

SELECT COUNT(*) FROM tb_name GROUP BY score HAVING COUNT(*)>1;

2.條件使用Having;

3.ORDER BY 排序:

ORDER BY DESC|ASC    =>按數據的降序和升序排列

十二.UNION規則——可以執行兩個語句(可以去除重複行)

十三.全文檢索——MATCH和AGAINST

1.SELECT MATCH(note_text)AGAINST('PICASO') FROM tb_name;

2.InnoDB引擎不支持全文檢索,MyISAM可以;

十四.視圖

1.創建視圖

CREATE VIEW name AS SELECT * FROM tb_name WHERE ~~ ORDER BY ~~;

2.視圖的特殊作用:

  • a、簡化表之間的聯結(把聯結寫在select中);

  • b、重新格式化輸出檢索的數據(TRIM,CONCAT等函數);

  • c、過濾不想要的數據(select部分)

  • d、使用視圖計算字段值,如彙總這樣的值。

十五、使用存儲過程:

個人理解,存儲過程就是一個自定義函數,有局部變量參數,可傳入參數,可以返回值,不過這語法夠呆滯的~~~

1.創建存儲過程:

 

CREATE PROCEDURE pro(IN num INT,OUT total INT)BEGIN

SELECT SUM(score) INTO total FROM tb_name WHERE id=num;

END;

這裏的 IN (傳遞一個值給存儲過程),OUT(從存儲過程傳出一個值),INOUT(對存儲過程傳入、傳出),INTO(保存變量)

2.調用存儲過程:

CALL pro(13,@total) //這裏的存儲過程兩個變量,一個是IN一個是OUT,這裏的OUT也是需要寫上的,不寫會出錯

SELECT @total //這裏就可以看到結果了;

3.存儲過程的其他操作:

SHOW PROCEDURE STATUS; //顯示當期的存儲過程

DROP PROCEDURE pro; //刪除指定存儲過程

十六.使用遊標:

對這個理解不是很懂,朋友多多指點哦~~~

1.遊標的操作

 

CREATE PROCEDURE pro()

BEGIN 

DECLARE ordername CURSOR FOR

SELECT order_num FROM orders;

END;

OPEN ordername;    //打開遊標

CLOSE ordername;    //關閉遊標

十七.觸發器:

觸發器是指在進行某項指定操作時,觸發觸發器內指定的操作;

1.支持觸發器的語句有DELETE、INSERT、UPDATE,其他均不支持

2.創建觸發器:

CREATE TRIGGER trig AFTER INSERT ON ORDERS FOR EACH ROW SELECT NEW.orser_name;

INSERT語句,觸發語句,返回一個值

3.刪除觸發器

DROP TRIGGER trig;

十八.語法整理:

1.ALTER TABLE(修改表)

 

ALTER TABLE table_name

    (ADD column datatype  [ NULL | NOT NULL ] [ CONSTRAINTS ]

CHANGE column  datatype  COLUMNS [ NULL | NOT NULL ]   [ CONSTRAINTS ]

DROP column,

。。。。
)

2.COMMIT(處理事務)

COMMIT;

3.CREATE INDEX(在一個或多個列上創建索引)

CREATE INDEX index_name ON tb_name (column [ ASC | DESC ] , .......);

4.CREATE PROCEDURE (創建存儲過程)

`CREATE PROCEDURE pro([ parameters ])

BEGIN

........

END

 

### 5.CREATE TABLE(創建表)

CREATE TABLE tb_name(

column_name  datetype  [ NULL | NOT NULL ]   [ condtraints] ,

column_name  datetype  [ NULL | NOT NULL ]   [ condtraints] ,

.......

PRIMARY KEY( column_name )

)ENGINE=[ InnoDB | MyiSAM ]DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

 

### 6.CREATE USER(創建用戶)

`CREATE USER user_name [ @hostname ] [ IDENTIFIED BY [ PASSWORD ] 'pass_word' ];`

### 7.CREATE VIEW (在一個或多個表上創建視圖)

`CREATE [ OR REPLACE ] VIEW view_name AS SELECT。。。`

### 8.DELETE (從表中刪除一行或多行)

`DELETE FROM table_name [WHERE ......]`

### 9.DROP(永久刪除數據庫及對象,如視圖、索引等)

`DROP DATEBASE | INDEX | PROCEDURE | TABLE | TRIGGER | USER | VIEW  name`

### 10.INSERT (給表添加行)

`INSERT INTO tb_name [ ( columns,...... ) ]  VALUES(value1,............);`

使用SELECT值插入:

INSERT INTO tb_name [ ( columns,...... ) ]

SELECT columns , ....... FROM tb_name [ WHERE ...... ] ;

 


### 11.ROLLBACK(撤銷一個事務處理塊)

`ROLLBACK [  TO  savapointname  ];`

### 12.SAVEPOINT(爲ROLLBACK設置保留點)

`SAVEPOINT sp1;`

### 13.SELECT (檢索數據,顯示信息)

`SELECT column_name,.....FROM tb_name  [ WHERE ]   [ UNION ]    [ RROUP BY ]   [ HAVING ]   [ ORDER BY ]`

### 14.START TRANSACTION (一個新的事務處理塊的開始)

START TRANSACTION

### 15.UPDATE(更新一個表中的一行或多行)

`UPDATE tb_name SET column=value,......[ where ]`



作者:yhxt
鏈接:https://www.jianshu.com/p/70a27f184b87
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章