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
  # 將 B 表的字段值賦值給 A 表中的字段
  UPDATE tableA a,tableB b SET a.column=b.column [WHERE 條件];
    UPDATE tableA a LEFT JOIN tableB b ON a.id=b.cs_id SET b.column=a.column [WHERE 條件];
    UPDATE tableA a SET a.column1 = (SELECT b.column1 FROM tableB b WHERE a.id = b.aid)[WHERE 條件]
    # 示例
      UPDATE test a,test2 b SET a.info=b.cs_id WHERE a.id = 49536;
      UPDATE test a LEFT JOIN test2 b ON a.id = b.cs_id SET a.info=b.id WHERE a.id = 24;
      UPDATE test a SET a.info = (SELECT b.id FROM test2 b WHERE a.id = b.cs_id),
        WHERE EXISTS (SELECT c_id FROM test3 c WHERE a.id = c.aid);
# 刪除字段
  ALTER TABLE 表名 DROP column 列名;
# 刪除數據
  DELETE FROM 表名 [WHERE 條件]
  # 示例
    DELETE FROM user WHERE name='張三'; # 刪除名字是張三的數據
  # 刪除關聯表數據
    # 刪除 test_new 表數據,條件是 a 表info字段值為 2022
    DELETE a FROM test_new a, test b WHERE a.id=b.id and a.info = 2022;
# 刪表
  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

 

A


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM