一、了解表
1.1.概述
表是处理数据和建立关系型数据库及应用程序的基本单元,是构成数据库的基本元素之一,是数据库中数据组织并储存的单元,所有的数据都能以表格的形式组织,目的是可读性强。
1.2.表结构简述
一个表中包括行和列:
-
行:被称为数据/记录(data)
-
列:被称为字段(column)
简而言之,所谓表其表现形式和我们平时所使用的Excel表格是一样的
Excel表:
MySQL表:
1.3.连接、库、表
数据库中我们操作最多的就是数据库表,但是在操作表之前我们需要了解一些前置信息,这些有助于我们更好的了解数据库!
1.3.1.连接
Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。简而言之就是我们可以通过navicat将数据库表的信息以excel表格的形式来展示在我们面前!
1.3.2.库
数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
1.3.3.表
表是数据库中用来存储数据的对象,是有结构的数据的集合,是整个数据库系统的基础。是SQL数据库中用于存储数据的工具。
表是包含数据库中所有数据的数据库对象。
表定义为列的集合。与电子表格相似,数据在表中式按行和列的格式组织排列的。表中的每一列都设计为存储某种类型的信息(例如日期、名称、美元金额或数字)。表上有几种控制(约束、规则、默认值和自定义用户数据类型)用于确保数据的有效性。如图所示:
二、DDL-数据表的定义
DDL(data definition language):对数据表的定义,通过sql语句创建数据表,并对其进行操作
2.1.创建数据表
数据表实际就是一个二维的表格,由多列组成,表格中的每一列称之为表格的一个字段
create table students(
stu_num char(8) not null unique,
stu_name varchar(20) not null,
stu_gender char(2) not null,
stu_age int not null,
stu_tel char(11) not null unique,
stu_qq varchar(11) not null unique
);
在dos命令窗口运行结束显示:
在navicat中运行后的效果如图所示:
2.2.数据表的操作
通过sql语句,来对数据表进行操作,使其达到我们想要的效果
2.2.1.查询数据表
-- 查询数据表的sql语句
show tables;
dos命令窗口查询结果如下:
2.2.2.查询表结构
-- 查询表结构的sql语句
desc <表名>;
dos命令窗口查询结果如下:
2.2.3.删除数据表
-- 用于删除数据表的sql语句
drop table <表名>;
-- 判断该表是否存在,存在就执行删除操作
drop table if exists <表名>;
其执行结果为:
2.2.4.修改数据表
-- 修改数据表名
alter table <原表名> rename to <新表名>;
-- 修改数据表的字符集,其默认字符集和数据库一致
alter table <表名> character set utf8;
-- 添加字段(列)
alter table <表名> add <字段名> varchar(200);
-- 修改字段的列名和类型
alter table <表名> change <原字段名> <新字段名> <新字段类型>;
-- 只修改字段类型
alter table <表名> modify <字段名> <新类型>;
-- 删除字段
alter table <表名> drop <字段名>;
上述sql语句成功运行之后的结果均为:
2.3.数据类型
数据类型,指的是数据表中的列所支持存放的数据的类型
在mysql中有多种数据类型可以存放数据,不同的类型存放的数据的范围或者形式是不同的
2.3.1.数值类型
所谓数值类型其实就是我们所学的数学当中的数字,包括整数、小数
类型 | 内存空间大小 | 范围 | 说明 |
---|---|---|---|
tinyint | 1byte | 有符号 -128~127 无符号 0~255 | 特小型整数(年龄) |
smalint | 2byte(16bit) | 有符号 -32768~32767 无符号 0~65535 | 小型整数 |
mediumint | 3byte | 有符号 -2^31~2^31-1 无符号 0~2^32-1 | 中型整数 |
int/integer | 4byte | 整数 | |
bigint | 8byte | 大型整数 | |
float | 4byte | 单精度 | |
double | 8byte | 双精度 | |
decimal | 第一参数+2 | decimal(10,2) 表示数值一共有10位 小数位有两位 |
2.3.2.字符串类型
存储字符序列的类型,简单来说就是非数字类型(包括汉字、英文等)
类型 | 字符长度 | 说明 |
---|---|---|
char | 0~255字节 | 定长字符串最多可以存储255个字符;当我们指定数据表字段为char(n)时,此列中的数据最长为n个字符,如果添加的数据少于n,则补'\u0000'至n长度 |
varchar | 0~65536字节 | 可变长度字符串,此类型的类最大长度为65535 |
tinyblob | 0~255字节 | 存储二进制字符串 |
blob | 0~65535字节 | 存储二进制字符串 |
mediumblob | 0~1677215字节 | 存储二进制字符串 |
longblob | 0~4294967295字节 | 存储二进制字符串 |
tinytext | 0~255字节 | 文本数据(字符串) |
text | 0~65535字节 | 文本数据(字符串) |
mediumtext | 0~1677215字节 | 文本数据(字符串) |
longtext | 0~4294967295字节 | 文本数据(字符串) |
2.3.3.日期类型
在mysql数据库中,我们可以使用字符串来存储时间,但是我们需要基于字段进行查询操作(查询在某个时间段内的数据)就不便于查询实现,简而言之就是当我们需要对时间进行计算的时候无法通过字符串来进行计算,就和我们无法计算 “你好”-“哈哈”=?一样
类型 | 格式 | 说明 |
---|---|---|
date | 2022-10-15 | 日期,只存储年月日 |
time | 11:12:13 | 时间,只存储时分秒 |
year | 2022 | 年份 |
datetime | 2022-10-15 11:12:13 | 日期+时间,存储年月日时分秒 |
timestamp | 20221015 111213 | 日期+时间(时间戳) |
ps:在mysql中有丰富的数据类型供我们选择使用,但是常用的数据类型其实并不是很多(都加粗了哦!)
2.4.字段约束
在创建数据表的时候,指定的对数据表的列的数据限制性的要求(对表的列中的数据进行限制),简单来说就是对数据表中字段的要求
为什么要给表中的列添加约束呢
-
保证数据的有效性
-
保证数据的完整性
-
保证数据的正确性
字段常见的约束有哪些呢
-
非空约束(not null)∶限制此列的值必须提供,不能为null
-
唯一约束(unique)∶在表中的多条数据,此列的值不能重复
-
主键约束(primary key)∶非空+唯一,能够唯一标识数据表中的一条数据
-
外键约束(foreign key)∶建立不同表之间的关联关系
其在navicat中的表现形式为: