在前两部分中,我们一直都在讲解一些基本的查询操作。但是,进行查询操作的基础,是要先有自己的一张表。因此,我们这一次讲解一下如何创建一张表。这一部分的内容主要有三个,第一部分是SQL中的数据类型,第二部分是如何创建一张表,第三部分是如何在表中插入数据。
事先说明一下,这一次,我们使用的是一个在线的SQL编辑网站。这一网站十分有助于SQL的学习。在这个网站中,我们选择的是MySQL5.6进行操作的。http://sqlfiddle.com/#!9/9727d0/1sqlfiddle.com
先来介绍一下,SQL中的数据类型。大体来说,SQL中的数据类型主要有以下三种:数值型、字符型、日期时间型三种。这三种数据类型又有如下的具体划分:数值型:
TINYINT:-128到127
SMALLINT:-32768到32767
MEDIUMINT:-8388608到8388607
INT:-2147483648到2147483647
BIGINT:-9223372036854775808到922337203684775807
FLOAT:-3.40282E+38到3.40282E+38
DECIMAL(n,k):1.977693E-308到1.977693E+308字符串型:
ENUM:已知范围内的单值枚举型字符串
SET:已知范围内的多值枚举型字符串
CHAR(n):定长字符串
VARCHAR(n):变长字符串日期时间型:
DATE:1000-01-01到9999-12-31
DATETIME:1000-01-01 00:00:00 到 9999-12-31 00:00:00
TIMESTAMP:1970-01-01 00:00:00 到 2038-01-19 03:14:07
YEAR:1901到2155
我们现在介绍完了基本的数据类型,我们现在就要学会如何去创建一张表了。创建表的SQL语句如下:
create table table_name(
field1,data_type1 fied_attr1,
fied2,data_type2 field_attr2,
field3,data_type3 field_attr3,
……
)filed:字段的名称。字段是由数字、字母和下划线组成的;字段的开头必须是子母。
data_type:为每一个字段指定数据类型,具体已经在上一部分中介绍了。
field_attr:为每一个字段指定所属的属性,具体包括NOT NULL, NULL,DEFAULT,AUTO_INCREMENT,PRIMARY KEY,UNIQUE KEY等。
这样讲还是有点抽象,我们还是举个例子吧。我们创建一张学生信息表:
create table stu_info(
stu_id CHAR(3) NOT NULL PRIMARY KEY,
stu_name VARCHAR(10) NOT NULL,
gender ENUM("F","M") NOT NULL,
interests SET("running","soccer","basketball","swimming"),
age INT DEFAULT 18,
grades DECIMAL(2,1)
);图1:表的创建
我们现在对表进行一下简单的讲解:stu_info:表的名字,学生信息表
stu_id:学号。字符串型,不能有缺失值,不能重复,并且设置为主键
stu_name:学生的名字,不能有缺失值
gender:学生性别,从男女当中二选一
interests:学生的兴趣爱好,从多个爱好中选取多个
age :年龄,整数类型,如果不填的话,统一设置为18
grades:学生的绩点
我们在上面中提到了主键,主键可以加快查询的速度,不过,这一节,我们并不打算做详细介绍。
我们创建了一张表,但是在这张表中,还没有任何数据,我们该如何在表中插入数据呢?
相关的语句如下所示:
insert into table_name(variable_list) values(value_list)
这样讲还是比较抽象,我们还是用我们刚刚创建的那张表说明一下。
我们首先在表中插入三个数据:
insert into stu_info(stu_id,stu_name,gender,interests,age,grades) values
("001","aaa","M","running",25,8.2),
("002","bbb","F","swimming",23,8.7),
("003","ccc","F","soccer,basketball",23,7.9);图2:数据插入的代码
我们来查看一下表中的数据:图3:数据查看
我们还可以插入一条具有缺失值和默认值的数据:
首先展示代码:图4:插入一条有缺失值和默认值的数据
我们查看一下:图5:查看一下数据
好了,今天就介绍到这里了!下一次,我们继续讲解SQLBOLT上的习题。
参考资料:陈红波、刘顺祥等所著《数据分析——从入门到进阶》。