MySQL資料庫基礎語法(一)

2021-08-25 06:01:03 字數 4709 閱讀 8149

mysql資料庫的基本操作(增刪改查), 以及一些高階操作(檢視, 觸發器,函式,儲存過程等), 和c/c++操作mysql資料庫

資料庫: database, 儲存資料的倉庫

資料庫: 高效的儲存和處理資料的介質(介質主要是兩種: 磁碟和記憶體)

資料庫基於儲存介質的不同: 進行了分類,分為兩類: 關係型資料庫(sql)和非關係型資料庫(nosql: not only sql, 不是關係型的資料庫都叫做非關係型資料庫)

關係型資料庫

大型: oracle, db2

中型: sql-server, mysql等

小型: access等

非關係型資料庫: memcached, mongodb, redis(同步到磁碟)

關係型資料庫: 安全(儲存磁碟基本不可能丟失), 容易理解, 比較浪費空間(二維表)

非關係型資料庫: 效率高, 不安全(斷電丟失)

關係型資料庫

關係型資料庫: 是一種建立在關係模型(數學模型)上的資料庫.

關係模型: 一種所謂建立在關係上的模型. 關係模型包含三個方面:

資料結構: 資料儲存的問題, 二維表(有行和列)

操作指令集合: 所有sql語句

完整性約束: 表內資料約束(欄位與字段), 表與表之間約束(外來鍵)

資料庫: database

資料庫系統: dbs(database system): 是一種虛擬系統, 將多種內容關聯起來的稱呼

dbs = dbms + db

dbms: database management system, 資料庫管理系統, 專門管理資料庫

dba: database administrator,資料庫管理員

行/記錄: row/record, 本質是乙個東西: 都是指表中的一行(一條記錄): 行是從結構角度出發,記錄是從資料角度出發

列/字段: column/field, 本質是乙個東西

ddl: data definition language, 資料定義語言, 用來維護儲存資料的結構(資料庫,表), 代表指令: create, drop, alter等

dml: data manipulation language, 資料操作語言, 用來對資料進行操作(資料表中的內容), 代表指令: insert, delete,update等: 其中dml內部又單獨進行了乙個分類: dql(data query language: 資料查詢語言, 如select)

dcl: data control language, 資料控制語言, 主要是負責許可權管理(使用者), 代表指令: grant,revoke等

將mysql伺服器內部物件分成了四層: 系統(dbms) -> 資料庫(db) -> 資料表(table) -> 字段(field)

基本操作: crud

將sql的基本操作根據操作物件進行分類 ,分為三類: 庫操作, 表操作(字段), 資料操作

庫操作

對資料庫的增刪改查.

基本語法

create

database 資料庫名字 [庫選項];

庫選項: 用來約束資料庫, 分為兩個選項

字符集設定: charset/character set 具體字符集(資料儲存的編碼格式):

常用字符集: gbk和utf8

校對集設定: collate 具體校對集(資料比較的規則)

其中: 資料庫名字不能用關鍵字(已經被使用的字元)

或者保留字(將來可能會用到的

當建立資料庫的sql語句執行之後,發生了什麼?

1.在資料庫系統中,增加了對應的資料庫資訊

會在儲存資料的資料夾下: data目錄,建立乙個對應資料庫名字的資料夾

1.檢視所有資料庫: show databases;

2.檢視指定部分的資料庫: 模糊查詢

show databases like 『pattern』;

-- pattern是匹配模式

%: 表示匹配多個字元

_: 表示匹配單個字元

3.檢視資料庫的建立語句: show

create

database 資料庫名字;

alter

database 資料庫名字 [庫選項];

charset/ character set [=] 字符集

所有的操作中: 刪除是最簡單

drop

database 資料庫名字

當刪除資料庫語句執行之後,發生了什麼?

1.在資料庫內部看不到對應的資料庫

2.在對應的資料庫儲存的資料夾內: 資料庫名字對應的資料夾也被刪除

(級聯刪除:裡面的資料表全部刪除)

注意:資料庫的刪除不是鬧著玩的,不要隨意刪除,應該先進行備份後操作.

(刪除不可逆)

表與字段是密不可分的

進入資料庫環境: use 資料庫名字;

create

table [if

notexists] 表名(

欄位名字 資料型別,

欄位名字 資料型別 -- 最後一行不需要逗號

)[表選項];

if

not exists: 如果表名不存在,那麼就建立,否則不執行建立**: 檢查功能

表選項: 控制表的表現

字符集: charset/character set 具體字符集; -- 保證表中資料儲存的字符集

校對集: collate 具體校對集;

儲存引擎: engine 具體的儲存引擎(innodb和myisam)

當建立資料表的sql指令執行之後,到底發生了什麼?

1.指定資料庫下已經存在對應的表

2.在資料庫對應的資料夾下,會產生對應表的結構檔案(跟儲存引擎有關係)

例如:student.frm

資料庫能檢視的方式,表都可以檢視.

1.  檢視所有表: show tables;

2.檢視部分表: 模糊匹配: show tables like 『pattern』;

3.檢視表的建立語句: show

create

table 表名;

表本身存在, 還包含字段: 表的修改分為兩個部分: 修改表本身和修改字段

修改表本身

表本身可以修改: 表名和表選項

修改表名: rename table 老表名 to 新錶名;

修改表選項: 字符集,校對集和儲存引擎

alter

table 表名 表選項 [=] 值;

字段操作很多: 新增, 修改, 重名, 刪除

新增字段

alter

table 表名 add [column] 欄位名 資料型別 [列屬性] [位置];

位置: 欄位名可以存放表中的任意位置

first: 第乙個位置

after: 在哪個字段之後: after 欄位名; 預設的是在最後乙個字段之後

修改字段: 修改通常是修改屬性或者資料型別

alter

table 表名 modify 欄位名 資料型別 [屬性] [位置];

重新命名字段

alter

table 表名 change 舊欄位 新欄位名 資料型別 [屬性] [位置];

刪除字段

alter

table 表名 drop 欄位名;

刪除資料表

drop

table 表名1,表名2...;

-- 可以一次性刪除多張表

當刪除資料表的指令執行之後發生了什麼?

1.在表空間中,沒有了指定的表(資料也沒有了)

2.在資料庫對應的資料夾下, 表對應的檔案(與儲存引擎有關)也會被刪除

注意: 刪除有危險,操作需謹慎(不可逆)

方案1: insert

into 表名 values(值列表) -- 可以一次性插入多條記錄

方案2: 給部分字段插入資料,需要選定字段列表: 字段列表出現的順序與字段的

順序無關; 但是值列表的順序必須與選定的字段的順序一致.

insert

into 表名 (字段列表) values (值列表);

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

檢視指定字段,指定條件的資料.

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

-- 建議都有where: 要不是更新全部

更新不一定會成功: 如沒有真正要更新的資料

刪除是不可逆的: 謹慎刪除

delete from 表名 [where條件];

資料庫SQL 基礎語法(一)

資料庫結構 1.服務端 用於接收並處理其它程式發出的請求的程式 軟體 或者是安裝此類程式的裝置 計算機 2.客戶端 向伺服器發出請求的程式 軟體 或者是安裝此類程式的裝置 計算機 3.庫 就是一堆表組成的資料集合 4.表 table 類似excel,由行和列組成的二維表喪。5.欄位 表的列 垂直方向...

Mysql資料庫基本語法(一)

前記 正文 一 資料庫的操作 顯示所有的資料庫 show databases 建立資料庫 create database databasename 刪除資料庫 drop database databasename 選擇資料庫 use databasename 二 資料庫中表的字段的型別 數值型別 日...

MySQL資料庫基礎語法(四) 20 5 29

1 多表之間的關係 分類1 一對一關係 人和身份證一一對應 2 一對多關係 學校和學生關係 乙個學校有多個學生,乙個學生只能在乙個學校 3 多對多關係 學生和課程關係 乙個學生可以選擇多個課程,乙個課程可以被多個學生選擇關係實現 1 一對多關係 學校和學生關係 實現方式 在多的一方建立外來鍵,指向一...