數(shù)據(jù)庫知識(shí)點(diǎn)
- 數(shù)據(jù)庫
- RDBMS
- SQL
- MySQL
傳統(tǒng)數(shù)據(jù)記錄的缺點(diǎn)
現(xiàn)代化手段--數(shù)據(jù)庫
- 持久化存儲(chǔ)
- 讀寫速度極高
- 保證數(shù)據(jù)的有效性
- 對(duì)程序支持性非常好,容易擴(kuò)展
數(shù)據(jù)庫就是一種特殊的文件,其中存儲(chǔ)著需要的數(shù)據(jù)
關(guān)系型數(shù)據(jù)庫核心元素
- 數(shù)據(jù)行(記錄)
- 數(shù)據(jù)列(字段)
- 數(shù)據(jù)表(數(shù)據(jù)行的集合)
- 數(shù)據(jù)庫(數(shù)據(jù)表的集合)
RDBMS
- 兩種類型:關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫
- 定義:所謂的關(guān)系型數(shù)據(jù)庫RDBMS,是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)
- 主要產(chǎn)品
- oracle:在以前的大型醒目中使用,銀行,電信等項(xiàng)目
- mysql:web時(shí)代使用最廣泛的關(guān)系型數(shù)據(jù)庫
- ms sql server: 在微軟的項(xiàng)目中使用
- sqlite: 輕量級(jí)數(shù)據(jù)庫,主要應(yīng)用在移動(dòng)平臺(tái)
SQL
- DQL:數(shù)據(jù)查詢語言,用于對(duì)數(shù)據(jù)進(jìn)行查詢,如select
- DML: 數(shù)據(jù)庫操作語言,對(duì)數(shù)據(jù)進(jìn)行增加、修改、刪除,如insert、udpate、delete
- TPL: 事務(wù)處理語言,對(duì)事務(wù)進(jìn)行處理,包括begin transaction、commit、rollback
- DCL: 數(shù)據(jù)庫控制語言,進(jìn)行授權(quán)與權(quán)限收回,如grant、revoke
- DDL: 數(shù)據(jù)定義語言,進(jìn)行數(shù)據(jù)庫、表的管理等,如create、drop
- CCL: 指針控制語言,通過控制指針文成表的操作,如declare cursor
- 對(duì)于web程序員來講,重點(diǎn)是數(shù)據(jù)的crud(增刪改查),必須熟練編寫DQL、DML能夠編寫DDL完成數(shù)據(jù)庫、表操作
- SQL是一門特殊的語言,專門用來操作關(guān)系數(shù)據(jù)庫
- 不區(qū)分大小寫
MySql特點(diǎn)
- 使用C和C++編寫,并使用了多種編譯器進(jìn)行測試,保證源代碼的可移植性
- 支持多種操作系統(tǒng)
- 為多種編程語言提供了API
- 主持多線程,充分利用CPU資源
- 優(yōu)化的SQL查詢算法,有效地提高查詢速度
- 提供多語言支持,常見的編碼如GB2312、BIG5、UTF8
- 提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑
- 提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具
- 大型的數(shù)據(jù)庫。可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫
- 支持多種存儲(chǔ)引擎
- MySQL軟件采用了雙授權(quán)政策,它分為這區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫
- MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)庫語言形式
- Mysql是可以定制的,采用GPL協(xié)議,你可以修改源碼來開發(fā)自己的Mysql系統(tǒng)
- 在線DDL更改功能
- 復(fù)制全局事務(wù)標(biāo)識(shí)
- 復(fù)制無崩潰從機(jī)
- 復(fù)制多線程從機(jī)
數(shù)據(jù)的完整性
- 一個(gè)數(shù)據(jù)庫就是一個(gè)完整的業(yè)務(wù)單元,可以包含多張表,數(shù)據(jù)被存儲(chǔ)在表中
- 在表中為了更加準(zhǔn)確的存儲(chǔ)數(shù)據(jù),保證數(shù)據(jù)的正確有效,可以在創(chuàng)建表的時(shí)候,為表添加一些強(qiáng)制性的驗(yàn)證,包括數(shù)據(jù)字段的類型、約束
數(shù)據(jù)類型
- 可以通過查看幫助文檔查閱所有支持的數(shù)據(jù)類型
- 使用數(shù)據(jù)類型的原則是:夠用就行,盡量使用取值范圍小的,而不用大的,這樣可以更多的節(jié)省存儲(chǔ)空間
常用數(shù)據(jù)類型
- 整數(shù):int, bit
- 小數(shù):decimal
- 字符串:varchar,char
- 日期時(shí)間:data, time, datetime
- 枚舉類型(enum)
特別說明的類型
- decimal 表示浮點(diǎn)數(shù),如decimal(5,2)表示共存5位數(shù),小數(shù)占2位
- char表示固定長度的字符串,如char(3),如果填充"ab"時(shí)會(huì)補(bǔ)一個(gè)空格為"ab "
- varchar表示可變長度的字符串,如varchar(3),填充"ab"時(shí)就會(huì)存儲(chǔ)"ab"
- 字符串text表示存儲(chǔ)大文本,當(dāng)字符串大于4000時(shí)推薦使用
- 對(duì)于圖片、音頻、視頻等文件,不存儲(chǔ)在數(shù)據(jù)庫中,而是上傳到某個(gè)服務(wù)器上,然后在表中存儲(chǔ)這個(gè)文件的保存路徑
約束
- 主鍵primary key: 物理上存儲(chǔ)的順序
- 非空not null : 此字段不允許填寫空值
- 唯一unique : 此字段的值不允許重復(fù)
- 默認(rèn)default : 當(dāng)不填寫此值時(shí)會(huì)使用默認(rèn)值,如果填寫時(shí)以填寫為準(zhǔn)
- 外鍵foreign key: 對(duì)關(guān)系字段進(jìn)行約束,當(dāng)為關(guān)系字段填寫時(shí),會(huì)到關(guān)聯(lián)的表中查詢此值是否存在,如果存在則填寫成功,如果不存在則填寫失敗并拋出異常
數(shù)據(jù)庫操作
* 退出 :exit ;quit; ctrl+d
* 顯示時(shí)間: select now();
* 查看所有數(shù)據(jù)庫:show databases;
* 創(chuàng)建數(shù)據(jù)庫: create database 數(shù)據(jù)庫名 charset=utf8;
* 查看數(shù)據(jù)庫的結(jié)構(gòu):show create database 數(shù)據(jù)庫名;
* 刪除數(shù)據(jù)庫(慎慎慎用):drop database 數(shù)據(jù)庫名;
* 使用數(shù)據(jù)庫:use 數(shù)據(jù)庫名;
* 查看使用的數(shù)據(jù)庫:select database();
數(shù)據(jù)表操作
- 查看當(dāng)前數(shù)據(jù)庫中所有表:show tables;
- 創(chuàng)建表的基本用法:
create table 表名(
id int unsigned primary key auto_increment not null,
name varchar(30) not null,
age tinyint unsigned default 0,
high decimal(5,2),
gender enum("男", "女", "保密") default "保密"
)
- 查看表的創(chuàng)建語句:show create table 表名;
- 查看表結(jié)構(gòu):desc 表名;
- 修改表-添加字段:alter table 表名 add 字段名 類型;
- 修改表-修改字段(不重命名):alter table 表名 modify 字段名 類型及約束;
- 修改表-修改字段(重命名):alter table 表名 change 原字段名 新字段名 類型及約束;
- 修改表-刪除字段:alter table 表名 drop 字段名;
- 修改表-刪除表: drop table 表名;
數(shù)據(jù)庫數(shù)據(jù)操作
- 查詢數(shù)據(jù):select * from 表名;select 列1,列2,...from 表名;
- 使用as給字段起別名 ;也可以給表起別名
- 在select后面列前面使用distinct可以消除重復(fù)行
- 插入數(shù)據(jù):insert into 表名 values(...)
- 修改數(shù)據(jù):update 表名 set 列1=值1,列2=值2... where 條件;
- 刪除數(shù)據(jù):delete from 表名 where 條件;
- 邏輯刪除:alter table 表名 add 新字段名 bit(1) default 0;
update 表名 set 新字段名=1 where 條件;
select * from 表名 where 新字段名=0;
# 應(yīng)用于之后創(chuàng)建的表
alter database 數(shù)據(jù)庫名 charset=utf8;
# 應(yīng)用之后馬上可以使用
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。