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 一對多關係 學校和學生關係 實現方式 在多的一方建立外來鍵,指向一...