久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

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

     快讀書館 2018-04-25

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



    在開始之前,我想順便感謝一下 SQL Fiddle,這是我用來運行腳本的工具。它提供了一個用于測試簡單腳本的有用的沙箱。


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



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

    關于術語的快速說明:


    • 一張表稱為一個實體。

    • 一個字段稱為一個屬性。

    • 一條記錄稱為一個元組。

    • 用于構建數據庫的腳本稱為架構。



    01 構建架構


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


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


    CREATE TABLE dbo_students
    (
      student_id INT(2) AUTO_INCREMENT NOT NULL,
      student_name VARCHAR(50),
      course_studied INT(2),
      PRIMARY KEY (student_id)
    );

    CREATE TABLE dbo_courses
    (
      course_id INT(2) AUTO_INCREMENT NOT NULL,
      course_name VARCHAR(30),
      PRIMARY KEY (course_id)
    );


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



    02 關系作為一種約束


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

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


    ALTER TABLE dbo_students
    ADD CONSTRAINT FK_course_studied
    FOREIGN KEY (course_studied) REFERENCES dbo_courses(course_id);


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



    03 將數據添加到數據庫


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


    INSERT INTO dbo_courses(course_id,course_name)
    VALUES(001,'Software Engineering');
    INSERT INTO dbo_courses(course_id,course_name)
    VALUES(002,'Computer Science');
    INSERT INTO dbo_courses(course_id,course_name)
    VALUES(003,'Computing');

    INSERT INTO dbo_students(student_id,student_name,course_studied)
    VALUES(001,'student1',001);
    INSERT INTO dbo_students(student_id,student_name,course_studied)
    VALUES(002,'student2',002);
    INSERT INTO dbo_students(student_id,student_name,course_studied)
    VALUES(003,'student3',002);
    INSERT INTO dbo_students(student_id,student_name,course_studied)
    VALUES(004,'student4',003);


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



    04 查詢


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


    SELECT attributes>
    FROM entity>
    WHERE condition>



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


    SELECT *
    FROM dbo_courses


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


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


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


    這是完整的腳本:


    CREATE TABLE dbo_students
    (
      student_id INT(2) AUTO_INCREMENT NOT NULL,
      student_name VARCHAR(50),
      course_studied INT(2),
      PRIMARY KEY (student_id)
    );

    CREATE TABLE dbo_courses
    (
      course_id INT(2) AUTO_INCREMENT NOT NULL,
      course_name VARCHAR(30),
      PRIMARY KEY (course_id)
    );

    ALTER TABLE dbo_students
    ADD CONSTRAINT FK_course_studied
    FOREIGN KEY (course_studied) REFERENCES dbo_courses(course_id);

    INSERT INTO dbo_courses(course_id,course_name)
    VALUES(001,'Software Engineering');
    INSERT INTO dbo_courses(course_id,course_name)
    VALUES(002,'Computer Science');
    INSERT INTO dbo_courses(course_id,course_name)
    VALUES(003,'Computing');

    INSERT INTO dbo_students(student_id,student_name,course_studied)
    VALUES(001,'student1',001);
    INSERT INTO dbo_students(student_id,student_name,course_studied)
    VALUES(002,'student2',002);
    INSERT INTO dbo_students(student_id,student_name,course_studied)
    VALUES(003,'student3',002);
    INSERT INTO dbo_students(student_id,student_name,course_studied)
    VALUES(004,'student4',003);

    SELECT *
    FROM dbo_courses



    05 學習更多


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


    如果你想了解更多,在網絡上這方面的最佳指南是 W3Schools.com 中對所有數據庫平臺的 SQL 綜合指南。請隨意使用我的數據庫。


    作者:Aaron Cocker

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 国产精品99中文字幕| 亚洲欧美综合人成在线| AV老司机亚洲精品天堂| 无码高潮少妇毛多水多水免费| 亚洲处破女AV日韩精品| 国产真人无码作爱视频免费| 最新中文字幕AV无码专区不| 成人久久免费网站| 欧美高清狂热视频60一70| 午夜通通国产精品福利| 亚洲图片自拍偷图区| 国产精品久久久久AV福利动漫 | 丁香色欲久久久久久综合网| 色偷偷888欧美精品久久久| 自拍偷自拍亚洲精品播放| 国产破外女出血视频| 黑人巨大AV在线播放无码| 奇米四色7777中文字幕| 国产精品午夜福利91| 老色鬼永久精品网站| 精品国产中文字幕在线| 一本大道中文日本香蕉| 无码AV中文字幕久久专区| 欧美福利电影A在线播放| 欧美性色欧美A在线图片| 亚洲人成网站77777在线观看| 色伦专区97中文字幕| 国产永久免费高清在线| 免费观看一区二区三区| 第一亚洲中文久久精品无码 | 卡一卡2卡3卡精品网站| 一区二区福利在线视频| 99RE6在线观看国产精品| 中文字幕日韩精品国产| 亚洲国产AV无码一区二区三区| 成年女人片免费视频播放A| 免费吃奶摸下激烈视频| 色橹橹欧美在线观看视频高清| 国产成人综合95精品视频| 亚洲国产午夜福利精品| 国内极度色诱视频网站|