MySQL - 速查&筆記

數據庫

數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫

關係型數據庫

建立在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據

關係數據庫管理系統(Relational Database Management System)的特點:

  • 1.數據以表格的形式出現
  • 2.每行爲各種記錄名稱
  • 3.每列爲記錄名稱所對應的數據域
  • 4.許多的行和列組成一張表單
  • 5.若干的表單組成 Database

連接數據庫

# 啓動數據庫
➜ brew services start mysql
# 關閉數據庫
➜ brew services stop mysql
# 登錄數據庫
➜ mysql -u root -p  
Enter password: ******
# 退出數據庫
mysql> exit
Bye

MySQL基礎

數據庫操作(DDL)

1、創建數據庫

CREATE DATABASE [IF NOT EXISTS] `db_name` [[DEFAULT] CHARACTER [=] `charset_name`]

2、查看當前服務器下的數據庫列表

SHOW DATABASES

3、查看指定數據庫的定義

SHOW CREATE DATABASE `db_name`

4、修改指定數據庫的編碼方式

ALTER DATABASE `db_name` [DEFAULT] CHARACTER SET [=] `charset_name`

5、打開指定數據庫

USE `db_name`

6、刪除指定數據庫

DROP DATABASE [IF EXISTS] `db_name`

7、顯示當前打開的數據庫名稱

SELECT DATABASE()

8、查看上一步操作產生的警告信息

SHOW WARNINGS;

數據表的的操作

1、什麼是表?

  • 數據表示數據庫最重要的組成部分之一,是其他對象的基礎
  • 數據表是存儲數據的數據結構
  • 數據表由行(row)和 列(column)構成的二維網絡
  • 數據表一定先有表結構,再有數據
  • 數據表至少有一列,可以沒有行或者多行
  • 數據表名稱要求唯一,而且不要包含特殊字符

2、如何創建數據表

CREATE TABLE [IF NOT EXISTS] table_name(字段名稱 字段類型 [完整性約束條件] ...) 
ENGINE=引擎名稱 CHARSET='編碼方式';

完整性約束條件

  • PRIMARY KEY 主鍵
  • AUTO_INCREMENT自增長
  • FOREIGN KEY 外鍵
  • NOT NULL 非空
  • DEFAULT 默認值
  • UNIQUE 唯一

3、查看數據庫中的數據表以及表結構

# 查看數據庫下的表
SHOW TABLES

# 查看指定表的表結構
DESC table_name

DESCRIBE table_name

SHOW COLUMNS FROM table_name

4、修改表結構

修改表名

ALTER TABLE table_name RENAME [TO | AS] new_name

添加字段

ALTER TABLE table_name ADD 字段名稱  字段類型 [完整性約束條件] [FIRST | AFTER] 字段名稱

刪除字段

ALTER TABLE table_name DROP 字段名稱

修改字段

ALTER TABLE table_name MODIFY 字段名稱 字段類型 [完整性約束條件] [FIRST | AFTER] 字段名稱

修改字段名稱

ALTER TABLE table_name CHANGE 舊字段名稱 新字段名稱 字段類型 [完整性約束條件] [FIRST | AFTER] 字段名稱

添加默認值

ALTER TABLE table_name ALTER 字段名稱 SET DEFAULT 默認值

刪除默認值

ALTER TABLE table_name ALTER 字段名稱 DROP DEFAULT

修改表的存儲引擎

ALTER TABLE table_name ENGINE=存儲引擎名稱

設置自增長的值

ALTER TABLE table_name AUTO_INCREMENT=值

5、刪除數據表

DROP TABLE [IF EXISTS] table_name [, table_name...]

數據的操作(DML)

1、插入數據

# 不指定具體的字段名
INSERT [INTO] table_name VALUES | VALUE(值...)

# 列出指定字段
INSERT [INTO] table_name(字段名稱1...) VALUES | VALUE(值1...)

# 同時出入多條記錄
INSERT [INTO] table_name[(字段名稱...)] VALUES(值...), (值...)...

# 通過SET 形式插入記錄
INSERT [INTO] table_name SET 字段名稱=值,...

# 將查詢結果插入到表中
INSERT [INTO] table_name[(字段名稱, ...)] SELECT 字段名稱 FROM table_name
[WHERE 條件]

2、更新數據

UPDATE table_name SET 字段名稱=值, ... 
[WHERE 條件]
[ORDER BY 字段名稱]
[LIMIT 限制條數]

3、刪除數據

DELETE FROM table_name 
[WHERE 條件] 
[ORDER BY 字段名稱] 
[LIMIT 限制條件]

# 徹底清空數據表
TRUNCATE [TABLE] table_name

查詢數據操作(DQL)

1、查詢記錄

每一個表達式表示想要的一列,必須至少有一列,多個列之間用逗號分隔
* 表示所有列, table_name.* 可以表示命名錶的所有列
查詢表達式可以使用 [AS] alias_name 爲其賦予別名

查詢表達式

簡單版

SELECT column_name [,column_name | *] FROM table_name 
[WHERE Clause] 
[LIMIT N]
[ OFFSET M]

完整版

SELECT select_expr [, select_expr ...] 
[FROM table_name
[WHERE 條件] 
[GROUP BY { col_name | position } [ASC | DESC], ... 分組] 
[HAVING 條件 對分組結果進行二次篩選]
[ORDER BY {col_name | position} [ASC | DESC], ...排序] 
[LIMIT 限制顯示條數]
]

2、WHERE 條件

WHERE 子句添加到 SELECT 語句中, 可以有條件地從表中選取數據

SELECT field1 [, field2,...fieldN] FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....

3、查詢結果分組

SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
  • 配合 GROUP_CONCAT() 得到分組詳情
  • 配合聚合函數
    • 計算數量:COUNT()
    • 求最大值:MAX()
    • 求最小值:MIN()
    • 求平均值:AVG()
    • 求和: SUM()
  • 配合WITH ROLLUP 記錄上面所有記錄的總和

4、HAVING 子句

通過 HAVING 子句對分組結果進行二次篩選

SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
HAVING conditions;

5、ORDER BY排序

通過 ORDER BY 對查詢結果排序

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]

6、LIMIT限制查詢結果顯示條數

LIMIT 顯示條數 / LIMIT 偏移量,顯示條數

SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
LIMIT [offset_count,] limit_count;

7、正則表達式

SELECT column_name FROM table_name WHERE column_name REGEXP '正則表達式';

常見REGEXP 操作符

模式 描述
^ 匹配以什麼字符串的開始,例如:^A 表示以A開頭
$ 匹配以什麼字符串的結尾,例如:8$ 表示以8結尾
. 匹配除 “\n” 之外的任何單個字符
[...] 字符集合, 匹配所包含的任意一個字符
[^...] 負值字符集合, 匹配未包含的任意字符
p1 | p2 | p3 匹配 p1 或 p2 或 p3
* 匹配前面的子表達式零次或多次, 例如,go* 能匹配 “g” 以及 “goo”
+ 匹配前面的子表達式一次或多次。例如,‘go+’ 能匹配 “go” 以及 “goo”,但不能匹配 “g”
{n} n 是一個非負整數。匹配確定的 n 次
{n,m} m 和 n 均爲非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章