1点待、連接Mysql
mysql?-h$ip?-P$port?-u$user?-p
net start mysql#?或?mysql.server?start
mysql?-u?root?-p
mysql?-uuser-p?db_name#?直接進入指定數(shù)據(jù)庫
2壳影、導入導出
導出現(xiàn)有數(shù)據(jù)庫數(shù)據(jù):
mysqldump?-u用戶名?-p密碼?數(shù)據(jù)庫名稱?>導出文件路徑#?結構+數(shù)據(jù)
mysqldump?-u用戶名?-p密碼?-d?數(shù)據(jù)庫名稱?>導出文件路徑#?結構?
導入現(xiàn)有數(shù)據(jù)庫數(shù)據(jù):
mysqldump?-uroot?-p密碼??數(shù)據(jù)庫名稱?<導入文件路徑
3、數(shù)據(jù)庫操作
SELECT version(),current_date,now();#?查看mysql版本號和日期蓝仲、時間
SELECT version();selectnow();selectcurrent_date;#?分開寫則表格分開
SOURCE?c://test.sql#?用txt文件保存命令該后綴名?可直接執(zhí)行文件內(nèi)的命令
SHOW?TABLES;?#?查看所有表
DESCRIBE?db_name;?#?查看表的描述,也可以用?DESC?table;
SELECT?*?FROM?db_name;?#?查看表中所有數(shù)據(jù)
SELECT?host,user?FROM?db_name;?#?大小寫不敏感
INSERT?INTO?person(name,birth)?VALUES('A',1994-01-01);?#?VALUE也可
USE?db_name;?#?進入數(shù)據(jù)庫
ALTER?DATABASE?db_name?DEFAULT?CHARSET?SET?utf8;??#?修改數(shù)據(jù)庫
DROP?DATABASE?db_name贝或;?#?刪除數(shù)據(jù)庫
DROP?VARIABLES?LIKE?'datadir';?#?查看數(shù)據(jù)庫所在位置
4谓着、表操作:創(chuàng)建表
CREATE TABLE students(
nid INT NOT NULLAUTO_INCREMENT?PRIMARY KEY,#?自增列必須是索引泼诱,最好是主鍵
name VARCHAR(20),
num INT NOT NULL DEFAULT 2)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
5、主鍵
一張表只能有一個主鍵赊锚,值是唯一的(或多列組合是唯一的)治筒,不能重復不能為空,一般情況下自增列設置為主鍵舷蒲。常用nid INT NOT NULL AUTO_INCREMENT PRIMARY KEY一張表可以多個唯一列
CREATETABLEtb1(
nid INT NOT NULL,
num INT NOT NULL,
PRIMARY KEY(nid,num)#?兩列組成一個主鍵
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
6耸袜、外鍵
#?創(chuàng)建表時創(chuàng)建
CREATE TABLE color(
INT NOT NULL PRIMARY KEY,
name CHAR(16) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;;
CREATE TABLE fruit(
INT NOT NULL PRIMARY KEY,
smt CHAR(32) NOT NULL,
color_id INT NOT NULL,
CONSTRAINT fk_fruit_color FOREIGNKEY(color_id) REFERENCES color(nid)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;;
7、修改表屬性
#?添加列:
ALTER?TABLE?表名?ADD?列名?類型
#?刪除列:
ALTER?TABLE?表名?DROP?COLUMN?列名
#?修改列:
ALTER?TABLE?表名?MODIFY?COLUMN?列名?類型;??一般只改類型
ALTER?TABLE?表名?CHANGE?原列名?新列名?類型;?可改列名+類型
8牲平、數(shù)據(jù)類型
bit(M)
二進制位堤框,M為1~64,默認M=1
int:
nid int unsigned最大4GB (2**32 ? 1)
整數(shù)類型中的m僅用于顯示纵柿,對存儲范圍無限制
tinyint: 有符號-128127蜈抓,無符號0255,默認是signed
MySQL中無布爾值藐窄,使用tinyint(1)構造
bigint
smallint
decimal:
精確的小數(shù)资昧,能夠存儲精確值的原因在于其內(nèi)部按照字符串存儲
num decimal(6,2)? 6個有效數(shù)字(總長度),2位小數(shù)荆忍,最大是65和30
float格带,double: 不精確
char:
唯一定長,其他都是變長刹枉,數(shù)據(jù)不到該長度其他空間會閑置叽唱,查找速度快,浪費空間
varchar: 變長微宝,相對于char效率低棺亭。查找下一列時不確定跳多少存儲空間
字符最大是255
text:字符最大是65535 2**16-1
mediumtext:2**24-1
longtext:2**32-1
二進制數(shù)據(jù):
TinyBlob、Blob蟋软、MediumBlob镶摘、LongBlob
上傳文件嗽桩,blob強制二進制方式。現(xiàn)在多用varchar保存路徑凄敢,上傳文件保存在硬盤
時間:
DATE
YYYY-MM-DD(1000-01-01/9999-12-31)
TIME
HH:MM:SS('-838:59:59'/'838:59:59')
YEAR
YYYY(1901/2155)
枚舉 enum:
CREATE TABLE shirts (
name VARCHAR(40),
size ENUM('x-small', 'small', 'medium', 'large', 'x-large'));
INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');
集合 set:
CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
9.表內(nèi)容操作
# 寫的順序
SELECT... FROM...
WHERE...
GROUP BY... HAVING...
ORDER? BY...
LIMIT...
# 執(zhí)行順序
FROM...
WHERE...
GROUP BY...
SELECT...
HAVING...
ORDER BY...
LIMIT...
10碌冶、表內(nèi)容操作—增
INSERT INTO 表 (列名,列名...) VALUES(值,值,值...);
INSERT INTO? 表 (列名,列名...) VALUES(值,值,值...),(值,值,值...); # 增加多條數(shù)據(jù)
INSERT INTO? 表 (列名,列名...) SELECT 列名,列名 FROM 表;? # 后面選擇列不需要空格
# 如果數(shù)據(jù)可以轉則允許互轉
insert into students(name,age) SELECT caption,nid FROM tb2 WHERE nid>2;
11、表內(nèi)容操作—刪
DELETE FROM 表;
DELETE FROM 表 WHERE id=1 AND name='alex';
DELETE FROM 表 WHERE id > 1 OR name='alex';
# 刪除和清空
DROP TABLE student; # 刪除表
DELETE FROM student; # 清空表涝缝,有自增列則清空后自增記憶存在
TRUNCATE (TABLE) student扑庞;# 快速清空表,有自增列則清空后自增從1重新開始
12拒逮、表內(nèi)容操作—改
UPDATE students SET name = 'alex' WHERE id>1;
UPDATE salary SET sex = IF(sex = 'm', 'f', 'm')? # 條件判斷更改
UPDATE salary SET sex = char(ascii('m') + ascii('f') - ascii(sex));
UPDATE salary
SET
? sex = CASE sex
? ? ? ? WHEN "m" THEN "f"
? ? ? ? ELSE "m" END;
13罐氨、表內(nèi)容操作—查
SELECT * FROM 表;
# 要全部列可以把列名寫一遍,效率比*高
SELECT * FROM 表 WHERE id <> 1; # 即!=
SELECT * FROM 表 WHERE id BETWEEN 3 AND 5;? # 即 id>=3 AND id<=5
SELECT nid,name,gender FROM 表 WHERE id%2 = 1;