首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第1章 数据库和SQL
1-1 数据库是什么
我们身边的数据库
为什么DBMS那么重要
DBMS的种类
1-2 数据库的结构
RDBMS的常见系统结构
表的结构
1-3 SQL概要
标准SQL
SQL语句及其种类
SQL的基本书写规则
1-4 表的创建
表的内容的创建
数据库的创建(CREATE DATABASE语句)
表的创建(CREATE TABLE语句)
命名规则
数据类型的指定
约束的设置
1-5 表的删除和更新
表的删除(DROP TABLE语句)
表定义的更新(ALTER TABLE语句)
向Product表中插入数据
第2章 查询基础
2-1 SELECT语句基础
列的查询
查询出表中所有的列
为列设定别名
常数的查询
从结果中删除重复行
根据WHERE语句来选择记录
注释的书写方法
算术运算符
需要注意NULL
比较运算符
对字符串使用不等号时的注意事项
不能对NULL使用比较运算符
2-3 逻辑运算符
NOT运算符
AND运算符和OR运算符
通过括号强化处理
逻辑运算符和真值
含有NULL时的真值
第3章 聚合与排序
3-1 对表进行聚合查询
聚合函数
计算表中数据的行数
计算NULL之外的数据的行数
计算合计值
计算平均值
计算值和小值
使用聚合函数删除重复值(关键字DISTINCT)
3-2 对表进行分组
GROUP BY子句
聚合键中包含NULL的情况
使用WHERE子句时GROUP BY的执行结果
与聚合函数和GROUP BY子句有关的常见错误
3-3 为聚合结果指定条件
HAVING子句
HAVING子句的构成要素
相对于HAVING子句,更适合写在WHERE子句中的条件
3-4 对查询结果进行排序
ORDER BY子句
指定升序或降序
指定多个排序键
NULL的顺序
在排序键中使用显示用的别名
ORDER BY子句中可以使用的列
不要使用列编号
当前位置:
首页>>
技术小册>>
SQL基础教程(上)
小册名称:SQL基础教程(上)
### 1-4 表的创建 在数据库管理系统中,表(Table)是最基本的数据存储结构,它按照行(Row)和列(Column)的形式组织数据,类似于电子表格或纸质表格。在SQL(Structured Query Language)中,创建表是数据库设计的核心步骤之一,它定义了数据的结构、类型以及数据之间的关系。本章节将详细介绍如何在SQL中创建表,包括表的基本结构、数据类型、约束条件以及创建表的SQL语句编写。 #### 1.4.1 表的基本结构 表由列(Column)和行(Row)组成。列定义了数据的类型(如整数、字符串、日期等),而行则包含了具体的数据记录。每个表都有一个唯一的名称,用于在数据库中标识该表。 - **列(Column)**:也称为字段(Field),是表中数据的属性。每个列都有一个名称和数据类型,还可能包含约束条件,如主键、外键、非空(NOT NULL)等。 - **行(Row)**:也称为记录(Record),是表中数据的实际存储单元。每行代表一个数据实体,其值对应于各列定义的数据类型。 #### 1.4.2 数据类型 在创建表时,需要为每列指定数据类型,以确保数据的准确性和一致性。不同的数据库系统支持的数据类型可能略有差异,但大多数系统都支持以下基本类型: - **数值类型**:如INT(整数)、DECIMAL(定点数)、FLOAT(浮点数)等。 - **字符串类型**:如CHAR(定长字符串)、VARCHAR(变长字符串)、TEXT(长文本)等。 - **日期和时间类型**:如DATE(日期)、TIME(时间)、DATETIME(日期和时间)等。 - **二进制类型**:如BINARY(二进制数据)、BLOB(二进制大对象)等。 - **布尔类型**:某些数据库支持BOOLEAN或TINYINT(1)来表示真/假值。 - **枚举和集合类型**:允许列的值限定在一个预定义的集合内。 #### 1.4.3 约束条件 约束用于限制表中数据的类型和范围,确保数据的准确性和可靠性。常见的约束包括: - **主键(PRIMARY KEY)**:唯一标识表中的每一行。一个表只能有一个主键,主键列的值不能重复且不能为空。 - **外键(FOREIGN KEY)**:用于在两个表之间建立关系,确保一个表中的数据值在另一个表的列中存在。 - **唯一约束(UNIQUE)**:保证一列或列组合中的每个值都是唯一的。 - **检查约束(CHECK)**:限制列中值的范围,确保它们满足特定的条件。 - **非空约束(NOT NULL)**:确保列中的每个值都不为空。 #### 1.4.4 创建表的SQL语句 在SQL中,使用`CREATE TABLE`语句来创建新表。下面是一个创建表的示例SQL语句,该表用于存储学生信息: ```sql CREATE TABLE Students ( StudentID INT PRIMARY KEY, FirstName VARCHAR(50) NOT NULL, LastName VARCHAR(50) NOT NULL, Age INT CHECK (Age >= 0), EnrollmentDate DATE, Email VARCHAR(100) UNIQUE NOT NULL ); ``` 在这个例子中,`Students`表包含六个列: - `StudentID`:作为主键,数据类型为整数(INT),确保每个学生的ID是唯一的。 - `FirstName`和`LastName`:分别存储学生的名和姓,数据类型为变长字符串(VARCHAR),最大长度为50个字符,且不允许为空。 - `Age`:存储学生的年龄,数据类型为整数(INT),并通过CHECK约束确保年龄为非负值。 - `EnrollmentDate`:存储学生的入学日期,数据类型为日期(DATE)。 - `Email`:存储学生的电子邮件地址,数据类型为变长字符串(VARCHAR),最大长度为100个字符,且通过UNIQUE约束确保每个电子邮件地址在表中是唯一的,同时不允许为空。 #### 1.4.5 注意事项 - **命名规范**:在创建表时,应遵循一定的命名规范,如使用有意义的名称、避免使用SQL保留字、使用小写字母(或驼峰命名法)等。 - **数据类型选择**:合理选择数据类型,既要满足数据存储的需求,又要考虑存储效率和查询性能。 - **约束使用**:适当使用约束条件,确保数据的完整性和准确性。 - **索引优化**:虽然创建表时通常不直接创建索引,但应考虑未来查询优化的需要,合理设计索引策略。 - **权限控制**:在创建表时,还应考虑数据的安全性和隐私性,通过数据库权限控制机制限制对表的访问。 #### 1.4.6 示例扩展 假设我们还需要为学生表添加一个班级信息的外键关联,以及一个记录学生性别的枚举列,我们可以这样修改表结构: ```sql CREATE TABLE Classes ( ClassID INT PRIMARY KEY, ClassName VARCHAR(100) NOT NULL ); CREATE TABLE Students ( StudentID INT PRIMARY KEY, FirstName VARCHAR(50) NOT NULL, LastName VARCHAR(50) NOT NULL, Age INT CHECK (Age >= 0), Gender ENUM('Male', 'Female', 'Other') NOT NULL, ClassID INT, EnrollmentDate DATE, Email VARCHAR(100) UNIQUE NOT NULL, FOREIGN KEY (ClassID) REFERENCES Classes(ClassID) ); ``` 在这个扩展示例中,我们首先创建了一个`Classes`表来存储班级信息,然后在`Students`表中添加了一个`ClassID`列作为外键,指向`Classes`表的`ClassID`列,从而建立了学生表和班级表之间的关联。同时,我们在`Students`表中添加了一个`Gender`列,使用ENUM类型来限制性别只能为'Male'、'Female'或'Other'中的一个值。 通过本章的学习,你应该能够掌握在SQL中创建表的基本方法,包括表的结构设计、数据类型选择、约束条件应用以及SQL语句的编写。这将为你后续进行数据库设计、数据管理和查询优化打下坚实的基础。
上一篇:
SQL的基本书写规则
下一篇:
表的内容的创建
该分类下的相关小册推荐:
高性能的Postgres SQL
SQL基础教程(中)
PostgreSQL入门教程
SQL基础教程(下)