數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)規(guī)范
規(guī)范化是數(shù)據(jù)庫(kù)設(shè)計(jì)的核心思想,規(guī)范化涉及在數(shù)據(jù)庫(kù)的表格中建立關(guān)系,對(duì)有關(guān)系但是存在于不同表中的數(shù)據(jù)進(jìn)行匹配。
數(shù)據(jù)規(guī)范化表格的規(guī)則如下:
1.每行擁有的列數(shù)相同,如果有兩個(gè)值主鍵相同,我們要將其分成不同的行;
2.表格的一列或多列組成鍵,它確定每行要表示什么;
3.在一個(gè)規(guī)范化表格中,非鍵列對(duì)鍵進(jìn)行描述,它們不描述其他非鍵列;
4.在一個(gè)規(guī)范化表格中,行不會(huì)對(duì)不存在關(guān)系的數(shù)據(jù)暗示其關(guān)系
SQL
SQL是專為數(shù)據(jù)庫(kù)而建立的操作命令集,是一種功能齊全的數(shù)據(jù)庫(kù)語(yǔ)言。
數(shù)據(jù)類型
文本和字符串型
text —任意長(zhǎng)度的字符串,如Python str或unicode類型。
char(n) —恰好為n個(gè)字符的字符串。
varchar(n) —最多n個(gè)字符的字符串。
數(shù)值型
integer —整數(shù)值,如Python int。
real —浮點(diǎn)值,如Python float。精確到6位小數(shù)。
double precision —高精度浮點(diǎn)值。精確到15位小數(shù)。
decimal —準(zhǔn)確小數(shù)值。
日期和時(shí)間型
date —日歷日期,包括年、月、日。
time —時(shí)間。
timestamp —日期和時(shí)間。
訪問數(shù)據(jù)庫(kù)
SQLite
SQLite是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。
操作數(shù)據(jù)庫(kù)之前,我們使用SQLite的sqlite3命令被用來(lái)創(chuàng)建新的SQLite數(shù)據(jù)庫(kù)。
$sqlite3 DatabaseName.db
通過此命令,可以進(jìn)入sqlite管理系統(tǒng)中,鏈接DatabaseName.db數(shù)據(jù)庫(kù)。
嘗試一些基本的命令行操作
查看數(shù)據(jù)庫(kù)
查看sqlite中的數(shù)據(jù)庫(kù)
.database
help
無(wú)論如何,都可以輸入.help命令,以獲取可用的命令行操作的清單
table
數(shù)據(jù).table可以看到數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)表。
schema
輸入.schema table_name,可以看到表格的架構(gòu)
exit
當(dāng)操作完成時(shí),輸入.exit,退出數(shù)據(jù)庫(kù)
創(chuàng)建數(shù)據(jù)庫(kù)
如果數(shù)據(jù)庫(kù)之前沒有被創(chuàng)建,在使用如下命令后,
$sqlite3 DatabaseName.db
會(huì)直接創(chuàng)建一個(gè)名為DatabaseName.db的數(shù)據(jù)庫(kù)。
也可用sql創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE數(shù)據(jù)庫(kù)名稱
創(chuàng)建數(shù)據(jù)表
CREATE TABLE表名稱
(
列名稱1數(shù)據(jù)類型,
列名稱2數(shù)據(jù)類型,
.......
)
使用上述方法創(chuàng)建數(shù)據(jù)表,常見數(shù)據(jù)類型:Text, CHAR(size), VARCHAR(size), INT(size), FLOAT(size,d)
刪除數(shù)據(jù)表
DROP TABLE table_name;
使用上述命令可以刪除數(shù)據(jù)表
從CSV文件導(dǎo)入數(shù)據(jù)
sqlite> .mode csv
sqlite> .import baseball_data.csv baseball_data
更改數(shù)據(jù)表名稱
sqlite> alter table old_name rename to newname;
數(shù)據(jù)庫(kù)操作
根據(jù)上面的方法,我建立了一個(gè)baseball.db的數(shù)據(jù)庫(kù),并建立了一個(gè)baseball數(shù)據(jù)表。
查看總行數(shù)
select count(*) from baseball;
打印結(jié)果:
count(*)
1157
找出使用右手,身高在72~75之間,體重最高的5個(gè)人的信息
代碼如下:
select * from baseball
where handedness == 'R' and height >= 72 and height <= 75
order by weight
limit 5;
打印結(jié)果:
"Ramon Manon",R,72,150,0.0,0
"Manny Trillo",R,73,150,0.263,61
"Dave Concepcion",R,74,155,0.267,101
"Frank Taveras",R,72,155,0.255,2
"Rafael Vasquez",R,72,160,0.0,0