1钧排、數(shù)據(jù)庫:
存儲數(shù)據(jù)的倉庫死相、高效地存儲和處理數(shù)據(jù)的介質(介質主要是兩種:磁盤和內存)
分類:基于存儲介質的不同:分為關系型數(shù)據(jù)庫(SQL)和非關系型數(shù)據(jù)庫(NoSQL:Not Only SQL)
2、關系型數(shù)據(jù)庫:
是一種建立在關系模型(數(shù)學模型)上的數(shù)據(jù)庫
? ? ?? 大型{Oracle士骤、DB2}秃踩、中型{SQL Server衷快、MySQL}、小型{Access搔啊、SQLite等}
? ? ?? 安全(保存磁盤柬祠,基本不可能丟失),容易理解负芋,比較浪費空間(二維表)
p:關系模型:包含數(shù)據(jù)結構漫蛔、操作指令集合、完整性約束
3旧蛾、非關系型數(shù)據(jù)庫:
Memcached莽龟、MongoDB、Redis
? ? ? ? ?? 效率高锨天,不安全(斷電丟失)
數(shù)據(jù)庫系統(tǒng):DBS(Database System):是一種虛擬系統(tǒng)毯盈,將多種內容關聯(lián)起來的稱呼(DBS = DBMS + DB)
DBMS:Database Management System,數(shù)據(jù)庫管理系統(tǒng)病袄,專門管理數(shù)據(jù)庫
DBA:Database Administrator稿壁,數(shù)據(jù)庫管理員
4琉雳、SQL:
(Structured Query Language)結構化查詢語言
SQL分為三個部分:DDL數(shù)據(jù)定義語言戒傻、DML數(shù)據(jù)操作語言纸泄、DCL數(shù)據(jù)控制語言
DDL:用來維護存儲數(shù)據(jù)的結構(數(shù)據(jù)庫、表)幅慌,代表指令:create宋欺、drop、alter等
DML:用來對數(shù)據(jù)進行操作(數(shù)據(jù)表中的內容),代表指令:insert迄靠、delete秒咨、update等喇辽。其中DML內部又單獨進行了一個分類:DQL掌挚,如select
DCL:主要是負責權限管理(用戶),代表指令:grant菩咨、revoke等
5吠式、交互方式:
*客戶端連接認證:連接服務器、認證身份(mysql.exe -hPup)
*客戶端發(fā)送SQL指令
*服務器接收SQL指令抽米,并處理SQL指令特占,返回操作結果
*客戶端接收結果,并顯示結果
*斷開連接
6云茸、MySQL服務器內部對象:
系統(tǒng)(DBMS)是目、數(shù)據(jù)庫(DB)、數(shù)據(jù)表(Table)标捺、字段(Field)
SQL基本操作:庫操作懊纳、表操作(包含字段操作)、數(shù)據(jù)操作
7亡容、庫操作:
create database 數(shù)據(jù)庫名字 [庫選項];
字符集設定:charset/character set 具體字符集(數(shù)據(jù)存儲的編碼格式嗤疯,常用的有:GBK和UTF8)
校對集設定:collate 具體校對集(數(shù)據(jù)比較的規(guī)則)
數(shù)據(jù)庫名字不能用關鍵字(已經(jīng)被系統(tǒng)使用的字符)或者保留字(將來系統(tǒng)可能會用到的字符)
每個數(shù)據(jù)庫下都有一個opt文件,保存了庫選項
查看所有數(shù)據(jù)庫:show databases;
查看指定部分的數(shù)據(jù)庫(模糊查詢):show databases like 'pattern';
查看數(shù)據(jù)庫的創(chuàng)建語句:show create database 數(shù)據(jù)庫名字;
數(shù)據(jù)庫名字不可以修改
數(shù)據(jù)庫的修改僅限庫選項闺兢,即字符集和校對集(校對集依賴字符集)
alter database 數(shù)據(jù)庫名字 [庫選項];
charset/character set [=] 字符集
collate 校對集
刪除數(shù)據(jù)庫:drop database 數(shù)據(jù)庫名字;
8茂缚、表操作:
*新增數(shù)據(jù)表
create table [if not exists] 表名(
字段名字 數(shù)據(jù)類型,
……
字段名字 數(shù)據(jù)類型
) [表選項];
*控制表的表現(xiàn)
字符集:charset/character set 具體字符集;? ?? -- 保證表中數(shù)據(jù)存儲的字符集
校對集:collate 具體校對集
存儲引擎:engine 具體的存儲引擎(innodb和myisam)
出錯解決:1create table 數(shù)據(jù)庫名.表名();?? 2進入數(shù)據(jù)庫環(huán)境:use 數(shù)據(jù)庫名字;
查看數(shù)據(jù)表:
查看所有表:show tables;
查看部分表(模糊查詢):show tables like 'pattern';
查看表的創(chuàng)建語句:show create table 表名;
查看表結構(表中的字段信息):desc/describe/show columns from 表名;
修改數(shù)據(jù)表:修改表名:rename table 舊表名 to 新表名;
修改表選項(字符集、校對集屋谭、存儲引擎都可以修改):alter table 表名 表選項 [=] 值;
刪除數(shù)據(jù)表:drop table 表名1,表名2……;
9脚囊、字段操作:
新增字段:alter table 表名 add [column] 字段名 數(shù)據(jù)類型 [列屬性] [位置];
first:第一個位置
after:在哪個字段之后:after 字段名;
修改字段:alter table 表名 modify 字段名 數(shù)據(jù)類型 [列屬性] [位置];
重命名字段:alter table 表名 change 舊字段 新字段名 數(shù)據(jù)類型 [列屬性] [位置];
刪除字段:alter table 表名 drop 字段名;
10、數(shù)據(jù)操作:
insert into 表名 values(值列表)[,(值列表)];
insert into 表名 (字段列表) values (值列表) [,(值列表)];
查看所有數(shù)據(jù):select * from 表名 [where 條件];
查看指定字段桐磁、指定條件的數(shù)據(jù):select 字段列表 from 表名 [where 條件];
update 表名 set 字段 = 值 [where 條件];
建議都有where悔耘,否則就是更新全部
刪除是不可逆的,謹慎刪除:delete from 表名 [where條件];
11:所意、小注意點:
行/記錄:row/record
列/字段:column/field
p:pattern是匹配模式:%表示匹配多個字符淮逊、_表示匹配單個字符