SQL - 創建表格:打造數據庫的基礎

你好,未來的數據庫魔法師們!今天,我們將踏上一段令人興奮的旅程,進入SQL的世界,特別聚焦於CREATE TABLE語句。作為你們友好的鄰居計算機科學老師,我在這裡指導你們這個基礎概念,它將成為你們數據庫冒險的基石。所以,戴上你們的虛擬安全帽,讓我們開始建造吧!

SQL - Create Table

SQL CREATE TABLE語句:奠定基礎

想像一下你正在建造一個房子。在你掛上照片或排列家具之前,你需要建造牆壁和房間。在數據庫的世界裡,創建表格就像建造那些房間。這是所有你的數據將居住的地方,所以這非常重要!

基本語法

讓我們從CREATE TABLE語句的基本語法開始:

CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);

現在,讓我們分解這個語法:

  1. CREATE TABLE:這是我們的魔法棒,告訴SQL我們想要創建一個新表格。
  2. table_name:這裡你可以發揮創意!給你的表格起一個有意義的名稱。
  3. 在括號內,我們列出我們的列和它們的數據類型。

真實世界的例子

讓我們說我們正在為一家寵物店建造數據庫。我們想要創建一個表格來存儲我們出售的狗的信息:

CREATE TABLE dogs (
id INT PRIMARY KEY,
name VARCHAR(50),
breed VARCHAR(50),
age INT,
price DECIMAL(10, 2)
);

讓我們分解這個語句:

  • id INT PRIMARY KEY:這為每條狗創建了一個唯一標識符。
  • name VARCHAR(50):這允許長達50個字符的狗名。
  • breed VARCHAR(50):與名字一樣,但是用於品種。
  • age INT:我們假設年齡是以年為單位,所以整數適用。
  • price DECIMAL(10, 2):這允許價格最高達99,999,999.99。

記住,選擇正確的數據類型是關鍵的。這就像為你房子的每堵牆選擇正確的磚塊!

添加約束

現在,讓我們為我們的表格添加一些規則。在數據庫行話中,我們稱之為約束:

CREATE TABLE dogs (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
breed VARCHAR(50) DEFAULT 'Mixed',
age INT CHECK (age >= 0),
price DECIMAL(10, 2) NOT NULL
);

這裡有什麼新東西?

  • NOT NULL:這意味著這些字段必須有值。不允許無名的狗!
  • DEFAULT 'Mixed':如果沒有指定品種,它會默認為'Mixed'。
  • CHECK (age >= 0):這確保我們不會意外輸入負數年齡。

SQL CREATE TABLE IF NOT EXISTS:安全行事

現在,想像你是一個健忘的建造者(我們都有過那種時候!)。你可能會不小心試圖建造同樣的房間兩次。在SQL中,試圖創建一個已經存在的表格會導致錯誤。但是別擔心!我們有一個解決方案:

CREATE TABLE IF NOT EXISTS cats (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
breed VARCHAR(50),
age INT,
price DECIMAL(10, 2)
);

IF NOT EXISTS語句就像一個友好的提醒。如果表格已經存在,SQL將簡單地忽略命令,而不是拋出錯誤。這就像敲門再進入房間一樣!

從現有表格創建表格:複製的藝術

有時候,你可能想要根據一個現有的表格創建一個新表格。這就像使用一個房子的藍圖來建造另一個房子。我們這樣做:

CREATE TABLE kittens AS
SELECT id, name, breed
FROM cats
WHERE age < 1;

這創建了一個名為kittens的新表格,包含列id,name,和breed,並從cats表格中選擇年齡小於1的數據填充。

這裡還有另一個例子:

CREATE TABLE dog_prices AS
SELECT breed, AVG(price) as avg_price
FROM dogs
GROUP BY breed;

這創建了一個名為dog_prices的新表格,顯示每種狗品種的平均價格。

CREATE TABLE方法的總結

讓我們總結一下我們可以創建表格的不同方法:

方法 描述 示例
基本CREATE TABLE 創建一個具有指定列和數據類型的新表格 CREATE TABLE dogs (id INT, name VARCHAR(50));
帶約束的CREATE TABLE 向表格結構添加規則 CREATE TABLE dogs (id INT PRIMARY KEY, name VARCHAR(50) NOT NULL);
CREATE TABLE IF NOT EXISTS 只在表格不存在時創建表格 CREATE TABLE IF NOT EXISTS cats (id INT, name VARCHAR(50));
CREATE TABLE AS 根據SELECT語句的結果創建一個新表格 CREATE TABLE kittens AS SELECT * FROM cats WHERE age < 1;

這就是它,各位!我們一起建造了我們數據庫房子的基礎。記住,就像任何好的建設項目一樣,創建表格需要練習和計劃。不要害怕嘗試和犯錯誤 - 這是我們學習和提高SQL技能的方式。

當我們結束這個課程時,我想到一個學生曾經說過的話,他說在SQL中創建表格就像玩數字樂高積木。而你們知道嗎?他說得對!這都是關於將正確的部件放在正確的位置來建造一些令人驚艷的東西。

所以,前進吧,我的初露頭角的數據庫建築師們,開始創建表格。你的數據正在等待它的新家!

Credits: Image by storyset