<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 5.1\. 表的基本概念 關系型數據庫中的表非常類似紙面上的一張表:它由行和列組成。字段的數目和順序是固定的, 每個字段都有一個名字。行的數目是變化的(它反映了給定時刻存儲的數據量)。 SQL 對表中行的順序沒有任何承諾。當讀取一個表時,行將會以一個未指定的順序出現, 除非你明確地要求排序。這些內容在[Chapter 7](#calibre_link-485)里介紹。 另外,SQL 并不給行賦予唯一的標識,因此我們很可能在一個表中有好幾個完全相同的行。 這是作為 SQL 基礎的下層數學模型的必然結果,但是這通常是我們不愿意看到的。 本章稍后的部分將討論如何處理這個問題。 每個字段都有一個數據類型。數據類型控制著一個字段所有可能值的集合, 并且控制著字段中數據的語義,這樣它就可以用于計算。比如, 一個聲明為數值類型的字段不會接受任意文本字符串,而存儲在這種字段里的數據可以用于數學計算。 相比之下,一個聲明為字符串類型的字段接受幾乎任意類型的數據, 但是它們不能進行數學計算(不過可以進行像字符串連接之類的操作)。 PostgreSQL包含一套可剪裁的內置數據類型, 這些類型可以適用于許多應用。用戶也可以定義它們自己的數據類型。 大多數內置的數據類型有顯而易見的名字和語義, 因此我們把詳細的解釋放在了[Chapter 8](#calibre_link-5)。常用的數據類型有: 用于整數的`integer`、用于可能為分數的`numeric`、 用于字符串的`text`、用于日期的`date`、用于時間的`time`、 用于時間戳的`timestamp`。 要創建一個表,可用使用[CREATE TABLE](#calibre_link-7)命令。在這個命令里, 你至少要為新表聲明一個名字,還有各字段的名字以及其數據類型。比如: ``` CREATE TABLE my_first_table ( first_column text, second_column integer ); ``` 這樣就創建了一個有兩個字段的名為`my_first_table`的表。 第一個字段的名字是`first_column`,數據類型為`text`; 第二個字段的名字是`second_column`,數據類型是`integer`。 表和字段的名字遵循[Section 4.1.1](#calibre_link-1584)里面解釋的標識符語法。 類型名通常也是標識符(但是有一些例外)。請注意字段列表是逗號分隔的,并且用圓括弧包圍。 當然,前面只是一個非常虛構的例子。通常,你會給表和字段取一個有意義的名字, 用以表達他們存儲的什么類型的數據,所以還是讓我們給一個比較現實的例子: ``` CREATE TABLE products ( product_no integer, name text, price numeric ); ``` `numeric`類型可以存儲分數部分,金額很可能有這樣的分數部分。 > **Tip:** 如果你創建了許多相互關聯的表,那么最好為表和字段選擇一致的命名模式。 比如,表名字可以統一選擇單數或者復數,兩種選擇都有這樣那樣的理論家支持。 一個表能包含的字段數目是有限制的。根據字段類型的不同, 這個數目可能在 250 到 1600 之間。不過,不管是哪一端的數字, 如果你設計的表包含那么多的字段好像都很不可能發生,否則是設計上有問題的表現。 如果你不再需要一個表,那么可以用[DROP TABLE](#calibre_link-98)命令刪除它。像這樣: ``` DROP TABLE my_first_table; DROP TABLE products; ``` 試圖刪除一個不存在的表是一個錯誤。不過,在 SQL 腳本文件里, 我們通常在創建表之前無條件刪除它并忽略錯誤信息,所以無論要刪除的表存不存在,這個腳本都成功。 當然你還可以使用`DROP TABLE IF EXISTS`來避免警告信息, 不過這并不符合 SQL 標準。 如果你需要修改一個已經存在的表,那么可以看看本章稍后的[Section 5.5](#calibre_link-1798)。 使用到目前為止討論的工具我們可以創建功能完整的表。 本章剩下的部分是有關向表定義中增加特性、保證數據完整性、安全性或便利性的內容。 如果你急于給表填充數據,那么你可以忽略余下的部分直接到[Chapter 6](#calibre_link-1758), 然后在稍后的時候再回來閱讀本章。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看