序言
这个博客承接详解MySQL中数据库的创建,来看看有关表的知识点,不过我们要先学一点其他的
数据类型
我们学过很多语言,里面都有关数据类型的分类,SQL语言自然也是有的,它分为三大类。
为何要有数据类型
这是一个很好很基本的问题 ,它放映了存在的原因,想一想当我们在表格中会输入什么
数据类型怎么用
我们都知道每一个数据类型都有它的范围,这个范围指的是表格中数据的大小,那我们应该怎么使用,这个可能和我们之前的理解不太一样
int(11)的作用
这表示这一列存放的数据是int型,最多可以存放11位的数字
数值类型
这个简单,我们知道int 、float、 double在这里都有,不过它也添加了许多其他的,下面我就一一给出,由于它是规定的,我们也没有太多话可以说
我们给出数值类型是为了可以进行算数运算,比如说年龄 ,我们是可以将它定义为字符类型的,但是我们知道每过一个生日,我们的年龄 + 1,可以看出数据类型比较好处理
分类
类型 | 大小 | 说明 |
---|
tinyint | 1字节 | 有/无符号 | smallint | 2字节 | 有/无符号 | mediumint | 3字节 | 有/无符号 | int | 4字节 | 有/无符号 | bigint | 8字节 | 有/无符号 | float | 4字节 | 有/无符号 | double | 8字节 | 有/无符号 | decimal | 第一参数 + 2 | 整数位+小数位<=指定的位数 |
常用的数值类型
说一下decimal
我们知道,当我们使用double型时,有时候会带有很多位小数,比如说3.900000,很不舒服,所以就出现了decimal,它只会有2位小数
decimal(10,2)表示数值位有10位,小数位有2位
字符类型
这里的字符类型有些多,我们只需记住几个常用的就行,后面遇到可以查表
分类
类型 | 大小 | 说明 |
---|
char | 255字节 | 定长字符串,char(n)n<=255 | varchar | 65536字节 | 变长字符串 | tinyblob | 255字节 | 存储二进制字符串 | blob | 65536字节 | 存储二进制字符串 | mediumblob | 1677215字节 | 存储二进制字符串 | longblob | 4,294,967,295字节 | 存储二进制字符串 | tinytext | 255字节 | 文本数据 | text | 65536字节 | 文本数据 | mediumtext | 1677215字节 | 文本数据 | longtext | 4,294,967,295字节 | 文本数据 |
char(10)和varchar(10)的区别
- char(10)表示我们只能输入10个字符,如果输入小于10,则自动补充’\u0000’至10个字符
- varchar(10)表示我们可以输入<=10的字符,不够的空格自动补齐
日期类型
我们要说一下,日期类型不是也可以用字符串来表示吗?实际上可以的,不过存在一个问题,在数据库中,我们有时候要求基于时间字段进行查询,这就不太好了,所以特地出现了日期类型
分类
类型 | 说明 | 格式 |
---|
date | 只能存储年月日 | 2021-01-23 | time | 只能存储时分秒 | 11:23:56 | year | 只能存储年份 | 2021 | datetime | 能存储年月日,也可以存储时分秒,空格隔开 | 2021-01-23 11:23:56 | timestamp | 能存储年月日,也可以存储时分秒 时间戳 | 20210123 112356 |
创建表
我们正式开始如何创建一个表格
mysql> use db_fmsc;
创建
下面我写一行伪代码,解释一下没有出现过的名词
mysql> create table students(
-> stu_name varchar(8) not null,
-> stu_sex char(2) not null,
-> stu_age int not null,
-> stu_tele char(11) not null unique
-> );
下面我要解释一下我们的名词
not null
not null意味着这列是必填项,不能为空
unique
unique表示这一列的数据两两不同
查询数据表
mysql> show tables;
打印数据表
mysql> desc students;
修改表
修改表名
mysql> alter table students rename to stu_test;
修改表的字符集
数据表也是有字符集的,默认和数据库一置
mysql> alter table stu_test character set utf8;
增加一个字段
mysql> alter table stu_test add stu_qq char(11) unique;
销毁表
mysql> drop table if exists stu_test;
|