1. 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)
數(shù)據(jù)庫(kù)(database):按照一定的結(jié)構(gòu)困鸥,組織嗅蔬、存儲(chǔ)、管理數(shù)據(jù)的倉(cāng)庫(kù)疾就。
1.1為什么學(xué)習(xí)數(shù)據(jù)庫(kù)澜术?
軟件都需要數(shù)據(jù)作為支撐,大量數(shù)據(jù)時(shí)候需要數(shù)據(jù)庫(kù)對(duì)其進(jìn)行組織猬腰、存儲(chǔ)鸟废、管理。
1.2. 數(shù)據(jù)庫(kù)的分類
- 關(guān)系型數(shù)據(jù)庫(kù)(SQL)姑荷,二維表格形式盒延,常見(jiàn)的關(guān)系型數(shù)據(jù)庫(kù)有Oracle缩擂、MySQL、MariaDB兰英、SQL Server撇叁、DB2供鸠、SQLite等畦贸。
- 非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL),面對(duì)目前高并發(fā)的軟件楞捂,對(duì)數(shù)據(jù)庫(kù)IO薄坏、性能上要求較高,常見(jiàn)的非關(guān)系型數(shù)據(jù)庫(kù)有:Redis寨闹、MongoDB胶坠、Hbase。
1.3 數(shù)據(jù)庫(kù)包括三部分內(nèi)容
- DBMS即數(shù)據(jù)庫(kù)管理系統(tǒng)
- 通過(guò)DBMS完成對(duì)數(shù)據(jù)庫(kù)的管理與操作繁堡;
- 常見(jiàn)的有:MySQL沈善、Oracle、SQL Server等椭蹄;
- 數(shù)據(jù)
- SQL語(yǔ)言(structured query language)
2. MySQL介紹
- MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開(kāi)發(fā),目前屬于Oracle 公司沥邻。
- 目前最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)疟呐,在Web應(yīng)用方面MySQL是最好的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)用軟件之一。
2.1 MySQL特點(diǎn):
- 關(guān)系型數(shù)據(jù)庫(kù)翼馆,數(shù)據(jù)保存在不同的表中割以,增加了讀寫(xiě)速度,提高了靈活性应媚;
- 支持大型數(shù)據(jù)庫(kù)严沥,可處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù);
- 使用的SQL是訪問(wèn)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言中姜;
- 可用于多個(gè)系統(tǒng)祝峻,支持多種語(yǔ)言;
- 社區(qū)版開(kāi)源扎筒、免費(fèi)莱找。
2.2 RDBMS特點(diǎn):
- RDBMS管理多個(gè)數(shù)據(jù)庫(kù);
- 數(shù)據(jù)庫(kù)由若干表單組成嗜桌;
- 許多的行和列組成一張表單奥溺;
- 一行為一條記錄
- 一列為一個(gè)字段
2.3 MySQL工作模式:
MySQL是基于C/S架構(gòu)的數(shù)據(jù)庫(kù)管理軟件:
- 服務(wù)器負(fù)責(zé)所有數(shù)據(jù)訪問(wèn)和處理,數(shù)據(jù)添加骨宠、刪除浮定、更新的所有請(qǐng)求操作都是由服務(wù)器軟件完成相满;
- 客戶機(jī)與用戶打交道,服務(wù)器處理客戶機(jī)發(fā)送的請(qǐng)求桦卒,并將處理結(jié)果返回給客戶機(jī)立美。
- MySQL服務(wù)的啟動(dòng):
-
net start|stop mysql57
Windows -
systemctl start|restart|stop|enbale|disable mysql
Linux
-
3. MySQL數(shù)據(jù)庫(kù)操作
3.1 連接
mysql -h destination_host -p destination_port -u user_name -ppassword db_name
連接指定數(shù)據(jù)庫(kù)
3.2 數(shù)據(jù)庫(kù)操作命令
-
show databases;
# 查看數(shù)據(jù)庫(kù) -
use db_name;
# 使用數(shù)據(jù)庫(kù) -
drop database db_name
# 刪除數(shù)據(jù)庫(kù) -
CREATE DATABASE IF NOT EXISTS db_name DEFAULT CHARSET utf8
# 創(chuàng)建數(shù)據(jù)庫(kù)
3.2 數(shù)據(jù)表命令
-
show tables
# 查看表 -
desc tb_name
# 查看表結(jié)構(gòu) -
show create table tb_name
# 查看建表語(yǔ)句 -
create table tb_name(fields1 fields1_type,fields2 fields2_type)
# 創(chuàng)建表 -
drop table tb_name
# 刪除表
3.3 字段的數(shù)據(jù)類型
3.3.1數(shù)值型
- 整型
tinyint
1字節(jié)
smallint
2字節(jié)
mediumint
3字節(jié)
int
4字節(jié)
bigint
8字節(jié)
int(10)表示數(shù)據(jù)顯示寬度,而非數(shù)據(jù)長(zhǎng)度
- 浮點(diǎn)型
float
4字節(jié)
double
8字節(jié)
decimal(total_length, point_length)
float及double保存近似值方灾,decimal保存精確值建蹄。
3.3.2 字符串類
- 短字符串
char(5)
固定長(zhǎng)度為5
varchar(5)
非固定長(zhǎng)度
- char的查詢速度快于varchar;
- 固定長(zhǎng)度的類型使用char(電話號(hào)碼裕偿、身份證)等洞慎,不固定長(zhǎng)度使用varchar;
- 長(zhǎng)字符串類
BLOB LONGBLOG
二進(jìn)制文件(圖片 音視頻)
TEXT LONGTEXT
文本
3.3.3 日期時(shí)間類
date
年月日
time
時(shí)分秒
datetime
年月日時(shí)分秒
timestamp
時(shí)間戳
3.4 約束條件
數(shù)據(jù)類型之外對(duì)字段附加的額外的限制嘿棘,保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的完整性劲腿、正確性、準(zhǔn)確性鸟妙。
常見(jiàn)的約束條件有:
not null
非空焦人,指定某列不能為空
unique
唯一約束,該列數(shù)據(jù)不能重復(fù)
primary key
主鍵約束重父,特殊的unique花椭,主鍵值不能重復(fù),主鍵值不能為空
default
為字段設(shè)置默認(rèn)值
auto_increment
自增(主鍵坪郭,整數(shù)類型)
foreign key
外鍵
3.5 MySQL注意事項(xiàng)
- 不區(qū)分大小寫(xiě)个从;
- 表名、字段名和關(guān)鍵字沖突時(shí)使用``符號(hào)歪沃;
- default設(shè)置默認(rèn)值時(shí)嗦锐,字符串要用單雙引號(hào)將其引起來(lái)。
3.6 修改表
創(chuàng)建表
CREATE TABLE `student`( id INT NOT NULL AUTO_INCREMENT, sno VARCHAR(24), country varchar(24), PRIMARY KEY(`id`) )
- 添加列
ALTER TABLE tb_name ADD COLUMN fields field_type [condition];
- 修改列
ALTER TABLE tb_name MODIFY address varcchar(256);
ALTER TABLE tb_name CHANGE old_field_name new_field_name type [condition];
- 刪除列
alter table tb_name drop field_name;
- 修改表名
ALTER TABLE tb_name RENAME TO new_tb_name;
RENAME TABLE tb_name TO new_tb_name;
3.7 操作表數(shù)據(jù)
- 查詢
select field1,field2 from tb_name where xxx ;
- 增加
INSERT INTO tb_name(field1,field2) VALUES (a1,b1),(a2,b2),(a3,b3);
- 刪除
DELETE FROM tb_name WHERE xxx;
- 修改
UPDATE tb_name SET field1= value1 WHERE xxx;
- TRUNCATE
TRUNCATE TABLE tb_name
速度快于DELETE FROM tb_name
沪曙,truncate刪除時(shí)奕污,索引及外鍵一同刪除,auto_increment重新從1開(kāi)始液走,delete僅僅刪除數(shù)據(jù)碳默。
3.8 where字句使用的操作符
-
=
等于 -
<>
、!=
不等于 -
<
小于 -
>
大于 -
<=
小于等于 -
>=
大于等于 -
BETWEEN... AND...
在指定的連個(gè)值之間(閉區(qū)間) -
IN
如field1 IN (value1,value2,value2)
-
and 以及 or
缘眶,同時(shí)控制多個(gè)條件嘱根,可以使用()
調(diào)節(jié)優(yōu)先級(jí); -
NOT
取反; - LIKE 模糊匹配
-
%
匹配任意個(gè)字符巷懈,但不能匹配null该抒; -
_
匹配一個(gè)字符; - 通配符降低查詢效率顶燕,建議合理使用凑保。
-