mysql數(shù)據(jù)庫(kù),是當(dāng)前應(yīng)用非常廣泛的一款關(guān)系型數(shù)據(jù)庫(kù)
當(dāng)前使用的數(shù)據(jù)庫(kù)晰奖,主要分為兩類
1.文檔型僧叉,如sqlite窍霞,就是一個(gè)文件,通過(guò)對(duì)文件的復(fù)制完成數(shù)據(jù)庫(kù)的復(fù)制
2.服務(wù)型吻氧,如mysql、postgre,數(shù)據(jù)存儲(chǔ)在一個(gè)物理文件中他炊,但是需要使用終端以tcp/ip協(xié)議連接,進(jìn)行數(shù)據(jù)庫(kù)的讀寫操作
E-R模型
當(dāng)前物理的數(shù)據(jù)庫(kù)都是按照E-R模型進(jìn)行設(shè)計(jì)的
E表示entry已艰,實(shí)體
R表示relationship痊末,關(guān)系
一個(gè)實(shí)體轉(zhuǎn)換為數(shù)據(jù)庫(kù)中的一個(gè)表
關(guān)系描述兩個(gè)實(shí)體之間的對(duì)應(yīng)規(guī)則,包括
1.一對(duì)一
2.一對(duì)多
3.多對(duì)多
關(guān)系轉(zhuǎn)換為數(shù)據(jù)庫(kù)表中的一個(gè)列在關(guān)系型數(shù)據(jù)庫(kù)中一行就是一個(gè)對(duì)象
三范式
經(jīng)過(guò)研究和對(duì)使用中問(wèn)題的總結(jié)哩掺,對(duì)于設(shè)計(jì)數(shù)據(jù)庫(kù)提出了一些規(guī)范凿叠,這些規(guī)范被稱為范式
1.第一范式(1NF):列不可拆分
2.第二范式(2NF):唯一標(biāo)識(shí)
3.第三范式(3NF):引用主鍵
說(shuō)明:后一個(gè)范式,都是在前一個(gè)范式的基礎(chǔ)上建立的
約束:
1.主鍵primary key
2.非空not null
3.惟一unique
4.默認(rèn)default
5.外鍵foreign key
數(shù)據(jù)庫(kù)操作
·創(chuàng)建數(shù)據(jù)庫(kù)
create database數(shù)據(jù)庫(kù)名charset=utf8;
·刪除數(shù)據(jù)庫(kù)
drop database數(shù)據(jù)庫(kù)名;
·切換數(shù)據(jù)庫(kù)
use數(shù)據(jù)庫(kù)名;
·查看當(dāng)前選擇的數(shù)據(jù)庫(kù)
select database();
表操作
·查看當(dāng)前數(shù)據(jù)庫(kù)中所有表
show tables;
·創(chuàng)建表
auto_increment表示自動(dòng)增長(zhǎng)
create table表名(列及類型);
如:
create table students(
id int auto_incrementprimary key,
sname varchar(10) not null
);
·修改表
alter table表名add|change|drop列名類型;
如:
alter table students add birthdaydatetime;
·刪除表
drop table表名;
·查看表結(jié)構(gòu)
desc表名;
·更改表名稱
rename table原表名to新表名;
·查看表的創(chuàng)建語(yǔ)句
show create table '表名';
數(shù)據(jù)操作
·查詢
select * from表名
·增加
全列插入:insert into表名values(...)
缺省插入:insert into表名(列1,...) values(值1,...)
同時(shí)插入多條數(shù)據(jù):insert into表名values(...),(...)...;
或insert into表名(列1,...) values(值1,...),(值1,...)...;
·主鍵列是自動(dòng)增長(zhǎng)嚼吞,但是在全列插入時(shí)需要占位盒件,通常使用0,插入成功后以實(shí)際數(shù)據(jù)為準(zhǔn)
·修改
update表名set列1=值1,... where條件
·刪除
delete from表名where條件
·邏輯刪除誊薄,本質(zhì)就是修改操作update
alter table students add isdelete bit default 0;
如果需要?jiǎng)h除則
update students isdelete=1 where ...;
備份與恢復(fù)
?數(shù)據(jù)備份
·進(jìn)入超級(jí)管理員
sudo -s
·進(jìn)入mysql庫(kù)目錄
cd /var/lib/mysql
·運(yùn)行mysqldump命令
mysqldump –uroot –p數(shù)據(jù)庫(kù)名> ~/Desktop/備份文件.sql;
按提示輸入mysql的密碼
?數(shù)據(jù)恢復(fù)
·連接mysqk履恩,創(chuàng)建數(shù)據(jù)庫(kù)
·退出連接,執(zhí)行如下命令
mysql -uroot –p數(shù)據(jù)庫(kù)名< ~/Desktop/備份文件.sql
根據(jù)提示輸入mysql密碼
1.1.1總結(jié)
·數(shù)據(jù)庫(kù)解決的問(wèn)題呢蔫,E-R模型切心,三范式
·圖形界面操作數(shù)據(jù)庫(kù)飒筑、表、數(shù)據(jù)
·命令行操作數(shù)據(jù)庫(kù)绽昏、表协屡、數(shù)據(jù)
1.1.2作業(yè)
·完善學(xué)生表、科目表及數(shù)據(jù)
·設(shè)計(jì)兩張表全谤,要求是一對(duì)多的關(guān)系
1.2查詢
簡(jiǎn)介
·查詢的基本語(yǔ)法
select * from表名;
·from關(guān)鍵字后面寫表名肤晓,表示數(shù)據(jù)來(lái)源于是這張表
·select后面寫表中的列名,如果是*表示在結(jié)果中顯示表中所有列
·在select后面的列名部分认然,可以使用as為列起別名补憾,這個(gè)別名出現(xiàn)在結(jié)果集中
如果要查詢多個(gè)列,之間使用逗號(hào)分隔