Mysql数据库中的表

文章介绍了如何在MySQL中创建数据库表,包括指定ENGINE、CHARACTERSET和COLLATE,以及使用CREATETABLE语句定义各种数据类型如INT、VARCHAR、DATE等。还讨论了数据类型的含义和选择,如BIT、DECIMAL、CHAR和VARCHAR。此外,文章提到了修改和删除表的ALTERTABLE和DROPTABLE命令,以及表的命名和列的增删改操作。
摘要由CSDN通过智能技术生成

创建表

在这里插入图片描述
和之前的创建库差不多,需要多指定一个engine(不写默认INNODB)这个后面说
字符集还有校对规则不指定的话和库的保持一致

案例

图形化创建就不说了,主要就指令

 # 演示关于创建表的操作 
 # 在db02创建表USER包含id-整形 name-字符串 password-字符串 birthday-日期
 # 因为USER是关键字要用``括起来,就只要变蓝就是关键字,如果你定义的是个变量用``括起来就ok
 CREATE TABLE `USER` (
	id INT,
	`name`  VARCHAR(255),
	`password` VARCHAR(255),
	`birthday` DATE)CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB
	
	

效果
在这里插入图片描述

根据左上角的这个来判断对哪个数据库执行操作,然后会在对应的数据库生成表!
在这里插入图片描述

表中常用数据类型(列类型)

数据类型概念就我们java里面的boolean,int那些
因为mysql里面的数据类型有点不同需要拿出来讲解
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

关于细节,比如是decimal[M,D]
M和D是什么意思,我们在下面讲,先大致了解有哪些数据类型

常用类型:
整形:int
小数类型:doubledecimal[M,D]
文本类型:char,varchartext
二进制类型:都不常用
日期类型:datatime,timestamp

在满足需求情况下,尽量使用占用内存小的数据类型,来提高我们的效率

整形

在这里插入图片描述
默认是有符号的
定义无符号在数据类型后面加一个unsigne即可
在这里插入图片描述

位类型

在这里插入图片描述
不常用但有用
在这里插入图片描述

BIT()括号里面的是位数,8位一个字节1-64位就是最大8字节
还有就是你添加的数据是按照位(二进制)显示的
我们放的3就是b'11',这个b''就是代表这个数据是二进制显示的
查询的时候我们也是输入对应的十进制就ok
主要是你想分配01只有这两个值
可以用bit(1)实现
使用其实不多

小数类型

在这里插入图片描述

DECIMAL(M,D)
M是小数位数的总数(就是整个这个数能有多少位)最大65,默认10
D表示小数点后面的位数(写成0就是整数,可以在BigINT不够时候用)最大30,默认0

在这里插入图片描述
float和double就是最大精度不一样,不会自动补0
decimal你设置小数点位数20,如果没有达到会自动补0

你要存一个非常大的数也可以用decimal在这里插入图片描述

字符串类型

注意:char和varchar后面一定要加括号表示范围

在这里插入图片描述
注意
CHAR(size)这个size是字符0-255,不管编码格式,就英文还是汉字,一个算一个字符
VARCHAR(size)里面的size是字符,但是它的范围是通过字节来算的,VARCHAR字节范围是0-65535字节,可以从编码格式,比如utf8/gbk的几个字节一个字符来推出,对应编码的最大储存字符,VARCHAR会占用1-3字节存放内容长度,所以一般你只有65535-3个字节来储存真正的信息,从此可以推出utf8(3字节一字符)最大储存字符,65532/3=21844个字符,gbk(2字节义字符)的话最大计数65532/2=32766字符
在这里插入图片描述
在这里插入图片描述
关于用途
在这里插入图片描述
在这里插入图片描述
VARCHAR不够用可以用TEXTHIA不够还有MEDIUMTEXT和LONGTEXT

变量类型 NOT NULL DEFAULT 默认值

这个指令就是指定的变量类型不允许为空
如果为空,会赋给其默认值
默认值在DEFAULT 后面,下面会有用到该指令慢慢看

日期类型

在这里插入图片描述
timestamp只占四个字节,只能表示到2038年
所以我们一般都用datetime(8字节)
在这里插入图片描述

# 演示日期类的基本使用
# 创建一张表,data,datatime,timestamp
CREATE TABLE t2(
	birthday DATE,-- 生日因为生日一般就记到年月日
	job_time DATETIME,-- 可以记录年月日时分秒
	login_time TIMESTAMP 
	NOT NULL DEFAULT -- 不允许为空
	CURRENT_TIMESTAMP -- 如果为空就默认为当前时间的timestamp
	ON UPDATE CURRENT_TIMESTAMP -- 如果我们更新t2的某条记录,对应的这个timestamp列自动以当前时间更新
	);-- 登陆时间,如果希望timestamp类型自动更新,需要配置,对应后缀有注释解释
SELECT * FROM t2;
INSERT INTO t2 (birthday,job_time)
		VALUES('2022-11-11','2022-11-11 10:10:10');
	

效果图
在这里插入图片描述

小练习

CREATE TABLE pratice(
	id INT,
	`name` VARCHAR(32),-- 名字
	`sex` CHAR(1),-- 性别一般一个,可能两个
	`birthday` DATE, -- 生日年月日
	entry_date DATETIME, -- 年月日时分秒
	`job` VARCHAR(32), -- 分配10个字符吧,毕竟是变动的
	salary DOUBLE, -- 工资
	`resume` TEXT -- text没有(),有默认范围,查询的时候会显示用的字节数,最后没逗号 
	) CHARSET utf8 COLLATE utf8_bin  ENGINE INNODB;-- 区分大小写
-- 添加信息
INSERT INTO pratice VALUES(
	100,"小袁",'男','2003-5-20',
	'2024-7-20 13:50:32','程序员',4000,'一个平凡的大学生');
-- 查询一下
SELECT * FROM pratice;

效果
在这里插入图片描述
用代码查询比较好

删除和修改表

图形化的操作不说

删除

很简单

DROP TABLE tablename

就这样再指定数据库删除即可

修改表

这里的修改主要是针对表的列!,具体数据修改估计在下一篇文章了
在这里插入图片描述
小练习
在这里插入图片描述

 -- 修改表的操作
-- 查询一下
SELECT * FROM pratice;
DROP TABLE t1

-- 添加列,修改表一般都是Alter table tablename指令开头,
ALTER TABLE pratice ADD(
	what VARCHAR(32) NOT NULL DEFAULT '' -- 不允许为空指令后面加一个当它为空时默认的赋值
	AFTER RESUME-- 指定位置
	);-- 这个加不加括号都可以,what用来检测
-- 查看表结构(查看列)
DESC pratice
-- 修改job,使其长度为60-单纯修改数据类型
ALTER TABLE pratice 
	MODIFY job VARCHAR(60) NOT NULL DEFAULT '无业游民';-- 这个指令好像不用加括号
-- 删除what列
ALTER TABLE pratice 
	DROP what-- 也是不加括号
-- 表名改为employee
RENAME TABLE pratice TO empolyee

-- 改了表名,就查询新名
DESC empolyee

-- 修改表的字符集为utf8,虽然说原来就是,用用指令而已
ALTER TABLE empolyee CHARACTER SET utf8

-- 列名name修改为user_name
-- 逆天的,列名修改后面还要加数据类型,也可以既改名也改数据类型
ALTER TABLE empolyee CHANGE NAME user_name VARCHAR(32) NOT NULL DEFAULT ''

效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小袁拒绝摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值