Linux 連結 MySQL 及 基礎操作
阿新 • • 發佈:2021-12-23
# 連線mysql
mysql -h主機地址 -P埠 -u使用者名稱 -p
# 顯示資料庫
show databases;
# 使用某個資料庫
use xxx;
# 檢視該資料庫中的表
show tables;
# 顯示資料表的結構
describe 表名;
desc 表名;
# 顯示錶中的記錄(注意表名大小寫)
select * from 表名;
# 建立資料庫
create database 資料庫名;
# 建表
use 庫名
create table 表名 (欄位列表);
# 示例
use blog;
create table user (id int(3) AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(8),
gender CHAR(2) DEFAULT'未知',
birthday DATE
);
describe name;
# 增加一個欄位
ALTER TABLE 表名 ADD COLUMN 新欄位名 資料型別 [約束條件]; # 在末尾
#示例
ALTER TABLE `user` ADD COLUMN `province` varchar(25) NOT NULL DEFAULT '上海' COMMENT '省份';
ALTER TABLE 表名 ADD COLUMN 新欄位名 資料型別 [約束條件] FIRST; # 在開頭新增欄位
#示例
ALTER TABLE `user` ADD COLUMN `city` varchar(25) NULL COMMENT '城市' FIRST ;
ALTER TABLE 表名 ADD COLUMN 新欄位名 資料型別 [約束條件] AFTER 已經存在的欄位名;# 在中間位置新增欄位
#示例
ALTER TABLE `user` ADD COLUMN `area` varchar(25) NULL COMMENT '區域' AFTER city;# 增加在 city 欄位後
ps
ADD COLUMN 新增欄位
DEFAULT 預設值
COMMENT 註釋、註解、備註
FIRST 關鍵字使欄位放在首位
AFTER 關鍵字使欄位放在已有欄位後
DEFAULT 預設值
DEFAULT NULL 預設為空
# 修改欄位資料型別及預設值空/非空
ALTER TABLE 資料表名 MODIFY欄位名 資料型別 DEFAULT 預設值;# 修改資料型別及預設值
#示例
ALTER TABLE user MODIFY province varchar(250) DEFAULT '北京';
ALTER TABLE user MODIFY province varchar(250) DEFAULT NULL;
ALTER TABLE 表名 ALERT COLUMN 欄位名 SET DEFULT 預設值;# 修改預設值
#示例
ALTER TABLE user ALTER COLUMN province SET DEFULT 'beijing';
ps:由於不同型別的資料的儲存方式及長度不相同,修改資料型別可能會影響資料表中已有的資料記錄,資料表中已經有資料時,謹慎修改
# 刪除欄位預設值
ALTER TABLE 表名 ALTER COLUMN 欄位名 DROP DEFAULT;
#示例
ALTER TABLE user ALTER COLUMN province DROP DEFAULT;
# 修改欄位名
ALTER TABLE 表名 CHANGE 原欄位名 新欄位名 欄位型別;
#示例
ALTER TABLE user CHANGE new_province new_province2 VARCHAR(250);
# 增加資料
INSERT INTO user VALUES ('','張三','男','2019-01-01');# 按欄位順序依次增加資料
#示例
INSERT INTO user ('name','gender','birthday') VALUE ('李四','女','2020-06-01');# 可控制增加欄位,欄位對應資料
INSERT INTO user SET name = '王五',gender = '男',birthday = '2018-05-16';# 前後不需對應,易調
SELECT * FROM name;# 查詢可見三條資料
# 修改資料
UPDATE 表名 SET 欄位='',... [WHERE 條件]
#示例
UPDATE user SET birthday='2019-01-01' WHERE name='張三'; # 將張三的出生年月改為2019-06-01
# 刪除欄位
ALTER TABLE 表名 DROP column 列名;
# 刪除資料
DELETE FROM 表名 [WHERE 條件]
#示例
DELETE FROM user WHERE name='張三'; # 刪除名字是張三的資料
# 刪表
DROP TABLE 表名;# 直接刪除表資訊,速度最快,無法找回資料
TRUNCATE TABLE 表名;# 刪除表資料,不刪除表的結構,速度排第二,不能與 where 一起使用
DELETE FROM 表名 (WHERE 條件);# 刪除表中的資料,不刪除表結構,速度最慢,可以與 where 連用,可以刪除指定的行
#語句型別:delete 語句是資料庫操作語言(DML),truncate,drop是資料庫定義語言(DDL);
#效率:一般來說 drop > truncate> delete;
# 增加索引
A、ALTER TABLE 表名 ADD 索引 索引名(欄位名)
B、CREATE 索引 索引名 ON 表名 (欄位名)
C、ALTER TABLE表名ADD 索引 索引名 (欄位名,欄位名,...)# 新增多列索引
#示例
ALTER TABLE`user`ADD INDEX province(province) # 新增普通索引
ps
UNIQU 唯一索引,不可以出現相同的值,可以有 NULL 值
INDEX 普通索引,允許出現相同的索引內容
PROMARY KEY 主鍵索引,不允許出現相同的值
FULLTEXT 全文索引,可以針對值中的某個單詞,但效率確實不敢恭維
組合索引: 實質上是將多個欄位建到一個索引裡,列值的組合必須唯一
# 修改索引
ps:MySQL 中沒有真正意義上的修改索引
只有先刪除之後在建立新的索引才可以達到修改的目的
原因是mysql在建立索引時會對欄位建立關係長度等
只有刪除之後建立新的索引才能建立新的關係保證索引的正確性;
# 刪除索引
DROP INDEX 索引名 ON 表名
# 檢視索引
SHOW INDEX FROM 表名;
# 刪庫
DROP DATEBASE庫名;
# 重命名錶
ALTER TABLE 表原名 rename 新表名;
# 資料庫某表的備份
mysqldump -u root -p 資料庫名 表名 > 備份檔名
# 資料庫備份
mysqldump -u root -p mysql > /home/mysql.sql# 把資料庫 mysql 備份到home目錄下,命名為 mysql.sql
mysqldump -u賬號 -p密碼 資料庫 | gzip > 指令碼路徑
#示例
#!/bin/bash
mysqldump -uroot -proot test > /home/backup/test_$(date +%Y%m%d_%H%M%S).sql
#備份進行壓縮
#!/bin/bash
mysqldump -uroot -proot test | gzip > /home/backup/test_$(date +%Y%m%d_%H%M%S).sql.gz
#備份MySQL資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫
mysqldump -–add-drop-table -u賬號 -p密碼 資料庫 > test_$(date +%Y%m%d_%H%M%S).sql
#僅備份資料庫結構
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
#同時備份多個數據庫
mysqldump -u賬號 -p密碼 –databases databasename1 databasename2 databasename3 > multibackupfile.sql
#備份伺服器上所有資料庫
mysqldump –all-databases > 指令碼路徑及名稱(ls:/home/test.sql)
# 資料庫還原
#還原全部資料庫
source備份路徑及名稱# source方法
mysql -u賬號 -p密碼 資料庫名< 指令碼路徑及名稱(ls:test.sql)
#還原壓縮的MySQL資料庫
gunzip < 指令碼路徑及名稱(ls:test.sql.gz) | mysql -uusername -ppassword databasename
# 匯出資料
#匯出結構不匯出資料
mysqldump -u使用者名稱 -p密碼 -d 資料庫名 > 資料庫名.sql
# 匯出資料和表結構
mysqldump -u使用者名稱 -p密碼 資料庫名 > 資料庫名.sql
# 到處特定表
mysqldump -u使用者名稱 -p密碼 資料庫名 --table 表名 > 資料庫名.sql
# 匯出資料不匯出表結構
mysqldump-u使用者名稱-p密碼資料庫名 表名> filename.sql
# 匯入資料
mysql -u賬號 -p密碼 資料庫<sql指令碼
# 示例
mysql -uroot -proot test</home/test20211220.sql
# 將資料庫轉移到新伺服器
ysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename
# 將兩個表的資料拼接後插入到另一個表
mysqldump -u使用者名稱 -p密碼 資料庫名 表名 --where="篩選條件" > 匯出檔案路徑
# 示例
mysqldump -uroot -p123456 test user --where=" id=11" > /home/xyx/Temp.sql
# 退出 mysql
exit