【實戰演練】數據庫基本知識與原理系列03-數據庫基本SQL命令

前面已經介紹過數據庫原理、mysql5.7安裝、數據庫設計/開發,而當數據庫安裝完成以後,與程序開發用c、c++、java、python等變成語言不一樣,數據庫須要使用專門的SQL語言進行操做。java


對數據庫的操做,基本上就是增、刪、改、查、鏈接5大類操做,能夠採用以前安裝好的mysql5.7進行實際操做測試。python

一、登陸與建立數據庫mysql

#登陸進入數據庫c++

mysql -u root -p

#查看已有的數據庫
sql

show databases;

#建立名爲testdatabase的數據庫,使用utf8編碼
數據庫

create database testdatabase default character set utf8 collate utf8_bin;

#使用testdatabase數據庫
bash

use testdatbase


二、增:數據庫設計

2.1建立數據庫表ide

create table <tablename> (column_name column_type);

#實例:
測試

create table test (
  test_id int auto_increment,
  test_username varchar(20) not null,
  test_number varchar(10) not null,
  primary key (test_id)
);

2.2插入數據庫

insert into test (test_id,test_username,test_number)
values
(1,'zhangsan','3');


三、刪除

3.1刪除行

delete from test where test_id = 4;

3.2刪除表

3.3刪除數據庫


四、查

4.1精確匹配

select test_username,test_number
from test
where test_id = 4;

4.2模糊匹配

select test_username,test_number
from test
where test_username like '%test2';


五、改

5.1更新數據

update <table_name> set field1=new_value1,field2=new_value2

#實例:

update test set test_username='test0',test_number='1' where test_id=1;

5.2插入列(新字段)

alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null;


六、鏈接

上述增刪查改命令都是很好入門的,由於上面的命令基本上都是單表操做就能夠了。可是對於有關聯關係的表格,如何進行跨表查詢呢,這個就須要使用鏈接(UNION)了。

咱們能夠拿上一篇(【實戰演練】數據庫基本知識與原理系列02-數據庫設計與開發的範式http://www.javashuo.com/article/p-neeamuqj-ce.html)的實例來進行鏈接查詢試試。

假設如今我想查詢,選修了ID號爲0001的課程的學生學號、姓名、年齡、成績、授課老師名、職稱、上課時間、上課地點。那麼,明顯單表查詢是不行的,由於不一樣的字段分別都散落在學生表、成績表、課程表、老師表裏面了。須要寫SQL語句鏈接這4張表,才能查詢到須要的結果。

那麼須要這樣思考:

1)首先,最終篩選的條件,是ID號爲0001的課程,因此就是課程表裏面的cno = '2019030001';寫成SQL就是where cno = '2019030001';

2)找出需求字段,在每一個表裏面的字段名

學號:student.sno

姓名:student.sname

年齡:student.sage

成績:score.cscore

授課老師名:teacher.tname

職稱:teacher.ttitle

上課時間:course.ctime

上課地點:course.cplace

3)清楚每張表格之間經過那個那個外鍵進行鏈接的,而後寫成表格A.主鍵=B.外鍵將表格進行鏈接便可,例如:成績表裏面,外鍵引用了學生表學號sno,課程表的cno。

所以鏈接就是join student.sno = score.sno,而後再join  score.sno = course.cno,就能夠經過中間表,將學生表與課程表鏈接起來了。

4)另外,若是每張表寫全名,很複雜,所以能夠自定義別名,例如student a,那麼後面student.sno只須要寫成a.sno就能夠了。

最終造成語句:

select a.sno,a.sname,a.sage,b.cscore,c.ctime,c.cplace,d.tname,d.ttitle from student a 
join score b on a.sno = b.sno_id 
join course c on b.cno_id = c.cno 
join teacher d on c.tno_id = d.tno 
where c.cno = '2019030001';

最終就能夠實現,查詢「選修了ID號爲0001的課程的學生學號、姓名、年齡、成績、授課老師名、職稱、上課時間、上課地點」這樣的跨表複雜查詢了。

相關文章
相關標籤/搜索