SQL - 创建表:构建数据库基础

你好,未来的数据库大师们!今天,我们将踏上一段激动人心的旅程,探索SQL的世界,特别是专注于CREATE TABLE语句。作为你友好的计算机科学老师,我将在你构建数据库冒险的基石概念上为你提供指导。所以,戴上你的虚拟安全帽,让我们开始建造吧!

SQL - Create Table

SQL CREATE TABLE语句:打好基础

想象一下你在建造一栋房子。在你挂画或布置家具之前,你需要建造墙壁和房间。在数据库的世界里,创建表就像建造这些房间。这是你的所有数据将要存放的地方,所以做好它是至关重要的!

基本语法

让我们从CREATE TABLE语句的基本语法开始:

CREATE TABLE 表名称 (
列1 数据类型,
列2 数据类型,
列3 数据类型,
....
);

现在,让我们分解一下:

  1. CREATE TABLE:这是我们施展魔法的魔杖,告诉SQL我们想要创建一个新表。
  2. 表名称:这里你可以发挥创意!给你的表起一个有意义的名字。
  3. 在括号内,我们列出我们的列及其数据类型。

现实世界示例

假设我们正在为宠物店构建一个数据库。我们想要创建一个表来存储我们出售的狗的信息:

CREATE TABLE 狗 (
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):这允许价格最高为99999999.99。

记住,选择正确的数据类型是至关重要的。这就像为房子的每堵墙选择正确的砖头类型!

添加约束

现在,让我们给我们的表添加一些规则。在数据库术语中,我们称这些为约束:

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

这里有什么新东西?

  • NOT NULL:这意味着这些字段必须有值。不允许有无名的狗!
  • DEFAULT '混合':如果没有指定品种,它将默认为'混合'。
  • CHECK (age >= 0):这确保我们不会意外输入负年龄。

SQL CREATE TABLE IF NOT EXISTS:安全起见

现在,想象你是一个健忘的建造者(我们都有过这样的情况!)。你可能会不小心尝试建造两次同样的房间。在SQL中,尝试创建一个已经存在的表将导致错误。但是别担心!我们有一个解决方案:

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

IF NOT EXISTS子句就像一个友好的提醒。如果表已经存在,SQL将简单地忽略该命令,而不是抛出错误。这就像在进入房间前敲门!

从现有表创建表:复制的艺术

有时,你可能想要根据现有的表创建一个新表。这就像使用一个房子的蓝图来建造另一个。以下是如何操作的:

CREATE TABLE 小猫 AS
SELECT id, name, breed
FROM 猫
WHERE age < 1;

这将创建一个名为小猫的新表,包含列id、name和breed,并用表中年龄小于1的数据填充。

这里还有一个例子:

CREATE TABLE 狗价格 AS
SELECT breed, AVG(price) as avg_price
FROM 狗
GROUP BY breed;

这将创建一个名为狗价格的新表,显示每个狗品种的平均价格。

CREATE TABLE方法的总结

让我们总结一下我们可以创建表的不同的方式,并用一个整洁的markdown表格来表示:

方法 描述 示例
基本的CREATE TABLE 创建一个新的表,具有指定的列和数据类型 CREATE TABLE 狗 (id INT, name VARCHAR(50));
带约束的CREATE TABLE 给表结构添加规则 CREATE TABLE 狗 (id INT PRIMARY KEY, name VARCHAR(50) NOT NULL);
CREATE TABLE IF NOT EXISTS 只在表不存在时创建表 CREATE TABLE IF NOT EXISTS 猫 (id INT, name VARCHAR(50));
CREATE TABLE AS 根据SELECT语句的结果创建新表 CREATE TABLE 小猫 AS SELECT * FROM 猫 WHERE age < 1;

就这样,大家!我们一起建造了数据库房子的基础。记住,就像任何好的建筑项目一样,创建表需要实践和规划。不要害怕尝试和犯错误——这是我们学习和提高SQL技能的方式。

在我们结束这堂课时,我想起了一个学生曾经说过的话,他们认为在SQL中创建表就像玩数字乐高积木。你知道吗?他们是对的!这都是在正确的位置放置正确的积木,以建造一些惊人的东西。

所以,继续前进,我正在成长的数据库建筑师们,开始创建表吧。你的数据正在等待它的新家!

Credits: Image by storyset