首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 基礎操作全手冊(一):庫表管理、索引、數據導入導出、常用函數

     編輯:MySQL 綜合教學

MySQL 基礎操作全手冊(一):庫表管理、索引、數據導入導出、常用函數

DBA 與開發日高頻的 MySQL 基礎操作速查,涵蓋庫表元數據查看、表結構變更、索引管理、數據遷移、常用函數實例,適合新手入門與老手查漏補缺。

一、庫表元數據查看

-- 當前數據庫
SELECT DATABASE();
-- 顯示表
SHOW TABLES;
-- 表結構
DESC t1;
-- 索引信息
SHOW INDEX FROM t1;

二、表結構變更(DDL)

1. 複製表結構與數據

-- 僅結構
CREATE TABLE t2 LIKE t1;
-- 結構 + 數據
INSERT INTO t2 SELECT * FROM t1;

2. 索引管理

-- 主鍵
ALTER TABLE t1 ADD PRIMARY KEY (id);
-- 唯一索引
ALTER TABLE t1 ADD UNIQUE INDEX uk_name (name);
-- 普通索引
ALTER TABLE t1 ADD INDEX idx_age (age);
-- 查看
SHOW INDEX FROM t1;
-- 刪除
ALTER TABLE t1 DROP PRIMARY KEY;
ALTER TABLE t1 DROP INDEX uk_name;

3. 自增主鍵設置/重置

-- 修改列為自增主鍵
ALTER TABLE t1 MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;
-- 重置自增值
ALTER TABLE t1 AUTO_INCREMENT = 1;
-- 刪除大 ID 後重置
DELETE FROM t1 WHERE id > 20;
ALTER TABLE t1 AUTO_INCREMENT = 1;

4. 批量插入

INSERT INTO t1 (name, age) VALUES 
('aaa', 20), ('bbb', 30), ('cc', 18), ('abc', 23);

三、數據導出與導入

1. 導出文本(服務端)

SELECT name, age FROM t1 INTO OUTFILE '/tmp/t1.txt';
-- 報錯 File exists 需先刪除文件

導出命令

2. 清空表數據對比

命令原理速度自增重置觸發器回滾
DELETE FROM t1逐行刪除,記錄 Binlog慢否觸發可回滾
TRUNCATE TABLE t1Drop + Recreate 表,不記 Binlog極快是(歸 1)不觸發不可回滾

3. 導入數據(LOAD DATA)

LOAD DATA INFILE '/tmp/t1.txt' INTO TABLE t1 (name, age);
-- 僅導入數據,不含表結構,速度極快
-- 文件內容:Tab 分隔裸數據

導入結果

四、流程控制函數:CASE WHEN

SELECT id, name, age,
  CASE 
    WHEN age >= 30 THEN 'A'
    WHEN age <= 18 THEN 'B'
    ELSE 'C'
  END AS grade
FROM t1;

CASE WHEN 結果

五、常用內置函數速查

1. 字符串函數

函數示例結果
CONCAT(s1,s2...)CONCAT('hello','mysql')'hellomysql'
LCASE/UCASE(str)UCASE('hello mysql')'HELLO MYSQL'
LENGTH(str)LENGTH('hello mysql')11(字節數)
REPEAT(str,n)REPEAT('hi,',3)'hi,hi,hi,'
REPLACE(str,from,to)REPLACE('hello mysql','mysql','php')'hello php'
SUBSTRING(str,pos,len)SUBSTRING('hello mysql',1,5)'hello'(位置從 1 開始)
FIND_IN_SET(str,list)FIND_IN_SET('a','a,b,c,d')1

2. 數學函數

函數示例結果
BIN(n)BIN(2)'10'
CEILING(n)CEILING(1.2)2
FLOOR(n)FLOOR(1.2)1
MAX/MIN(expr)SELECT MAX(age) FROM t1聚合最大/小值
RAND()RAND()0~1 隨機浮點數

3. 日期時間函數

函數示例結果
CURDATE()CURDATE()'2015-02-10'
CURTIME()CURTIME()'02:43:08'
NOW()NOW()'2015-02-10 02:43:15'
UNIX_TIMESTAMP()UNIX_TIMESTAMP()1423507660
FROM_UNIXTIME(ts)FROM_UNIXTIME(UNIX_TIMESTAMP())'2015-02-10 02:49:37'
YEAR/MONTH/DAY(date)YEAR(NOW())2015 / 2 / 10

基礎操作熟練度決定排障速度。建議將高頻 DDL/DML/函數做成代碼片段/別名,肌肉記憶級掌握。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved