文章目錄
數據庫
數據庫(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 次。 |