數(shù)據(jù)庫準(zhǔn)備工作
?前言
其實(shí)我做的這個(gè)學(xué)生成績管理系統(tǒng)非常的簡單,只有最基本的增刪改查操作。但最近一直在糾結(jié)用那些方法來完成它。是用Qt的.ui文件來編輯界面還是純代碼自己手敲;是用面向?qū)ο缶幊棠剡€是面向過程編程呢;是用一個(gè)三元連接來創(chuàng)建表還是用三個(gè)二元連接來創(chuàng)建表呢。選擇恐懼癥患者的噩夢。最后終于決定,用純代碼面向過程的方式來編輯圖形界面,然后數(shù)據(jù)庫的根據(jù)E-R圖來創(chuàng)表,最終也是決定使用三個(gè)二元連接,雖然麻煩些,但我要的就是熟練數(shù)據(jù)庫的使用。
開始正題
我們的這個(gè)系統(tǒng)要用到數(shù)據(jù)庫,學(xué)過數(shù)據(jù)庫的同學(xué)應(yīng)該都知道,我們首先要畫出E-R圖,然后才能根據(jù)E-R圖來分解我們需要?jiǎng)?chuàng)建那些表,每張表又有哪些屬性等等。今天主要就是講講怎么根據(jù)E-R圖來創(chuàng)建表。話不多說,直接上圖。
二元連接

這就是我說的三個(gè)二元連接,每個(gè)矩形表示一個(gè)實(shí)體;每個(gè)菱形表示一個(gè)聯(lián)系;每個(gè)橢圓表示一個(gè)屬性。這些都是數(shù)據(jù)庫最基本的知識。一個(gè)實(shí)體一張表;一個(gè)聯(lián)系一張表。如圖所示,這個(gè)E-R圖最多需要6張表,當(dāng)然這是表最多的情況。
接下來介紹可以合并的情況,1對多,可以將聯(lián)系并入多的那一方;多對多,可以將聯(lián)系隨便并入哪一方;1對1,不可以進(jìn)行合并。如上圖所示,一個(gè)老師可以教多門課,一門課可以被多個(gè)老師開設(shè);一個(gè)學(xué)生可以選多個(gè)老師,一個(gè)老師也可以交多個(gè)學(xué)生;一門課程可以被多個(gè)學(xué)生學(xué)習(xí),一個(gè)學(xué)生也可以學(xué)習(xí)多門課。所以每個(gè)實(shí)體之間都是多對多的關(guān)系,所以咱們可以隨便把聯(lián)系并入到哪一個(gè)實(shí)體中都沒有問題。所以這個(gè)E-R圖最多六張表,最少三張表,在并入的時(shí)候,我們要將聯(lián)系的另一端沒有并入的實(shí)體的主鍵加入到要并入的實(shí)體中去,然后再來創(chuàng)建表。
然后,我們來看一看三元連接

跟上面所說的原則一摸一樣,所以這個(gè)E-R圖最多只需要四張表就可以了,最少也是三張表。這兩種E-R圖各有各的優(yōu)缺點(diǎn),但顯而易見三元連接是要簡單一些的,大家怕麻煩的話完全可以選擇根據(jù)三元連接來創(chuàng)建一個(gè)數(shù)據(jù)庫。
使用MySql創(chuàng)建數(shù)據(jù)庫
接下來我們就又到了敲代碼的環(huán)節(jié)了,當(dāng)然前提是你安裝了數(shù)據(jù)庫。是哪個(gè)數(shù)據(jù)庫問題都不大,因?yàn)閟ql是可以通用的。廢話不多說咱們直接上圖
是否打開了MySQL服務(wù)
首先是要登陸MySql,當(dāng)然前提是你安裝了MySql數(shù)據(jù)庫,并且打開了這個(gè)服務(wù)。下面看看如何查看是否打開。




右擊鼠標(biāo)點(diǎn)擊啟動(dòng)就可以了。當(dāng)然有一種更簡單的方法啟動(dòng)它,不過前提是你得知道你的這個(gè)服務(wù)叫什么名字,比如我的就叫MySQL80。以管理員身份啟動(dòng)cmd,然后執(zhí)行下面這行命令就可以啟動(dòng)服務(wù)了。
net start 服務(wù)的名稱
?登陸MySQL
打開cmd命令行,輸入-u 用戶名 -p 密碼。這里如果你在-p后面加一個(gè)回車,密碼就會變成星號不會直接顯示,要是不加就會直接顯示密碼。

創(chuàng)建數(shù)據(jù)庫并查看
輸入創(chuàng)建數(shù)據(jù)庫的命令
create database 數(shù)據(jù)庫名稱;
查看所有數(shù)據(jù)庫命令
show databases;
大家記得加分號。效果如下圖所示

這是我創(chuàng)建的兩個(gè)數(shù)據(jù)庫
使用數(shù)據(jù)庫并對表進(jìn)行操作
使用數(shù)據(jù)庫的命令
use 數(shù)據(jù)庫名稱;
然后在該數(shù)據(jù)庫創(chuàng)建需要的表
create table 表名(列名 數(shù)據(jù)類型 是否為空 是否位主鍵......);
查看表是否創(chuàng)建成功
show tables;
?查看表中的數(shù)據(jù)
select * from 表名;
效果如下
?



因?yàn)槲覜]有插入數(shù)據(jù)所以是空的。
僅用于學(xué)習(xí),請勿用于違法犯罪。