啟動:net start mysql
關(guān)閉:net stop mysql
-D,--database=name 打開指定的數(shù)據(jù)庫
--deliiter = name 指定分隔符
-h预烙,--host=name 服務(wù)器名稱
-p,--password[=name]密碼
-p,--port=# 端口號
--prompt=name 設(shè)置提示符
-u,--user=name 用戶名
-V ,--version 輸出版本信息并退出
修改mysql提示符\D,\d兔毒,\h糟秘, \u
1.通過連接客戶端時通過參數(shù)指定
shell>mysql -uroot -proot --prompt 提示符
2.連接上客戶端后,通過prompt命令修改
mysql>prompt 提示符
創(chuàng)建數(shù)據(jù)庫
CREATE {DATABASE | SCHEMA} [IF NOT EXTSTS] db_name
[DEFAULT] CHARCTER SET [=] charset_name
{}必選 []可選
朝看當(dāng)前服務(wù)下的數(shù)據(jù)表列表
SHOW {DATABASES | SCHEMAS}
[LIKE 'pattern' | WHERE expr]
創(chuàng)建數(shù)據(jù)庫
CREATE [DATABASE | SCHEMA] [IF NOT EXISTS] db_name
CREATE DATABASE IF NOT EXISTS t1; 忽略警告
SHOW WARNINGS; //查看警告
SHOW CREATE DATABASE t1; //創(chuàng)建數(shù)據(jù)庫時的指令是多少
CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET gbk;//創(chuàng)建數(shù)據(jù)為gbk的編碼方式
修改數(shù)據(jù)庫:
ALTER{DATABASE | SCHEMA} [db_name][DEFAULT] CHARACTER SET [=] charset_name
ALETER DATABASE db_name CHARCTER SET = utf8; //修改數(shù)據(jù)庫的編碼方式;
刪除數(shù)據(jù)庫:
DROP {DATABASE | SCHEMA} [IF NOT EXISTS] db_name;
數(shù)據(jù)類型:數(shù)據(jù)類型是指列师郑、儲存過程參數(shù)、表達(dá)式和局部變量的數(shù)據(jù)特征调窍、它決定了數(shù)據(jù)的存儲格式宝冕、代表了不同信息類型。
整形:TINYINT/SMALLINT/MEDIUMINT/INT/BIGINT
浮點型:FLOAT/DOUBLE
日期時間類型:YEAR/TIME/DATE/DATETIME/TIMESTAMP
字符型:CHAR(M)/VARCHAR(M)/TINYTEXXT/TEXT/MEDIUMTEXT/LONGTEXT/ENUM('value1','value2'..)/SET('value1','value2'..)
創(chuàng)建數(shù)據(jù)表:數(shù)據(jù)表是數(shù)據(jù)庫當(dāng)中最重要的組成部分之一邓萨,是其他對象的基礎(chǔ)地梨。
a、創(chuàng)建數(shù)據(jù)表之前選擇在哪一個數(shù)據(jù)庫操作
USE test;
b缔恳、查詢該數(shù)據(jù)庫是否被打開
SELECT DATABASE();
c宝剖、創(chuàng)建數(shù)據(jù)表
CREATE TABLE tb1(
username CHAR(20),
age TINYINT UNSIGNED, UNSIGED是指不能有負(fù)數(shù)
salary FLOAT(8,2) UNSIGNED
);
d、查看數(shù)據(jù)表
SHOW TABLES;
e.查看數(shù)據(jù)表結(jié)構(gòu):其實是列的性質(zhì)
SHOW COLUMNS from tb2;
f.向表中插入數(shù)據(jù)
INSERT tb1 VALUES ('Tom',20,4321.32);如果沒有指定列,則全部字段都必須賦值歉甚,否則用報錯
INSERT tb1(username,salary) VALUES ('Jenny',2999.29);
g万细、查詢表中的數(shù)據(jù)
SELECT * from tb1;
h、非空驗證:null / not null
在創(chuàng)建表時纸泄,如果后面沒有加NULL/NOT NULL,字段默認(rèn)為空赖钞;如果加了NOT NULL,表示字段不能為空聘裁。并且如果為not null雪营,又沒有錄入數(shù)據(jù)的話,就會無法進(jìn)行編譯
CREATE TABLE tb3(
username CHAR(20) NOT NULL, 若插入數(shù)據(jù)時沒有給username賦值咧虎,則報錯卓缰,因為已經(jīng)設(shè)置不能為空
age TINYINT UNSIGNED NULL
);
i. 自動編號:auto_increment
必須與主鍵primary key組合使用征唬,默認(rèn)起始值為1总寒,每次的增量為1理肺;
create table tb3(
id smallint unsigned auto_increment primary key,
username varchar(20)
);
j.主鍵約束:PRIMARY KEY
主鍵保證記錄的唯一性,每張數(shù)據(jù)表只能存在一個主鍵年枕,主鍵自動被NOT NULL
注意:設(shè)置了主鍵以后熏兄,該字段不能為空,且不能重復(fù)
k.唯一約束:UNIQUE KEY
主鍵約束一張表只能有一個桥状,但是唯一約束一張表可以有多個硝清,且唯一約束可以為空值
l.默認(rèn)值:DEFAULT
當(dāng)插入記錄的時候芦拿,如果沒有明確為字段賦值,則自動賦予默認(rèn)值
sex ENUM('1','2','3') DEFAULT '3'
ALTER [IGNORE] TABLE tbl_name
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]//添加單個字段
| ADD [COLUMN] (column_definition,...)//添加多個字段
| ADD INDEX [index_name] [index_type] (index_col_name,...)//添加索引
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,...)//添加主鍵
| ADD [CONSTRAINT [symbol]]
UNIQUE [index_name] [index_type] (index_col_name,...)//添加唯一索引
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]//添加外鍵
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}//添加刪除default約束
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]//修改字段名等
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]//修改除字段名外的
| DROP [COLUMN] col_name//刪除字段
| DROP PRIMARY KEY//刪除主鍵
| DROP INDEX index_name//刪除索引
| DROP FOREIGN KEY fk_symbol//刪除外鍵
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]//修改字符集
外鍵約束的參照操作 刪除滿足條件的記錄:DELETE FROM 表名 WHERE 條件变汪;
刪除所有記錄:DELETE FROM 表名裙盾。
外鍵操作定義:FOREIGN KEY(外鍵名) REFERENCES 附表名(參照列) ON DELETE CASCADE
物理外鍵約束只適用于InnoDB數(shù)據(jù)庫番官,實際項目開發(fā)中采用邏輯外鍵
表級約束與列級約束
(1)對一個數(shù)據(jù)列建立的約束钢属,稱為列級約束
(2)對多個數(shù)據(jù)列建立的約束淆党,稱為表級約束
(3)列級約束既可以在列定義時聲明,也可以在列定以后聲明
(4)表級約束只能在列定義后聲明
2.主鍵山孔、外鍵、非空台颠、唯一串前、check荡碾,default都是約束條件。主鍵玩荠、外鍵、唯一既可以作為表級約束,也可作為列級約束
而非空not null女坑,默認(rèn)default只有列級約束
修改數(shù)據(jù)表
添加主鍵約束:
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY index_type
添加外鍵約束:
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] FOREIGN KEY index_name reference_definition
添加唯一約束:
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
添加/刪除默認(rèn)約束:
ALTER TABLE tbl_name ALTER[COLUMN] col_name{SET DEFAULT literal|DROP DEFAULT}
刪除主鍵約束
ALTER TABLE tbl_name DROP PRIMARY KEY;
刪除唯一約束
ALTER TABLE tbl_name DROP {INDEX|KEY} index_name;
eg:
ALTER TABLE tbl_name DROP INDEX user; 刪除user字段的唯一約束
刪除外鍵約束
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol;刪除時一定要加上外鍵約束的名稱可以用SHOW CREATE TABLE tbl_name查看
修改列定義
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]
eg:
ALTER TABLE tbl_name MODIFY id TINYINT NOT NULL FIRST;將id字段改為首字段
修改列名稱
ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|ALTER col_name]即可以改列名稱也可以改列定義
eg:
ALTER TABLE user CHANGE pid p_id TINYINT UNSIGNED NOT NULL; 將pid字段名稱更改為p_id,并將其類型更改為TINYINT
數(shù)據(jù)表更名
方法一:
ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
eg:
ALTER TABLE users2 RENAME users3;將數(shù)據(jù)表名稱更改為user3
方法二
RENAME TABLE tbl_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2] ....可以為多張數(shù)據(jù)表進(jìn)行更名
eg:
RENAME TABLE users2 TO users3;
盡量少進(jìn)行數(shù)據(jù)表更名或者數(shù)據(jù)列的更名