MySQL 詳解教程4 - SQL 基本操作

SQL基本操作

基本操作:CRUD,即增刪改查。
根據操作對象的不同,咱們可以將SQL的基本操作分爲三類,分別爲:庫操作、表(字段)操作和數據庫操作。

庫操作

1.新增數據庫

基本語法:create database + 數據庫名稱 + 【庫選項】;
其中,庫選項是用來約束數據庫的,爲可選項(有默認值),共有兩種,分別爲:

  • 字符串設定:charset/ character set + 具體字符集,用來表示數據的存儲的編碼格式,常用的字符集包括GBKUTF8等。
  • 校對集設定:collate + 具體校對集,表示數據比較的規則,其依賴字符集。

示例:create database TBL_ERROR_CODE character utf8

其中數據庫的名字不能用關鍵字(已經被佔用的字符,例如 updateinsert 等)或者保留字(將來可能會用的,例如 accesscast 等)。

如果非要使用數據庫的關鍵字或者保留字作爲數據庫名稱,那麼必須用反引號將其括起來,例如:

create database access charset utf8;

如果還想使用中文作爲數據庫的名稱,那就得保證數據庫能夠識別中文(強烈建議不要用中文命名數據庫的名稱),例如:

-- 設置中文名稱的方法,其中 gbk 爲當前數據庫的默認字符集
set names gbk;
create database 北京 charset gbk;

2 查詢數據庫

查看全部 --> 基本語法:show databases;

查看部分(模糊查詢)–> 基本語法:show databases like 'pattern';

其中,pattern是匹配模式,有兩種,分別爲:

  • %:表示匹配多個字符;
  • _:表示匹配單個字符。

此外,在匹配含有下劃線_的數據庫名稱的時候,需要在下劃線前面加上反斜線_進行轉義操作。

此外,在匹配含有下劃線_的數據庫名稱的時候,需要在下劃線前面加上反斜線_進行轉義操作。

示例:show databases like 'TBL%';表示匹配所有TBL開頭的數據庫。

查看數據庫的創建語句 --> 基本語法:show create database + 數據庫名稱;

在這裏,查看的結果有可能與咱們書寫的 SQL 語句不同,這是因爲數據庫在執行 SQL 語句之前會優化 SQL,系統保存的是優化後的結果。

3 更新數據庫

在這裏,需要注意:數據庫的名字不可以修改。

數據庫的修改僅限庫選項,即字符集和校對集(校對集依賴字符集)。

基本語法:alter database + 數據庫名稱 + [庫選項];

charset/character set[=] 字符集;
collate[=] 校對集;
示例:alter database TBL_ERROR_CODE charset gbk;表示修改此數據庫的字符集爲gbk.

4 刪除數據庫

基本語法:drop database + 數據庫名稱;

在這裏,需要注意:在刪除數據庫之前,應該先進行備份操作,因爲刪除爲不可逆操作,所以不要隨意刪除數據庫。

表操作

1 新增表

基本語法:

create table [if not exists] + 表名(
	字段名稱 數據類型,
	……
	字段名稱 數據類型	/* 最後後一行,不需要加逗號 */
)[表選項];

其中,if not exists表示

  • 如果表名不存在,就執行創建代碼;如果表名存在,則不執行創建代碼。

表選項則是用來控制表的表現形式的,共有三種,分別爲:

  • 字符集設定:charset/ character set+ 具體字符集,用來表示數據存儲的編碼格式,常用的字符集包括GBK和UTF8等。
  • 校對集設定:collate+ 具體校對集,表示數據比較的規則,其依賴字符集。
  • 存儲引擎:engine+具體存儲引擎,默認爲InnoDB,常用的還有MyISAM.

由於任何表都歸屬於某個數據庫,因此在創建表的時候,都必須先指定具體的數據庫。在這裏,指定數據庫的方式有兩種,分別爲:

  • 第 1 種:顯式的指定表所屬的數據庫,示例
create table if not exists test.student(
	name varchar(10),
	age int,            /* 整型不需要指定具體的長度 */
	grade varchar(10)	/* 最後後一行,不需要加逗號 */
)charset utf8;
  • 第 2 種:隱式的指定表所屬的數據庫,示例
use test;				/* use + 數據庫名稱,表示切換到指定的數據庫,這句命令其實不加分號也可以,但不建議這麼做 */
create table if not exists student(
	name varchar(10),
	age int,            /* 整型不需要指定具體的長度 */
	grade varchar(10)	/* 最後後一行,不需要加逗號 */
)charset utf8;

2 查詢表

查看全部 --> 基本語法:show tables;

查看部分(模糊查詢)–> 基本語法:show tables like 'pattern';

其中,pattern是匹配模式,有兩種,分別爲:

  • %:表示匹配多個字符;
  • _:表示匹配單個字符。
    此外,在匹配含有下劃線_的表名的時候,需要在下劃線前面加上反斜線_進行轉義操作。

示例:show tables like '%t';表示匹配所有以t結尾的表。

查看錶的創建語句 --> 基本語法:show create table + 表名;

在這裏,咱們也可以用\g\G代替上述語句中的;分號,其中\g等價於分號,\G則在等價於分號的同時,將查的表結構旋轉90度,變成縱向結構。

查看錶中的字段信息 --> 基本語法:desc/describe/show columns from + 表名;

3 更新表

在這裏,需要注意:表的修改,分爲修改表本身和修改表中的字段。

  • 第 1 類:修改表本身

    • 修改表名,基本語法:rename table 舊錶名 to 新表名;
    • 修改表選項,基本語法:alter table + 表名 + 表選項[=] + 值;
  • 第 2 類:修改表中的字段,新增、修改、重命名和刪除

    • 新增字段,基本語法:alter table + 表名 + add + [column] + 字段名 + 數據類型 + [列屬性][位置];

      • 其中,位置表示此字段存儲的位置,分爲first(第一個位置)和after + 字段名(指定的字段後,默認爲最後一個位置).
      • 示例:alter table student add column id int first;
    • 修改字段,基本語法:alter table + 表名 + modify + 字段名 + 數據類型 + [列屬性][位置];

      • 其中,位置表示此字段存儲的位置,分爲first(第一個位置)和after + 字段名(指定的字段後,默認爲最後一個位置
      • 示例:alter table student modify name char(10) after id;
    • 重命名字段,基本語法:alter table + 表名 + change + 舊字段名 + 新字段名 + 數據類型 + [列屬性][位置];

      • 其中,位置表示此字段存儲的位置,分爲first(第一個位置)和after + 字段名(指定的字段後,默認爲最後一個位置).
      • 示例:alter table student change grade class varchar(10);
    • 刪除字段,基本語法:alter table + 表名 + drop+ 字段名;

      • 示例:alter table student drop age;
      • 注意:如果表中已經存在數據,那麼刪除該字段會清空該字段的所有數據,而且不可逆,慎用。

4 刪除表

基本語法:

-- 可以一次刪除多張表
drop table + 表1, 表2 ... ;	

在這裏,需要注意:此刪除爲不可逆操作,希望大家謹慎使用。

數據操作

1 新增數據

對於數據的新增操作,有兩種方法。

第 1 種:給全表字段插入數據,不需要指定字段列表,但要求數據的值出現的順序必須與表中的字段出現的順序一致,並且凡是非數值數據,都需要用引號(建議使用單引號)括起來。
基本語法:insert into + 表名 + values(值列表)[,(值列表)];
示例:insert into test valus('charies',18,'3.1');
第 2 種:給部分字段插入數據,需要選定字段列表,字段列表中字段出現的順序與表中字段的順序無關,但值列表中字段值的順序必須與字段列表中的順序保持一致。
基本語法:insert into + 表名(字段列表) + values(值列表)[,(值列表);
示例:insert into test(age,name) valus(18,'guo');

2 查詢數據

查看全部 --> 基本語法:select * from + 表名 + [where 條件];

示例:select * from test;
查看部分 --> 基本語法:select + 字段名稱[,字段名稱] + from + 表名 + [where 條件];

示例:select name,age,grade from test where age = '18';

3 更新數據

基本語法:update + 表名 + set + 字段 = 值 + [where 條件];

示例:update test set age = 20 where name = 'guo';
在這裏,建議儘量加上where條件,否則的話,操作的就是全表數據。

此外,判斷更新操作是否成功,並不是看 SQL 語句是否執行成功,而是看是否有記錄受到影響,即affected的數量大於1時,纔是真正的更新成功。

4 刪除數據

基本語法:delete from + 表名 + [where 條件];

示例:delete from test where grade = '3.1';
當然,我們也可以用drop來實現刪除操作,不過與delete相比,drop的威力更強,其在執行刪除操作的時候,不僅會刪除數據,還會刪除定義並釋放存儲空間;而delete在執行刪除操作的時候,僅會刪除數據,並不會刪除定義和釋放存儲空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章