MySQL-1 MySQL基礎

1. SQL基本操作

1.1 庫操作

1.1.1 新增

Create database 數據庫名字 [庫選項];
庫選項: 用來約束數據庫, 分爲兩個選項

  • 字符集設定: charset/character set 具體字符集(數據存儲的編碼格式): 常用字符集: GBK和UTF8
  • 校對集設定: collate 具體校對集(數據比較的規則)

其中,數據庫名字不能用關鍵字(已經被使用的字符)或者保留字(將來可能會用到的)。如果非要使用關鍵字或者保留字,那麼必須使用反引號(esc鍵下面的鍵在英文狀態下的輸出:`)

1.1.2 查看

  1. 查看所有數據庫: show databases;
  2. 查看指定部分的數據庫: 模糊查詢 Show databases like ‘pattern’; pattern是匹配模式
  • %: 表示匹配多個字符
  • _: 表示匹配單個字符
  1. 查看數據庫的創建語句: show create database 數據庫名字

1.1.3 修改

數據庫名字不可以修改.

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

Alter database 數據庫名字 [庫選項] 
Charset/ character set [=] 字符集 
Collate 校對集

1.1.4 刪除

Drop database 數據庫名字

1.2 表操作

1.2.1 新增

Create table [if not exists] 表名(
字段名字 數據類型,
字段名字 數據類型	-- 最後一行不需要逗號
)[表選項];

If not exists: 如果表名不存在,那麼就創建,否則不執行創建代碼: 檢查功能
表選項: 控制表的表現

  • 字符集: charset/character set 具體字符集; – 保證表中數據存儲的字符集
  • 校對集: collate 具體校對集;
  • 存儲引擎: engine 具體的存儲引擎(innodb和myisam)

任何一個表的設計都必須指定數據庫.

方案1: 顯示的指定表所屬的數據庫
Create table 數據庫名.表名(); – 將當前數據表創建到指定的數據庫下
方案2: 隱式的指定表所屬數據庫: 先進入到某個數據庫環境,然後這樣創建的表自動歸屬到某個指定的數據庫.
進入數據庫環境: use 數據庫名字

1.2.2 查詢

數據庫能查看的方式,表都可以查看.

  1. 查看所有表: show tables;
  2. 查看部分表: 模糊匹配: show tables like ‘pattern’;
  3. 查看錶的創建語句: show create table 表名;
  4. 查看錶結構: 查看錶中的字段信息 Desc/describe/(show columns from) 表名;

1.2.3 修改

表的修改分爲兩個部分: 修改表本身和修改字段
(1)修改表本身
表本身可以修改: 表名和表選項
修改表名: rename table 老表名 to 新表名;
修改表選項: 字符集,校對集和存儲引擎: Alter table 表名 表選項 [=] 值
(2)修改字段
字段操作很多: 新增, 修改, 重名, 刪除
新增字段
Alter table 表名 add [column] 字段名 數據類型 [列屬性] [位置];
位置: 字段名可以存放表中的任意位置

  • First: 第一個位置
  • After: 在哪個字段之後: after 字段名; 默認的是在最後一個字段之後

修改字段:
修改通常是修改屬性或者數據類型
Alter table 表名 modify 字段名 數據類型 [屬性] [位置];
重命名字段
Alter table 表名 change 舊字段 新字段名 數據類型 [屬性] [位置];
刪除字段
Alter table 表名 drop 字段名;

1.2.4 刪除

Drop table 表名1,表名2...; – 可以一次性刪除多張表

1.3 數據操作

1.3.1新增

有兩種方案

方案1: 給全表字段插入數據, 不需要指定字段列表: 要求數據的值出現的順序必須與表中設計的字段出現的順序一致: 凡是非數值數據,都需要使用引號(建議是單引號)包裹

Insert into 表名 
values(值列表)[,(值列表)];

方案2: 給部分字段插入數據,需要選定字段列表: 字段列表出現的順序與字段的順序無關; 但是值列表的順序必須與選定的字段的順序一致.

Insert into 表名 (字段列表) 
values (值列表)[,(值列表)];

1.3.2查詢

Select */字段列表 from 表名 [where條件];

1.3.3修改

Update 表名 set 字段 = 值 [where條件]

1.3.4刪除

Delete from 表名 [where條件];

2.亂碼問題

中文數據問題本質是字符集問題
查看服務器到底識別哪些字符集:
Show character set
查看服務器默認的跟客戶端打交道的字符集:
Show variables like ‘character_set%’;
在這裏插入圖片描述
解決方案(界定客戶端是GBK編碼):
(1)改變服務器,默認的接收字符集爲GBK;
Set character_set_client = gbk;
(2)修改服務器給客戶端的數據字符集爲GBK
Set character_set_results = GBK;

Set 變量 = 值; 修改只是會話級別(當前客戶端,當次連接有效: 關閉失效)

設置服務器對客戶端的字符集的認識: 可以使用快捷方式: set names 字符集
Set names gbk;
等價於 character_set_client,character_set_results,character_set_connection gbk;
Connection連接層: 是字符集轉變的中間者,如果統一了效率更高,不統一也沒問題.

3.校對集

校對集: 數據比較的方式

校對集有三種格式

  • _bin: binary,二進制比較, 取出二進制位,一位一位的比較, 區分大小寫
  • _cs: case sensitive(大小寫敏感): 區分大小寫
  • _ci: case insensitice(大小寫不敏感):不區分大小寫

查看數據庫所支持的校對集: show collation;
校對集應用: 只有當數據產生比較的時候,校對集纔會生效.
重要】校對集: 必須在沒有數據之前聲明好,如果有了數據,那麼再進行校對集修改: 那麼修改無效.

-- 新增 --
[]
Create database 數據庫名字 [庫選項]

[]
Create table [if not exists] 數據庫名字.表名(
字段名字 數據類型,
字段名字 數據類型	-- 最後一行不需要逗號
)[表選項]
use 數據庫名字;
Create table [if not exists] 表名(
字段名字 數據類型,
字段名字 數據類型	-- 最後一行不需要逗號
)[表選項]

[數據]
Insert into 表名 values(值列表)[,(值列表)]
Insert into 表名 (字段列表) values (值列表)[,(值列表)]

--查詢--
[]
show databases
Show databases like ‘pattern
show create database 數據庫名字
[]
show tables
show tables like ‘pattern’
show create table 表名`
Desc/describe/(show columns from) 表名`
[數據]
Select */字段列表 from 表名 [where條件]

-- 修改--
[]
Alter database 數據庫名字 [庫選項] Charset/ character set [=] 字符集  Collate 校對集
[]
rename table 老表名 to 新表名
Alter table 表名 表選項 [=]Alter table 表名 add [column] 字段名 數據類型 [列屬性] [位置]
Alter table 表名 modify 字段名 數據類型 [屬性] [位置]
Alter table 表名 change 舊字段 新字段名 數據類型 [屬性] [位置]
Alter table 表名 drop 字段名
[數據]
Update 表名 set 字段 =[where條件]

-- 刪除--
[]
Drop database 數據庫名字 
[]
Drop table 表名1,表名2...
[數據]
Delete from 表名 [where條件]

【整理自網上資料】

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