天天看點

資料庫|資料庫入門(二)

問題描述

資料庫是我們前後端不可缺少的東西,資料庫中最多的就是資料,當我們初次插入資料時,在一個表中的資料相對較少時我們可以一行一行的插入,但當我們遇到有邏輯關聯的資料時,我們插入就會報錯,我們該怎麼插入呢?

解決方案

在某個資料庫的一張course表中,有cno、cname、cpno、ccredit四個屬性列,分别為課程号,課程名,先行課号和成績,先給大家解釋一下什麼是先行課就例如我們很多課為基礎課,我們必須要先學完基礎課才能學習在此課程基礎之上的課程。

對于這種有依賴的資料該怎麼插入呢?我們最常用的插入語句就是insert語句,但這個語句如果在大批量的資料時這個語句就可能就不是很友善,我們就會用批量插入的方法:

insert into s values('s1','精益','天津'),

('s2','萬勝','北京'),('s3','東方','北京'),

('s4','豐泰隆','上海'),('s5','康健','南京')

這是一種批量插入的方法,這種方法會相對便捷一點,但當将這種方法應用到這種具有邏輯性的表中時,就會發現這個語句會報錯。

insert into course values('1','資料庫','5',4),

('2','數學','',2),

('3','資訊系統','',4),

('4','作業系統','6',3),

('5','資料結構','7',4),

('6','資料處理','',2),

('7','pascal語言','6',4)

資料庫|資料庫入門(二)

圖2.1 結果

對于這種相對較少的資料我們可以依照邏輯性一條一條的插入,但我們也要依據這張表中的邏輯性插入資料,這樣對于資料較多時就會較麻煩。

insert into course values('1','資料庫','5',4);

insert into course(cno,cname,ccredit) values('2','數學',2);

insert into course(cno,cname,ccredit) values('3','資訊系統',4);

insert into course values('4','作業系統','6',3);

insert into course values('5','資料結構','7',4);

insert into course(cno,cname,ccredit) values('6','資料處理',2);

insert into course values('7','pascal語言','6',4);

我們還可以利用另一種方法插入這些資料,就是insert語句中的select語句,這樣我們就能批量插入啦。

insert into course

select '6','python',null,'周老師','5'

select '3','大學英語',null,'賀老師','4'

select '2','資訊安全','1','馬老師','4'

select '1','資料庫','4','劉老師','5'

select '4','機率論','5','王老師','5'

select '5','高等數學',null,'張老師','6'

結語

在不同的sql sever版本中會存在指令不相容的情況,是以在不同的版本中可能會出現報錯的情況,本次指令在sql sever 2008中運作。        

資料庫|資料庫入門(二)