SQL語句基礎指令語法
顯示命令
顯示當前數據庫服務器中的數據庫列表
mysql> SHOW DATABASES;
顯示數據庫中的數據表
mysql> USE 數據庫名 #切換數據庫
mysql> SHOW TABLES;
顯示數據表的結構
mysql> DESCRIBE 表名;
mysql> DESC 表名;
查看支持的字符集
mysql> SHOW CHARACTER SET;
查看支持的排序規則
mysql> SHOW COLLATION;
查看支持的引擎
mysql> SHOW ENGINES\G; #\G以行的形式顯示
查看錶中的索引
mysql> SHOW INDEXES FROM 表名\G;
查看錶狀態
mysql> SHOW TABLE STATUS LIKE '表名'\G;
DDL語句
DDL:數據的定義語言(Data Defination Language)
CREATE
創建用戶
mysql> CREATE USER root@'172.18.%.%' IDENTIFIED BY 'password';
創建數據庫
mysql> CREATE DATABASE 數據庫名1;
mysql> CREATE SCHEMA 數據庫名2;
mysql> CREATE DATABASE IF NOT EXISTS 數據庫名3;
創建一個同表1相同的表2
mysql> CREATE TABLE 表2 SELECT * FROM 表1;
創建表
mysql> CREATE TABLE 表名 (id tinyint unsigned PRIMARY KEY,name varchar(20) NOT NULL, age tinyint UNSIGNED, sex char(1) DEFAULT "m" );
創建帶有複合主鍵的表
mysql> CREATE TABLE 表名 (id int unsigned NOT NULL, name varchar (20) NOT NULL, age tinyint unsigned, sex char(1) DEFAULT "m", PRIMARY KEY(id,name));
創建索引
mysql> CREATE INDEX 索引名 ON 表名(索引字段);
DROP
刪除用戶
mysql> DROP USER root@'172.18.%.%;
刪除數據庫
mysql> DROP DATABASE 數據庫名;
mysql> DROP SCHEMA 數據庫名;
mysql> DROP DATABASE IF EXISTS 數據庫名;
刪除表
mysql> DROP TABLES 表名;
刪除索引
mysql> DROP INDEX 索引名 ON 表名;
ALTER
修改表名
mysql> ALTER TABLE 舊錶名 RENAME 新表名;
表中插入字段
mysql> ALTER TABLE 表名 ADD 字段名 char(11) AFTER 插入位置的前一個字段名;
修改字段數據類型
mysql> ALTER TABLE 表名 MODIFY 字段名 新數據類型;
修改字段名稱
mysql> ALTER TABLE 表名 CHANGE COLUMN 舊字段 新字段 char(11);
添加唯一鍵
mysql> ALTER TABLE 表名 ADD UNIQUE KEY(字段名);
添加指定枚舉值的字段
mysql> ALTER TABLE 表名 ADD 字段名 ENUM('值1','值2');
添加索引
mysql> ALTER TABLE 表名 ADD INDEX(字段名);
刪除字段
mysql> ALTER TABLE 表名 DROP COLUMN 字段名;
DML語句
DML:數據的處理語言(Data Manipulation Language )
INSERT
賦值表中全部字段
mysql> INSERT INTO 表名 (字段1,字段2,字段3,字段4)VALUES(值1,'值2',值3,'值4');
賦值表中指定字段
mysql> INSERT INTO 表名 (字段1,字段2)VALUES(值1,'值2');
省略字段名稱賦值
mysql> INSERT INTO 表名 VALUES (值1,'值2',值3,'值4');
同時爲多條記錄賦值
mysql> INSERT INTO 表名 VALUES (值1,'值2',值3,'值4'),(值1,'值2',值3,'值4');
向表2中追加表1字段的值,前提表2已經存在,且與表1表結構相同
mysql> INSERT INTO 表2 SELECT * FROM 表1;
DELETE
清空表的內容
mysql> TRUNCATE TABLE 表名; #速度快,但不記錄日誌
mysql> DELETE FROM 表名; #速度稍慢,但會記錄日誌
刪除記錄
mysql> DELETE FROM 表名 WHERE id=4;
UPDATE
注意:更改時不要忘記敲WHERE子句,不然會改掉全部記錄對應字段的值
更改指定記錄某字段的值
mysql> UPDATE 表名 SET age=21 WHERE name='li';
同時更改一條記錄多個字段的值
mysql> UPDATE 表名 SET age=19,sex='m' WHERE id=5;
DCL語句
DCL:數據授權語言(Data Control Language)
GRANT
授權用戶指定權限
mysql> GRANT SELECT,INSERT ON 數據庫名.表名 TO root@'172.18.%.%';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO user@'localhost';
授權用戶全部權限
mysql> GRANT ALL ON 數據庫名.* TO root@'172.18.%.%';
授權並創建用戶
mysql> GRANT ALL ON *.* TO wang@'172.18.%.%' IDENTIFIED BY "password";
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO user@localhost IDENTIFIED BY ""; #設置空口令
REVOKE
取消指定授權
mysql> REVOKE SELECT,INSERT ON 數據庫名.* FROM root@'172.18.%.%';
取消授權
mysql> REVOKE ALL ON 數據庫名.* FROM root@'172.18.%.%';
DQL語句
DQL:數據查詢語言(Data Query Language)
SELECT
查詢數據庫名
mysql> SELECT DATABASE();
查詢當前數據庫版本
mysql> SELECT VERSION();
查看當前登錄的用戶
mysql> SELECT USER();
查詢表中全部字段
mysql> SELECT * FROM 表名;
查詢表中指定字段
mysql> SELECT 字段1,字段2,字段3 FROM 表名;
爲搜索字段添加別名
mysql> SELECT id AS 員工編號,name AS 姓名 FROM 表名;
爲表名添加別名
mysql> SELECT 字段1,字段2 FROM 表名 AS 表別名;
查尋指定區間內的字段
mysql> SELECT * FROM 表名 WHERE 字段 >=18 and 字段 <=20;
mysql> SELECT * FROM 表名 WHERE 字段 BETWEEN 18 字段 20;
對查詢的指定字段進行排序
mysql> SELECT * FROM 表名 WHERE 字段1 BETWEEN 16 字段1 22 ORDER BY 字段1;
mysql> SELECT * FROM 表名 WHERE 字段1 BETWEEN 16 字段1 22 ORDER BY 字段1 DESC; #倒序排
跳過一個顯示兩個
mysql> SELECT * FROM 表名 WHERE 字段1 BETWEEN 16 字段1 22 ORDER BY 字段1 LIMIT 1,2;
通配符的模糊查詢
mysql> SELECT * FROM 表名 WHERE name LIKE "l%" ;
正則表達式的模糊查詢
mysql> SELECT * FROM 表名 WHERE name RLIKE "l.*" ;
mysql> SELECT * FROM 表名 WHERE name RLIKE "^l.$" ;
查詢空值
mysql> SELECT * FROM 表名 WHERE age IS NULL;
查詢非空值
mysql> SELECT * FROM 表名 WHERE age IS NOT NULL;
查詢某字段的特定值
mysql> SELECT * FROM 表名 WHERE 字段名 IN ('值1','值2');
多表查詢
mysql> SELECT s.id,e.name FROM 表名1 AS s,表名2 AS e WHERE s.id=e.id;
mysql> SELECT s.id,e.name FROM 表名1 AS s,表名2 AS e WHERE s.id=e.id and s.name RLIKE '.*[no].*';