1. 程式人生 > 其它 >Linux 連結 MySQL 及 基礎操作

Linux 連結 MySQL 及 基礎操作

# 連線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