——登陸方式
mysql -uroot -p*
—數據庫術語
DQL DML DDL DCL TCL
–終止命令
\c
–查看版本
mysql --version
SELECT VERSION() ;
–查看當前庫
SELECT DATABASE() ;
–跨庫查表
SHOW TABLES FROM * ;
–查看建表語句
SHOW CREATE TABLE * ;
–單行函數
UPPER() LOWER() TRIM() SUBSTR(str,start,length) LENGTH()
STR_TO_DATE() DATE_FORMAT() ROUND() RAND() IFNULL()
TO_DAYS() ;
–日期格式正則
%Y-%m-%d %H:%i:%s
–MySQL數據類型
VARCHAR
CHAR
INT
BIGINT
FLOAT
DOUBLE
DATE
BLOB
CLOB
其它
–MySQL建表規範
表名:t_*
VARCHAR的長度最好是2的倍數,方便存儲中文
–編碼查看
SHOW VARIABLES LIKE '%char%' ;
–獲取系統當前時間:插入數據時可以設置系統默認時間
SELECT NOW() ;
–MySQL級聯操作
ON DELETE CASCADE
ON UPDATE CASCADE
–對於取得最大值,不使用分組統計函數的情況下可以結合ORDER BY子句和LIMIT子句完成*
–MySQL存儲引擎
SHOW ENGINES\G
*MyISAM
少量的更新大量的讀取,支持壓縮
** InnoDB
缺省值,支持事務、級聯操作
***MEMORY
速度最快,但無法持久化
–MySQL事務
*ACID原則:原子性、一致性、隔離性、持久性
**MySQL默認支持自動提交
* START TRANSACTION ; SET AUTOCOMMIT = OFF
**配置隔離級別:1.修改配置文件
-----------------------my.ini↓-----------------------------
[mysqld]
transaction-isolation=READ-COMMITTED
-----------------------my.ini↑-----------------------------
---------------------可選參數↓-------------------------------
#READ-UNCOMMITTED
#READ-COMMITTED
#REPEATABLE-READ
#SERIALIZABLE
---------------------可選參數上-------------------------------
2.命令行設置
-------------------------查看參數---------------------------------
mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
mysql> SHOW VARIABLES LIKE '%iso%' ;
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tx_isolation | REPEATABLE-READ |
+---------------+-----------------+
-------------------------修改參數---------------------------------
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED ;
---------------------可選參數↓-------------------------------
#READ UNCOMMITTED
#READ COMMITTED
#REPEATABLE READ
#SERIALIZABLE
---------------------可選參數↑-------------------------------
—MySQL索引
*創建索引 CREATE (UNIQUE) INDEX * ON *(*) ;
**刪除索引 DROP INDEX * ON * ;
*什麼情況下使用索引:
1.該字段很少被更新 ;
2.經常出現在WHERE子句中 ;
**案例:
mysql> SELECT * FROM emp WHERE ename LIKE '%S%' ;
+-------+-------+---------+------+------------+------+------+--------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
+-------+-------+---------+------+------------+------+------+--------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800 | NULL | 20 |
| 7566 | JONES | MANAGER | 7839 | 1981-02-04 | 2975 | NULL | 20 |
| 7788 | SCOTT | ANALYST | 7566 | 1981-03-13 | 3000 | NULL | 20 |
| 7876 | ADAMS | CLERK | 7788 | 1987-03-13 | 1100 | NULL | 20 |
| 7900 | JAMES | CLERK | 7698 | 1981-03-12 | 950 | NULL | 30 |
+-------+-------+---------+------+------------+------+------+--------+
5 rows in set (0.05 sec)
mysql> CREATE INDEX emp_ename_indx ON emp(ename) ;
Query OK, 14 rows affected (0.05 sec)
Records: 14 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM emp WHERE ename LIKE '%S%' ;
+-------+-------+---------+------+------------+------+------+--------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
+-------+-------+---------+------+------------+------+------+--------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800 | NULL | 20 |
| 7566 | JONES | MANAGER | 7839 | 1981-02-04 | 2975 | NULL | 20 |
| 7788 | SCOTT | ANALYST | 7566 | 1981-03-13 | 3000 | NULL | 20 |
| 7876 | ADAMS | CLERK | 7788 | 1987-03-13 | 1100 | NULL | 20 |
| 7900 | JAMES | CLERK | 7698 | 1981-03-12 | 950 | NULL | 30 |
+-------+-------+---------+------+------------+------+------+--------+
5 rows in set (0.00 sec)
–導入導出命令
導出:mysqldump * > * -uroot -pmysqladmin
導入:source *
–數據庫設計三範式
*第一範式:主鍵 ; 字段不可分 ;
**第二範式:第一範式 ; 多對多 ;
***第三範式:第一範式 ;一對多 ;