首页
技术小册
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基础教程(上)
### 章节:表的内容的创建 在SQL(Structured Query Language,结构化查询语言)的世界中,表是存储数据的基础结构,类似于电子表格中的工作表或数据库中的记录集合。创建表并填充其内容是数据库设计与管理中的核心任务之一。本章将深入探讨如何在数据库中创建表以及如何通过不同的方法向表中添加内容。 #### 一、理解表的结构 在创建表之前,首先需要明确表的结构,即表中将包含哪些列(字段),每列的数据类型是什么,以及是否需要为某些列设置约束(如主键、外键、唯一性等)。表的结构设计直接影响到数据的存储效率和查询性能。 - **列(Column)**:表中的一个字段,用于存储特定类型的数据。 - **数据类型(Data Type)**:定义了列中可以存储的数据种类,如整数(INT)、浮点数(FLOAT)、字符串(VARCHAR)、日期(DATE)等。 - **约束(Constraint)**:用于限制进入表中的数据类型,以保证数据的准确性和可靠性。常见的约束包括主键(PRIMARY KEY)、外键(FOREIGN KEY)、唯一约束(UNIQUE)、检查约束(CHECK)等。 #### 二、创建表的基本语法 在SQL中,使用`CREATE TABLE`语句来创建新表。基本语法如下: ```sql CREATE TABLE 表名 ( 列名1 数据类型 [约束], 列名2 数据类型 [约束], ... 列名N 数据类型 [约束] ); ``` **示例**:创建一个名为`Students`的表,包含学生ID(主键)、姓名、年龄和入学日期。 ```sql CREATE TABLE Students ( StudentID INT PRIMARY KEY, Name VARCHAR(100) NOT NULL, Age INT CHECK (Age >= 0), EnrollmentDate DATE ); ``` 在这个例子中,`StudentID`是主键,保证每个学生ID的唯一性;`Name`字段不允许为空(`NOT NULL`);`Age`字段通过检查约束确保年龄非负;`EnrollmentDate`字段存储学生的入学日期。 #### 三、向表中插入数据 创建表之后,下一步是向表中插入数据。这通常通过`INSERT INTO`语句完成。 **基本语法**: ```sql INSERT INTO 表名 (列1, 列2, ..., 列N) VALUES (值1, 值2, ..., 值N); ``` 如果插入的数据与表中所有列的顺序和类型相匹配,并且没有为表定义默认值,可以省略列名列表。 **示例**:向`Students`表中插入一条记录。 ```sql INSERT INTO Students (StudentID, Name, Age, EnrollmentDate) VALUES (1, '张三', 20, '2020-09-01'); ``` **简化插入**(当所有列均被赋值且顺序与表定义一致时): ```sql INSERT INTO Students VALUES (2, '李四', 21, '2020-09-05'); ``` #### 四、批量插入数据 对于大量数据的插入,逐条使用`INSERT INTO`语句效率较低。SQL提供了批量插入数据的方法,具体实现可能因数据库系统而异,但大多数数据库支持在单个`INSERT INTO`语句中插入多行数据。 **示例**(以MySQL为例): ```sql INSERT INTO Students (StudentID, Name, Age, EnrollmentDate) VALUES (3, '王五', 22, '2020-09-10'), (4, '赵六', 20, '2020-09-15'), (5, '孙七', 21, '2020-09-20'); ``` #### 五、使用默认值与自动增量 在某些情况下,表中的某些列可能经常或总是使用相同的值,或者需要自动生成唯一的值。这时,可以使用默认值(DEFAULT)和自动增量(AUTO_INCREMENT,MySQL中的语法)特性。 - **默认值**:当插入记录时,如果没有为某列提供值,则使用定义时指定的默认值。 - **自动增量**:通常用于主键字段,确保每条记录都有一个唯一的标识符。每当新记录被插入时,该字段的值会自动增加。 **示例**:修改`Students`表,为`StudentID`添加自动增量属性,并为`Age`设置一个默认值。 ```sql ALTER TABLE Students MODIFY COLUMN StudentID INT AUTO_INCREMENT PRIMARY KEY, MODIFY COLUMN Age INT DEFAULT 18 CHECK (Age >= 0); ``` 注意:在修改已存在的表以添加自动增量属性时,需要确保该列没有设置过任何值,或者所有现有值都是唯一的(如果已经是主键的话)。此外,不同的数据库系统对自动增量的实现和支持可能有所不同。 #### 六、使用SELECT INTO创建并填充表 在某些数据库系统中,如SQL Server,可以使用`SELECT INTO`语句从现有的表中选择数据来创建新表,并同时填充数据。这种方法特别适用于需要基于现有数据创建新表结构或数据副本的场景。 **示例**:从`Students`表中选择所有记录来创建一个名为`StudentsBackup`的新表。 ```sql SELECT * INTO StudentsBackup FROM Students; ``` 注意:并非所有数据库系统都支持`SELECT INTO`语句的这种用法。在某些系统中,可能需要先创建表结构,然后使用`INSERT INTO ... SELECT`语句来填充数据。 #### 七、总结 本章详细介绍了如何在SQL中创建表以及向表中插入数据的方法。从理解表的结构开始,到掌握`CREATE TABLE`、`INSERT INTO`等基本SQL语句的使用,再到学习如何利用默认值、自动增量等特性来优化表的设计和数据插入过程。此外,还简要介绍了如何使用`SELECT INTO`语句基于现有数据创建新表。掌握这些基础知识,将为后续深入学习SQL高级特性和数据库管理打下坚实的基础。
上一篇:
1-4 表的创建
下一篇:
数据库的创建(CREATE DATABASE语句)
该分类下的相关小册推荐:
高性能的Postgres SQL
SQL基础教程(下)
PostgreSQL入门教程
SQL基础教程(中)