成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL入門:使用SQL構建一個關系數據庫

數據庫 MySQL
使用 SQL 構建數據庫比大多數人想象得要簡單。實際上,你甚至不需要成為一個有經驗的程序員就可以使用 SQL 創建數據庫。在本文中,我將解釋如何使用 MySQL 5.6 來創建簡單的關系型數據庫管理系統(RDMS)。

[[225769]]

使用 SQL 構建一個關系數據庫比你想的更容易。

使用 SQL 構建數據庫比大多數人想象得要簡單。實際上,你甚至不需要成為一個有經驗的程序員就可以使用 SQL 創建數據庫。在本文中,我將解釋如何使用 MySQL 5.6 來創建簡單的關系型數據庫管理系統(RDMS)。在開始之前,我想順便感謝一下 SQL Fiddle,這是我用來運行腳本的工具。它提供了一個用于測試簡單腳本的有用的沙箱。

在本教程中,我將構建一個使用如下實體關系圖(ERD)中顯示的簡單架構的數據庫。數據庫列出了學生和正在學習的課程。為了保持簡單,我使用了兩個實體(即表),只有一種關系和依賴。這兩個實體稱為 dbo_studentsdbo_courses

數據庫的多樣性是一對多的,因為每門課程可以包含很多學生,但每個學生只能學習一門課程。

關于術語的快速說明:

  1. 一張表稱為一個實體。
  2. 一個字段稱為一個屬性。
  3. 一條記錄稱為一個元組。
  4. 用于構建數據庫的腳本稱為架構。

 

構建架構

要構建數據庫,使用 CREATE TABLE <表名> 命令,然后定義每個字段的名稱和數據類型。數據庫使用 VARCHAR(n) (字符串)和 INT(n) (整數),其中 n 表示可以存儲的值的長度。例如 INT(2) 可以是 01

這是用于創建兩個表的代碼:

  1. CREATE TABLE dbo_students
  2. (
  3. student_id INT(2) AUTO_INCREMENT NOT NULL,
  4. student_name VARCHAR(50),
  5. course_studied INT(2),
  6. PRIMARY KEY (student_id)
  7. );
  8.  
  9. CREATE TABLE dbo_courses
  10. (
  11. course_id INT(2) AUTO_INCREMENT NOT NULL,
  12. course_name VARCHAR(30),
  13. PRIMARY KEY (course_id)
  14. );

NOT NULL 意味著字段不能為空,AUTO_INCREMENT 意味著當一個新的元組被添加時,ID 號將自動生成,是對先前存儲的 ID 號加 1,以強化各實體之間的完整參照性。 PRIMARY KEY 是每個表的惟一標識符屬性。這意味著每個元組都有自己的不同的標識。

 

關系作為一種約束

就目前來看,這兩張表格是獨立存在的,沒有任何聯系或關系。要連接它們,必須標識一個外鍵。在 dbo_students 中,外鍵是 course_studied,其來源在 dbo_courses 中,意味著該字段被引用。SQL 中的特定命令為 CONSTRAINT,并且將使用另一個名為 ALTER TABLE 的命令添加這種關系,這樣即使在架構構建完畢后,也可以編輯表。

以下代碼將關系添加到數據庫構造腳本中:

  1. ALTER TABLE dbo_students
  2. ADD CONSTRAINT FK_course_studied
  3. FOREIGN KEY (course_studied) REFERENCES dbo_courses(course_id);

使用 CONSTRAINT 命令實際上并不是必要的,但這是一個好習慣,因為它意味著約束可以被命名并且使維護更容易。現在數據庫已經完成了,是時候添加一些數據了。

 

將數據添加到數據庫

INSERT INTO <表名> 是用于直接選擇要添加哪些屬性(即字段)數據的命令。首先聲明實體名稱,然后聲明屬性,下邊是添加到實體的數據,從而創建一個元組。如果指定了 NOT NULL,這表示該屬性不能留空。以下代碼將展示如何向表中添加記錄:

  1. INSERT INTO dbo_courses(course_id,course_name)
  2. VALUES(001,'Software Engineering');
  3. INSERT INTO dbo_courses(course_id,course_name)
  4. VALUES(002,'Computer Science');
  5. INSERT INTO dbo_courses(course_id,course_name)
  6. VALUES(003,'Computing');
  7.  
  8. INSERT INTO dbo_students(student_id,student_name,course_studied)
  9. VALUES(001,'student1',001);
  10. INSERT INTO dbo_students(student_id,student_name,course_studied)
  11. VALUES(002,'student2',002);
  12. INSERT INTO dbo_students(student_id,student_name,course_studied)
  13. VALUES(003,'student3',002);
  14. INSERT INTO dbo_students(student_id,student_name,course_studied)
  15. VALUES(004,'student4',003);

現在數據庫架構已經完成并添加了數據,現在是時候在數據庫上運行查詢了。

 

查詢

查詢遵循使用以下命令的集合結構:

  1. SELECT <attributes>
  2. FROM <entity>
  3. WHERE <condition>

要顯示 dbo_courses 實體內的所有記錄并顯示課程代碼和課程名稱,請使用 * 。 這是一個通配符,它消除了鍵入所有屬性名稱的需要。(在生產數據庫中不建議使用它。)此處查詢的代碼是:

  1. SELECT *
  2. FROM dbo_courses

此處查詢的輸出顯示表中的所有元組,因此可顯示所有可用課程:

  1. | course_id |          course_name |
  2. |-----------|----------------------|
  3. |         1 | Software Engineering |
  4. |         2 |     Computer Science |
  5. |         3 |            Computing |

在后面的文章中,我將使用三種類型的連接之一來解釋更復雜的查詢:內連接、外連接和交叉連接。

這是完整的腳本:

  1. CREATE TABLE dbo_students
  2. (
  3. student_id INT(2) AUTO_INCREMENT NOT NULL,
  4. student_name VARCHAR(50),
  5. course_studied INT(2),
  6. PRIMARY KEY (student_id)
  7. );
  8.  
  9. CREATE TABLE dbo_courses
  10. (
  11. course_id INT(2) AUTO_INCREMENT NOT NULL,
  12. course_name VARCHAR(30),
  13. PRIMARY KEY (course_id)
  14. );
  15.  
  16. ALTER TABLE dbo_students
  17. ADD CONSTRAINT FK_course_studied
  18. FOREIGN KEY (course_studied) REFERENCES dbo_courses(course_id);
  19.  
  20. INSERT INTO dbo_courses(course_id,course_name)
  21. VALUES(001,'Software Engineering');
  22. INSERT INTO dbo_courses(course_id,course_name)
  23. VALUES(002,'Computer Science');
  24. INSERT INTO dbo_courses(course_id,course_name)
  25. VALUES(003,'Computing');
  26.  
  27. INSERT INTO dbo_students(student_id,student_name,course_studied)
  28. VALUES(001,'student1',001);
  29. INSERT INTO dbo_students(student_id,student_name,course_studied)
  30. VALUES(002,'student2',002);
  31. INSERT INTO dbo_students(student_id,student_name,course_studied)
  32. VALUES(003,'student3',002);
  33. INSERT INTO dbo_students(student_id,student_name,course_studied)
  34. VALUES(004,'student4',003);
  35.  
  36. SELECT *
  37. FROM dbo_courses

 

學習更多

SQL 并不困難;我認為它比編程簡單,并且該語言對于不同的數據庫系統是通用的。 請注意,實體關系圖中 dbo.<實體> (LCTT 譯注:文章中使用的是 dbo_<實體>)不是必需的實體命名約定;我之所以使用,僅僅是因為它是 Microsoft SQL Server 中的標準。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2011-08-15 11:24:46

SQL Server事務

2013-05-24 14:56:23

2023-10-10 11:18:42

Spring數據庫

2010-06-17 11:08:07

SQL Server

2010-06-28 09:53:11

SQL Server數

2011-04-06 11:34:52

SQL Server數查詢優化

2011-08-02 13:26:38

JavaBeanSQL Server

2020-08-26 14:45:34

SQL數據庫數次

2012-12-20 11:16:16

IBMdW

2011-04-06 15:36:56

SQL Server數

2023-09-05 08:32:33

關系數據庫數據庫

2011-10-11 17:07:12

數據庫Internet文件數據庫

2023-10-16 13:26:00

RDBMS關系數據庫

2009-07-10 09:28:41

NoSQL關系數據庫

2023-01-06 08:00:00

關系數據庫數據庫機器學習

2024-06-26 19:14:53

2021-06-10 13:50:55

代碼開發數據庫

2020-03-14 16:37:09

數據庫IT技術

2010-07-15 17:28:50

SQL Server

2019-07-05 08:39:39

GoSQL解析器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级二级视频 | 欧美高清一区 | 国产乱码精品一区二区三区中文 | 欧美日韩精品免费 | 一区二区在线免费播放 | 天天操天天射综合 | 日韩二区 | 鸳鸯谱在线观看高清 | 国产乱码精品1区2区3区 | 精品视频在线播放 | 九九热精品在线视频 | 韩国av网站在线观看 | 精品人伦一区二区三区蜜桃网站 | 国产午夜精品久久久久 | 欧美精品欧美精品系列 | 久久中文字幕av | 国产1区| 99精品一区二区 | 欧美一级免费 | 91夜色在线观看 | 日韩中文字幕视频 | 国产韩国精品一区二区三区 | 欧美一区二区三区 | 久久天堂 | 国产91在线精品 | av一级久久 | 久久国产麻豆 | 黑人巨大精品欧美一区二区免费 | 日本大香伊一区二区三区 | 中文字幕第一页在线 | 精品乱码一区二区 | 成人免费在线观看 | 欧美日韩在线播放 | 亚洲一区二区三区四区视频 | 国产一区二区三区久久久久久久久 | 精品国产不卡一区二区三区 | 在线成人精品视频 | 日韩av在线免费 | 中文字幕日韩欧美 | 久久精品色欧美aⅴ一区二区 | 视频在线一区二区 |