簡介
MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,屬于 Oracle 旗下產品,MySQL 是最流行的關系型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系資料庫管理系統) 應用軟體之一,
MySQL是一種關系型資料庫管理系統,關系資料庫將資料保存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度并提高了靈活性,
DDL(資料定義語言)
操作資料庫
-- 查詢
show databases;
-- 創建資料庫
create database 資料庫名稱;
-- 創建資料庫(判斷,如果不存在則創建)
create database if not exists 資料庫名稱;
-- 洗掉資料庫
drop database 資料庫名稱;
-- 洗掉資料庫(判斷,如果存在則洗掉)
drop database if exists 資料庫名稱;
-- 查看當前使用的資料庫
select database();
-- 使用資料庫
use 資料庫名稱;
操作表
-- 查詢表
show tables;
-- 查詢表結構
desc 表名稱;
-- 創建表
create table 表名稱(
欄位名1 資料型別1,
欄位名2 資料型別2,
欄位名3 資料型別3,
...
欄位名n 資料型別n
);
-- 洗掉表
drop table 表名;
-- 洗掉表時判斷表是否存在
drop table if exists 表名;
-- 修改表
alter table 表名 rename to 新的表名;
-- 添加一列
alter table 表名 add 列名 資料型別;
-- 修改資料型別
alter table 表名 modify 列名 新資料型別;
-- 修改列名和資料型別
alter table 表名 change 列名 新列名 新資料型別;
-- 洗掉列
alter table 表名 drop 列名;
資料型別
| 資料型別 | 大小 | 描述 |
|---|---|---|
| MEDIUNINT | 3 bytes | 大整數值 |
| INT或INTEGER | 4 bytes | 大整數值 |
| BIGINT | 8 bytes | 極大整數值 |
| FLOAT | 4 bytes | 單精度浮點數值 |
| DOUBLE | 8 bytes | 雙精度浮點數值 |
| DECIMAL | 小數值 | |
| DATE | 3 | 日期值 |
| TIME | 3 | 時間值或持續時間 |
| YEAR | 1 | 年份值 |
| DATETIME | 8 | 混合日期和時間值 |
| TIMESTAMP | 4 | 混合日期和時間值、時間戳 |
| CHAR | 0-255 bytes | 定長字串 |
| VARCHAR | 0-65535 bytes | 變長字串 |
| TINYBLOB | 0-255 bytes | 不超過255個字符的二進制字串 |
| TINYTEXT | 0-255 bytes | 短文本字串 |
| BLOB | 0-65535 bytes | 二進制形式的長文本資料 |
| TEXT | 0-65535 bytes | 長文本資料 |
| MEDIUMBLOB | 0-16777215 bytes | 二進制形式的中等長度文本資料 |
| MEDIUMTEXT | 0-16777215 bytes | 中等長度文本資料 |
| LONGBLOB | 0-4294967295 bytes | 二進制形式的極大文本資料 |
| LONGTEXT | 0-4294967295 bytes | 極大文本資料 |
DML(資料操縱語言)
添加資料
-- 給指定列添加資料
insert into 表名(列名1,列名2,...) values (值1,值2,...);
-- 給全部列添加資料
insert into 表名 values (值1,值2,...);
-- 批量添加資料
insert into 表名(列名1,列名2,...) values (值1,值2,...),(值1,值2,...),(值1,值2,...)...;
insert into 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...)...;
更新資料
-- 更新資料
update 表名 set 列名1=值1, 列名2=值2;
洗掉資料
-- 洗掉資料
delete from 表名 where 列名1=值1;
DQL(資料查詢語言)
條件查詢
select 欄位串列 from 表名 where 條件串列;
分頁查詢
select 欄位串列 from 表名 limit 起始索引, 查詢條目數;
-- 起始索引:從0開始
-- 計算公式:起始索引=(當前頁碼-1)*每頁顯示條數
約束
概念
約束是作用于表中列上的規則,用于限制加入表的資料
約束的存在保證了資料庫中資料的正確性、有效性和完整性
分類
| 約束名稱 | 描述 | 關鍵字 |
|---|---|---|
| 非空約束 | 保證列中所有資料不能有null值 | NOT NULL |
| 唯一約束 | 保證列中所有資料各不相同 | UNIQUE |
| 主鍵約束 | 主鍵是一行資料的唯一標識,要求非空白唯一 | PRIMARY KEY |
| 檢查約束 | 保證列中的值滿足某一條件 | CHECK |
| 默認約束 | 保存資料時,未指定值則采用默認值 | DEFAULT |
| 外鍵約束 | 外鍵用來讓兩個表的資料之間建立鏈接,保證資料的一致性和完整性 | FOREIGN KEY |
??MySql不支持檢查約束
以外鍵約束為例
-- 創建表時添加外鍵約束
create table 表名(
列名 資料型別,
...
[CONSTRAINT] [外鍵名稱] FOREIGN KEY(外鍵列名) REFERENCES 主表(主表列名)
);
-- 建完表后添加外鍵約束
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY(外鍵欄位名稱) REFERENCES 主表名稱(主表列名稱);
-- 洗掉約束
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;
資料庫設計
一對多
一對多關系是建立在兩張表之間的關系,一個表中的一條資料可以對應另一個表中的多條資料,記住:外鍵永遠在多方,外鍵允許重復,允許含有空值,
多對多
需要建立一個中間表,中間表里建立兩個列,然后需要用這兩個列作為這個表的聯合主鍵,然后每個列在作為外鍵參照各自的表的主鍵,
一對一
一對一關系多用于表拆分,將一個物體中經常使用的欄位放在一張表,不經常使用的欄位放另一個表,用于提升查詢性能
實作方式:在任意一方加入外鍵,關聯另一方主鍵,并且設定外鍵為唯一(UNIQUE)
多表查詢
連接查詢
-
內連接:相當于查詢A B交集資料
-- 隱式內連接 SELECT 欄位串列 FROM 表1,表2... WHERE 條件; -- 顯示內連接 SELECT 欄位串列 FROM 表1 [INNER] JOIN 表2 ON 條件; -
外連接:
-
左外連接:相當于查詢A表所有資料和交集部分資料
SELECT 欄位串列 FROM 表1 LEFT [OUTER] JOIN 表2 ON 條件; -
右外連接:相當于查詢B表所有資料的交集部分資料
SELECT 欄位串列 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 條件;
-
子查詢
-
概念:
- 查詢中嵌套查詢,稱嵌套查詢為子查詢
-
根據查詢結果不同,作用不同:
-
單行單列
SELECT 欄位串列 FROM 表 WHERE 欄位名=(子查詢); -
多行單列
SELECT 欄位串列 FROM 表 WHERE 欄位名 IN (子查詢); -
多行多列
SELECT 欄位串列 FROM (子查詢) WHERE 條件;
-
事務
簡介
- 資料庫的事務是一種機制、一個操作序列,包含了一組資料庫操作命令
- 事務把所有的命令作為一個整體一起向系統提交或撤銷操作請求,即這一組資料庫命令要么同時成功,要么同時失敗
- 事務是一個不可分割的作業邏輯單元
四大特征
- 原子性(Atomicity):事務是不可分割的最小操作單元,要么同時成功,要么同時失敗
- 一致性(Consistency):事務完成時,必須使所有的資料都保持一致狀態
- 隔離性(Isolation):多個事務之間,操作的可見性
- 持久性(Durability):事務一旦提交或回滾,它對資料庫中的資料的改變就是永久的
用法
-- 開啟事務
START TRANSACTION 或者 BEGIN;
-- 提交事務
COMMIT;
-- 回滾事務
ROLLBACK;
mysql 事務默認自動提交
-- 查看事務的默認提交方式
SELECT @autocommit;
-- 1. 自動提交 0.手動提交
-- 修改事務提交方式
set @@autocommit = 0;
案例:
MySQL事務 - 萬般自然 - 博客園 (cnblogs.com)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/458156.html
標籤:其他
上一篇:mysql基本資料型別
下一篇:開源之夏 2022 與您相約
