創建數據庫:
方式一:創建數據庫
CREATE DATABASE 數據庫名;(使用的是默認的字符集)
方式二:創建數據庫并指定字符集
CREATE DATABASE 數據庫名 CHARACTER SET 字符集;
方式三:判斷數據庫是否已經存在,不存在則創建數據庫
CREATE DATABASE IF NOT EXISTS 數據庫名;
(也可以指定字符集:CREATE DATABASE IF NOT EXISTS 數據庫名 CHARACTER SET 字符集)
如果MySQL中已經存在相關的數據庫,則忽略創建語句,不再創建此名稱的數據庫。
管理數據庫
查看當前連接中的數據庫:
SHOW? DATABASES;
切換數據庫:
USE 數據庫名;
查看當前數據庫中保存的數據表:
SHOW? TABLES;
查看當前使用的數據庫:
SELECT? DATABASE( )? FROM? DUAL;
查看指定的數據庫下保存的表:
SHOW? TABLE? FROM? 數據庫名;
修改數據庫:
更改數據庫字符集:
ALTER? DATABASE? 數據庫名? CHARACTER? SET? 字符集;
刪除數據庫:
方式一:刪除指定的數據庫
DROP? DATABASE? 數據庫名;
方式二:刪除指定的數據庫(如果存在即刪除,不存在即結束操作)
DROP? DATABASE? IF? EXISTS? 數據庫名;
數據類型:
其中,常見的數據類型介紹如下:
創建數據表:
創建數據表(方式一):
CREATE? TABLE? IF? NOT? EXISTS? 表名(
字段名? 數據類型? [約束條件] [默認值],
字段名? 數據類型? [約束條件] [默認值],
……
[表約束條件]
);?
注:
[ ]中的內容表示約束,也可以沒有。
如果創建表時沒有指明使用的字符集,則默認使用表所在的數據庫的字符集。
IF? NOT? EXISTS可以沒有,但是建議要有。
查看表結構:
DESC? 表名;
查看創建表的語句結構:
SHOW? CREATE? TABLE? 表名;
創建數據表(方式二):基于現有的表
CREATE? TABLE? 表名
AS
SELECT? 字段……
FROM 現有的表的表名
……(查詢的操作)
即將查詢現有的表的查詢結果來創建一個新的表。
注:若AS后面的查詢操作中的字段起了別名,則該方法創建的表中的字段名即為相應的字段的別名。
修改表:
修改表使用 ALTER? TABLE? 表名? ……
添加字段
ALTER? TABLE? 表名
ADD? 新字段名? 數據類型? [約束條件];
新字段默認添加到表中的最后一個字段的位置后。
除此之外,還可以添加字段到指定位置:
ALTER? TABLE? 表名
ADD? 新字段名? 數據類型? [約束條件]? FIRST;
表示添加新字段到首列
ALTER? TABLE? 表名
ADD? 新字段名? 數據類型? [約束條件]? AFTER? 字段名;
表示新字段在指定的字段名的位置后添加
修改一個字段
ALTER? TABLE? 表名
MODIFY? 字段名? 數據類型? DEFAULT? 默認值;
若要將字段的位置進行修改,可以在末尾加上FIRST/AFTER 字段名
注:數據類型一般不會做大更改,一般是將VARCHAR一類的數據類型的長度做修改
若不涉及更改默認值,DEFAULT的語句可省略。
重命名一個字段
ALTER? TABLE? 表名
CHANGE? 字段名? 新字段名? 數據類型;
注:可以在重命名時對字段的數據類型做修改。
刪除一個字段
ALTER? TABLE? 表名
DROP? COLUMN? 字段名;
重命名表:
方式一:
RENAME? TABLE? 表名
TO? 新表名;
方式二:
ALTER? TABLE? 表名
RENAME? TO? ?新表名;
刪除表:
DROP? TABLE? IF? EXTSTS? 表名;
清空表:
清空表中的所有數據,表本身還在。
TRUNCATE? TABLE? 表名;
對比TRUNCATE? TABLE 和 DELETE? FROM
相同點:都可以實現對表中的所有數據的刪除,同時保留表結構。
不同點:
TRUNCATE? TABLE:執行此操作,表中數據全部清除。同時,數據不能回滾。屬于DDL。
DELETE? FROM:表中數據被指定刪除,同時數據可以實現回滾。屬于DML。
COMMIT 和 ROLLBACK
COMMIT:提交數據。執行COMMIT,數據就被永久的保存在數據庫中,意味著數據不可回滾。
ROLLBACK:回滾數據。一旦執行ROLLBACK,則可以實現數據的回滾。
關于DDL和DML的說明:
DDL的操作一旦執行,就不可回滾。執行完后,會自動執行一次COMMIT,不受SET? autocommit? =? false的影響。
DML的操作默認情況下,一旦執行,也是不可回滾的。但是若在執行DML之前,執行了SET? autocommit? =? false的操作,則執行的操作就可以實現回滾。
TRUNCATE? TABLE 比 DELETE? FROM速度快,且使用的系統和事務日志資源少,但TRUNCATE無事務且不觸發TRIGGER,有可能造成事故,故不建議在開發代碼中使用此語句。