什么是數(shù)據(jù)庫?
- 數(shù)據(jù)庫(database):存儲數(shù)據(jù)的倉庫
- 高效的存儲和處理數(shù)據(jù)的介質(zhì)(介質(zhì)主要是兩種:磁盤和內(nèi)存)
數(shù)據(jù)庫的分類:
基于存儲介質(zhì)的不同:分為關(guān)系型數(shù)據(jù)庫(sql)和非關(guān)系型數(shù)據(jù)庫(nosql:not only sql)
不同數(shù)據(jù)庫陣營的產(chǎn)品:
關(guān)系型數(shù)據(jù)庫:
大型:Oracle,DB2
中型:SQL Server,MYSQL
小型:Acces0s等
非關(guān)系型數(shù)據(jù)庫:
Memcached,MongoDB,Redis
兩種
數(shù)據(jù)庫陣營的區(qū)別:
關(guān)系型數(shù)據(jù)庫:安全(保存磁盤,基本不可能丟失),容易理解,比較浪費空間(二維表)
非關(guān)系型數(shù)據(jù)庫:效率高,不安全(斷電丟失)
什么是關(guān)系型數(shù)據(jù)庫?
- 是一種建立在關(guān)系模型(數(shù)學(xué)模型)上的數(shù)據(jù)庫
- 關(guān)系模型:一種所謂建立在關(guān)系上的模型
- 關(guān)系模型包含三個方面:
數(shù)據(jù)結(jié)構(gòu):用于解決數(shù)據(jù)庫存儲的問題,二維表(有行和列)
操作指令集合:所有sql語句
完整性約束:表內(nèi)數(shù)據(jù)約束(字段與字段),表與表之間約束(外鍵)
表是由表頭和數(shù)據(jù)部分組成
表頭:即字段名,用來規(guī)定數(shù)據(jù)的名字
數(shù)據(jù)部分:實際存儲的數(shù)據(jù)單元
關(guān)系型數(shù)據(jù)庫,需要維護(hù)實體內(nèi)部,實體與實體之間的聯(lián)系
如果表中對應(yīng)的某個字段沒有值(數(shù)據(jù)),但是系統(tǒng)依然要分配空間,所以說關(guān)系型數(shù)據(jù)庫比較浪費空間。
關(guān)鍵字說明
數(shù)據(jù)庫:Database
數(shù)據(jù)庫系統(tǒng):DBS(Database System):是一種虛擬系統(tǒng),將多種內(nèi)容關(guān)聯(lián)起來的稱呼
DBS = DBMS + DB
DBMS:Database Management System,數(shù)據(jù)庫管理系統(tǒng),專門管理數(shù)據(jù)庫
DBA: Database Administrator,數(shù)據(jù)庫管理員
行/記錄:row/record
列/字段:column/field
···········
SQL
- SQL:(Structured Query Language,結(jié)構(gòu)化查詢語言)
- SQL分為三個部分:
DDL:(Data Definition Language,數(shù)據(jù)定義語言)用來維護(hù)存儲數(shù)據(jù)的結(jié)構(gòu)(數(shù)據(jù)庫,表),代表指令:create,drop,alter等
DML:(Data Manipulation Language,數(shù)據(jù)操作語言)用來對數(shù)據(jù)進(jìn)行操作(數(shù)據(jù)表中的內(nèi)容),代表指令:一個分類;DQL(Data Query Language,數(shù)據(jù)查詢語言)如select
DCL:(Data Control Language,數(shù)據(jù)控制語言)主要是負(fù)責(zé)權(quán)限管理(用戶),代表指令:grant,revoke等
···········
交互方式
1. 客戶端連接認(rèn)證:連接服務(wù)器,認(rèn)證身份(mysql.exe -hPup)
2.客戶端發(fā)送SQL指令
3.服務(wù)器接收SQL指令,并處理SQL指令,返回操作結(jié)果
4.客戶端接收結(jié)果,并顯示結(jié)果
5.斷開連接:釋放資源,因為服務(wù)器有并發(fā)限制
············
MySQL服務(wù)器對象
Mysql服務(wù)器內(nèi)部對象分為四層:
系統(tǒng)(DBMS)
數(shù)據(jù)庫(DB)
數(shù)據(jù)表(Table)
字段(Field)
···············
SQL基本操作
將SQL的基本操作根據(jù)操作對象進(jìn)行分類,分為三類:
庫操作
表操作(包含字段操作)
數(shù)據(jù)操作
···········
庫操作
新增數(shù)據(jù)庫
create database 數(shù)據(jù)庫名字[庫選項];
- 庫選項:用來約束數(shù)據(jù)庫,分為兩個選項
字符集設(shè)定:charset/character set 具體字符集(數(shù)據(jù)存儲的編碼格式,常用的有:GBK和UTF8)
校對集設(shè)定:collate具體校對集(數(shù)據(jù)比較的規(guī)則)
- 數(shù)據(jù)庫名字不能用關(guān)鍵字(已經(jīng)被系統(tǒng)使用的字符)或者保留字(將來系統(tǒng)可能會用到的字符)
創(chuàng)建結(jié)果:
- 在數(shù)據(jù)庫系統(tǒng)中,增加了對應(yīng)的數(shù)據(jù)庫信息
- 會在保存數(shù)據(jù)的文件夾下(Data目錄),創(chuàng)建一個對應(yīng)數(shù)據(jù)庫名字的文件夾
- 每個數(shù)據(jù)庫下都有一個opt文件,保存了庫選項
查看數(shù)據(jù)庫
查看所有數(shù)據(jù)庫:
show database;
查看指定部分的數(shù)據(jù)庫(模糊查詢):
show database like 'pattern';
- pattern是匹配模式
- %表示匹配多個字符
- _表示匹配單個字符
查看數(shù)據(jù)庫的創(chuàng)建語句:
show create database 數(shù)據(jù)庫名字;
例:
-- 注釋 (單行注釋),也可以使用#號
-- 創(chuàng)建數(shù)據(jù)庫
create database mydatabase
charset utf8;
create database database
charset utf8;
-- 創(chuàng)建中文數(shù)據(jù)庫
create database 中國 charset utf8;
create database `中國` charset utf8;
-- 中文字符集
set names gbk;
-- 查看所有數(shù)據(jù)庫
show database;
-- 創(chuàng)建數(shù)據(jù)庫
create database informationtest
charset utf8;
-- 查看以information_開始的數(shù)據(jù)庫(_需要被轉(zhuǎn)義)
show database like 'information_';
-- 相當(dāng)于information%
show database like 'information\_%';
-- 查看數(shù)據(jù)庫的創(chuàng)建語句
show create database mydatabase;
show create database `database`;