# mysql -u root -p -h localhost # 回車會讓輸入密碼,mysql默認(rèn)root的密碼為空 客戶端和服務(wù)器在同一臺機(jī)器上的連接方式:
Linux: socket
Windows: memory
Mysql客戶端與服務(wù)器交互方式:
1、交互式模式
2、批處理模式:執(zhí)行mysql腳本
交互式模式中的命令類別:
2. 1、客戶端命令
2. 2、 服務(wù)器端命令:都必須使用語句結(jié)束符,默認(rèn)為分號;
數(shù)據(jù)庫數(shù)據(jù)類型:
1、字符型:
CHAR(n):固定長度n,最大256字符
VARCHAR(n):小于等于n的可變長度,最大65536個字符
BINARY(n):區(qū)分大小寫的固定長度
VARBINARY(n):區(qū)分大小寫的可變長度
TEXT(n):文本格式大對象,批量數(shù)據(jù)
BLOB(n):二進(jìn)制格式大對象
2、數(shù)值型:
2.1、整型:
TINYINT:1個字節(jié)的范圍,即8位(范圍在-128到128之間)
SMALLINT:2個字節(jié)
MEDIUMINT:3個字節(jié)
INT:4個字節(jié)
BIGINT:5個字節(jié)
2.2、浮點型:
FLOAT
DOUBLE
3、修飾符:
UNSIGNED:正數(shù)或0
NOT NULL:不能為空
4、 日期時間:
DATE
TIME
DATETIME
STAMP:時間戳
數(shù)據(jù)庫語言,MYSQL常用命令:
1、DDL:Data Defination Lanuage: 數(shù)據(jù)定義語言
CREATE, ALTER, DROP
1.1、 創(chuàng)建數(shù)據(jù)庫:
CREATE DATABASE db_name;
CREATE DATABASE [IF NOT EXISTS] db_name;
mysql> CREATE DATABASE jmmj; # 創(chuàng)建一個數(shù)據(jù)庫 mysql> SHOW DATABASES; # 查看所有數(shù)據(jù)庫 mysql> CREATE DATABASE IF NOT EXISTS jmmj; # 假如不存在則創(chuàng)建該數(shù)據(jù)庫 1.2、刪除數(shù)據(jù)庫:
DROP DATABASE [IF EXISTS] db_name;
mysql> DROP DATABASE IF EXISTS jmmj; # 假如存在則刪除該數(shù)據(jù)庫 1.3、創(chuàng)建表:
CREATE TABLE tb_name(col1,col2,...);
mysql> USE jmmj # 使用哪個數(shù)據(jù)庫 mysql> CREATE TABLE test(name CHAR(20) NOT NULL,age TINYINT UNSIGNED,gender CHAR(1) NOT NULL); # 創(chuàng)建表test 1.4、查看某數(shù)據(jù)庫中的表:
SHOW TABLES FROM db_name;
mysql> SHOW TABLES FROM jmmj; # 查看數(shù)據(jù)庫jmmj中的表 1.5、查看數(shù)據(jù)庫中的表結(jié)構(gòu):
DESC tb_name;
mysql> DESC test; +--------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+---------------------+------+-----+---------+-------+ | name | char(20) | NO | | NULL | | | age | tinyint(3) unsigned | YES | | NULL | | | gender | char(1) | NO | | NULL | | +--------+---------------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) 1.6、 刪除表命令:
DROP TABLE tb_name;
1.7、修改表命令:
mysql> help ALTER TABLE; # 命令幫助 ALTER TABLE tb_name MODIFY|CHANGE|ADD|DROP ......
MODIFY:改字段屬性
CHANGE:改字段名稱
ADD:添加一個字段
DROP:刪除一個字段
mysql> ALTER TABLE test ADD classes VARCHAR(100) NOT NULL; # 添加一個classes的字段 mysql> DESC test; # 看看效果 +---------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------------+------+-----+---------+-------+ | name | char(20) | NO | | NULL | | | age | tinyint(3) unsigned | YES | | NULL | | | gender | char(1) | NO | | NULL | | | classes | varchar(100) | NO | | NULL | | +---------+---------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) 2、 DML:Data Manapulate Language: 數(shù)據(jù)操作語言
INSERT, REPLACE, UPDATE, DELETE
2.1、 插入表中的行命令:
INSERT INTO tb_name (col1,col2,...) VALUES|VALUE ('STRING', NUM,...);
INSERT INTO tb_name (col1,col2,...) VALUES|VALUE ('STRING', NUM,...),('STRING',NUM,...);
mysql> INSERT INTO test (name,age,gender,classes) VALUE ('liming','19','m','one'); # 插入一行 mysql> INSERT INTO test VALUE ('han×××','18','m','one'); # 如果所有字段都插入則前面字段名可以省略 mysql> INSERT INTO test (name,age,gender,classes) VALUE ('lintao','19','m','one'),('tom','','m','two'); # 還可以批量插入 mysql> SELECT * FROM test; # 查看下效果 +-----------+------+--------+---------+ | name | age | gender | classes | +-----------+------+--------+---------+ | liming | 19 | m | one | | han××× | 18 | m | one | | lintao | 19 | m | one | | tom | 0 | m | two | +-----------+------+--------+---------+ 5 rows in set (0.00 sec) 2.2、 更新表中的行命令:
UPDATE tb_name SET column=value WHERE
mysql> UPDATE test SET gender='f' WHERE name='han×××'; # 修改字段name為han×××的行的gender值為f mysql> SELECT * FROM test; # 查看下效果 +-----------+------+--------+---------+ | name | age | gender | classes | +-----------+------+--------+---------+ | liming | 19 | m | one | | han××× | 18 | f | one | | lintao | 19 | m | one | | tom | 0 | m | two | +-----------+------+--------+---------+ 5 rows in set (0.00 sec) 2.3、 刪除表中的行命令:
DELETE FROM tb_name WHERE CONDITION;
mysql> DELETE FROM test WHERE name='liming'; 3、SELECT:數(shù)據(jù)庫查詢語言
查詢表命令:
SELECT (col1,col2,...) FROM tb_name WHERE CONDITION
*: 所有字段
WHERE:沒有條件表示顯示所有行
mysql> SELECT * FROM test; # 查詢test表中的所有字段 +-----------+------+--------+---------+ | name | age | gender | classes | +-----------+------+--------+---------+ | han××× | 18 | f | one | | lintao | 19 | m | one | | tom | 0 | m | two | | liming | 20 | m | one | +-----------+------+--------+---------+ 4 rows in set (0.00 sec) 4、DCL:Data Control Language: 數(shù)據(jù)控制語言
GRANT, REVOKE
4.1、授予權(quán)限命令:
GRANT pri1,pri2,... ON DB_NAME.TB_NAME TO 'USERNAME'@'HOST' [IDENTIFIED BY 'PASSWORD'];
mysql> GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '666'; # 創(chuàng)建(GRANT若沒有則自動創(chuàng)建用戶)一個可以在所有終端登錄的用戶root( root@'%'),設(shè)置密碼為666,授予對所有庫中的所(*.*)有表所有的權(quán)限(ALL PRIVILEGES) mysql> FLUSH PRIVILEGES; # 重讀權(quán)限 4.2、撤銷權(quán)限命令:
REVOKE pri1,pri2,... ON DB_NAME.TB_NAME FROM 'USERNAME'@'HOST';