MySQL表的操作指令与常用数值类型

创建表:

注:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型 例;user表

id 整型

name 字符串

password 字符串

birthday 日期

sql 复制代码
#使用指令创建表
#注意创建的表位于哪个数据库
CREATE TABLE `user01` (
id INT,
`name` VARCHAR(255),
`password` VARCHAR(255),
`birthday` DATE)
CHARACTER SET utf8
COLLATE utf8_bin
ENGINE INNODB

修改表:

使用ALTER TABLE语句追加,修改,或删除列的语法

添加列:

修改列:

删除列:

查看表的结构:desc 表明; --可以查看表的列

修改表名:Rename table 表名 to 新表明

修改表字符集:alter table 表明 character set 字符集

应用案例:

创建一个员工表(emp),选用适当的数据模型

sql 复制代码
CREATE TABLE t08(
	id INT,
	`name` CHAR(10),
	sex CHAR(1),
	birthday DATE,
	entry_date DATE,
	job VARCHAR(255),
	salary FLOAT,
	`resume` TEXT);
ALTER TABLE t08 ADD image VARCHAR(255);
ALTER TABLE t08 MODIFY job VARCHAR(60);
ALTER TABLE t08 DROP sex;
RENAME TABLE t08 TO employee;
ALTER TABLE employee CHARACTER SET utf8;
ALTER TABLE employee CHANGE `name` user_name CHAR(10);
SELECT * FROM employee 

MySQL常用的数据类型(列类型):

数值型(整数)的基本使用:

在能够满足需求的情况下,尽量选择占用空间小的类型

sql 复制代码
#演示整型的使用
#演示tinyint 范围 有符号的 -128 - 127 无符号的 0 - 255
#表的字符集,校验规则,存储引擎全部使用默认的`id`
#如果没有指定unsigned,则tinyint就是有符号的类型
#如果指定unsigned,则tinyint就是无符号的类型

CREATE TABLE t3(
id TINYINT)

CREATE TABLE t4(
id TINYINT UNSIGNED)

#在-129行添加
INSERT INTO t3 VALUES(-128);

SELECT * FROM t3

数值型(bit)的使用:

基本使用:

mysql> create table t02(num bit(8))

mysql> insert into t02(1,3)

mysql> insert into t02 values(2,65)

细节说明:

bit字段显示时,按照 位的方式显示

查询的时候仍然可以 使用添加的数值

如果一个值只有0,1 可以考虑使用bit(1),可以节约空间

位类型 M指定位数,默认值1,范围1-64

sql 复制代码
#说明:
#bit(m) m在1-64
#显示按照bit
#添加数据范围按照你给定的位数来确定,比如m=8,表示一个字节(0-255)
#查询时,仍然可以按照数字查询
CREATE TABLE t02(num BIT(8))
INSERT INTO t02 VALUES(3)

数值型(小数)的基本使用

1.FLOAT/DOUBLE(UNSIGNED)

Float单精度,Double双精度

2.DECIMAL[M,D](UNSIGNED)

可以支持更加精确的小数位,M是小数位数(精度)加整数的总长度,D时小数点(标度)后面的位数

如DECIMAL[5,2],则表示能存储进去的整数位数与小数位数之和为5,其中小数位数为2

如果D是0,则值没有小数点或分数部分,M最大65.D最大30.如果D被省略,默认是0,如果M被省略,默认是10

如果希望小数的精度高,建议使用Decimal

sql 复制代码
#演示Decimal,float,double的使用
#创建表
CREATE TABLE t04(
num1 FLOAT,
num2 DOUBLE,
num3 DECIMAL(30,20));
#添加数据
INSERT INTO t04 VALUES(88.12345678912345,88.12345678912345,88.12345678912345);
#查询
SELECT * FROM t04

字符串的基本使用:

CHAR(size) 0-255

固定长度字符串,最大255字符

VARCHAR(size) 0-65535

可变长度字符串,最大65532字节(utf8编码最大21844字符 1-3个字节用于记录大小)

sql 复制代码
#演示字符串类型使用 char/varchar
#如果表的编码是utf8, varchar(size) = (65535-3)/3 = 21844
#如果是GBK,应该除以2 = 32766
CREATE TABLE t05 (
`name` CHAR(255));

CREATE TABLE t06 (
`name` VARCHAR(21844));

字符串使用细节:

一.

char(4)这个4表示字节数(最大255),不是字节数,无论是中文还剩字母都是放四个,按字符计算

varchar(4)这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据.

不管是中文还剩英文字母,都是最多存放4个,是按照字符来存放的

二.

char(4)是定长(固定大小),也就是说,即使插入'aa',也会占用分配的四个字符空间

varchar(4)是变长,也就是说,即使插入'aa',实际占用空间大小并不是4个字符,而是按照实际占用空间来分配(varchar本身还需要占用1-3个字节来记录存放内容长度)

三.

什么时候使用char,什么时候使用varchar?

1.如果数据是定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号码等,

2.如果一个字段的长度不确定,推荐使用varchar,比如留言,文章

查询速度,char > varchar

四.

在存放文本时 ,也可以使用Text数据类型, 可以将TEXT列视为VARCHAR列, 注意Text不能有默认值,大小为0-2^16字节,如果需要存放更多字符,可以选择MEDIUMTEXT 0-2^24 或者LONGTEXT 0-2^32

日期类型的基本使用:

日期类型的细节说明:

TimeStamp在Insert和update时,自动更新

sql 复制代码
#演示时间相关的类型
#创建一张表date datetime timestamp
CREATE TABLE t07(
birthday DATE,		#年月日
jobtime DATETIME,	#年月日 时分秒
login_time TIMESTAMP	#登陆时间 自动更新

#如果希望login_time自动更新,需要配置
NOT NULL DEFAULT CURRENT_TIMESTAMP #不允许为空 默认为当前时间
ON UPDATE CURRENT_TIMESTAMP #修改时自动以当前时间更新
);

#添加数据
INSERT INTO t07(birthday,jobtime) VALUES ('2002-11-11','2002-11-11 10:10:10');

#查询
SELECT * FROM t07;

#如果我们更新了t07的某条记录,那么login_time会自动以当前时间进行更新
相关推荐
蜂蜜黄油呀土豆2 小时前
MySQL 什么情况下会产生死锁?为什么会死锁?以及 Online DDL 解决了什么问题
mysql·innodb·间隙锁·数据库原理·next-key lock·死锁分析
煎蛋学姐2 小时前
SSM小学教师教辅管理平台526h9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库
java1234_小锋2 小时前
说说Redis的内存淘汰策略?
数据库·redis·缓存
她说..2 小时前
Spring AOP场景4——事务管理(源码分析)
java·数据库·spring boot·后端·sql·spring·springboot
道剑剑非道3 小时前
Qt【使用libmodbus库】
开发语言·数据库·qt
男孩李3 小时前
linux下执行pg数据的sql文件,报错error:permission denied for schema plat
数据库·sql
SirLancelot13 小时前
AI大模型-基本介绍(一)RAG、向量、向量数据库
数据库·人工智能·ai·向量·向量数据库·rag
李慕婉学姐3 小时前
Springboot面向电商的仓库管理系统05uc4267(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端