2024年Java最新零基础学MySQL(二)-- 表的创建,修改,删除,看看最新BTA大厂的Java程序员的招聘技术标准

笔者福利

以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。

有了这个,面试踩雷?不存在的!

回馈粉丝,诚意满满!!!




本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

列名 列类型)
CHARACTER SET 字符集
COLLATE 校对规则 
ENGINE 存储引擎;

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


#### 2️⃣入门案例


建立一个名为 nba\_player 的球员信息表,包括姓名,出生日期,打球位置,身高,臂展,工资,所在球队,字符集为utf8,校对规则区分大小写,存储引擎为INNODB。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/15583c3b702b48f2a9ca2141ce2b7cbb.png)



CREATE TABLE nba_player (
name VARCHAR(255),
birthday DATE,
position VARCHAR(255),
height INT,
arm_span INT,
sal DOUBLE,
team VARCHAR(255))
CHARACTER SET utf8
COLLATE utf8_bin
ENGINE INNODB;


### 🎆二、MySQL常用数据类型


#### 1️⃣数值型(整型)默认有符号




| 类型 | 大小 | 有符号范围 | 无符号范围 |
| --- | --- | --- | --- |
| TINTINT(UNSIGNED) | 占1个字节 | 有符号:-128 ~ 127 | 无符号:0 ~ 255 |
| SMALLINT(UNSIGNED) | 占2个字节 | 有符号:-2^15 ~ 2^15 - 1 | 无符号:0 ~ 2^16 - 1 |
| MEDIUMINT(UNSIGNED) | 占3个字节 | 有符号:-2^23 ~ 2^23 - 1 | 无符号:0 ~ 2^24 - 1 |
| INT(UNSIGNED) | 占4个字节 | 有符号:-2^31~ 2^31 - 1 | 无符号:0 ~ 2^32 - 1 |
| BIGINT(UNSIGNED) | 占8个字节 | 有符号:-2^63~ 2^63 - 1 | 无符号:0 ~ 2^64 - 1 |



– 如果没有指定 UNSIGNED , 就是有符号
CREATE TABLE t3 (
id TINYINT);

– 如果指定 UNSIGNED , 就是无符号
CREATE TABLE t4 (
id TINYINT UNSIGNED);


#### 2️⃣数值型(bit)



– BIT(m) m 在 1-64
CREATE TABLE t05 (num BIT(8));

– 添加数据 范围 按照你给的位数来确定,比如 m = 8 表示一个字节 0~255
INSERT INTO t05 VALUES(255);

– 显示按照 bit
SELECT * FROM t05;

– 查询时,仍然可以按照数来查询
SELECT * FROM t05 WHERE num = 1;


#### 3️⃣数值型(浮点型)默认有符号




| 类型 | 大小 |
| --- | --- |
| FLOAT(UNSIGNED) | 占4个字节 |
| DOUBLE(UNSIGNED) | 占8个字节 |
| DECIMAL【M,D】(UNSIGNED) | 可变 |


DECIMAL【M,D】(UNSIGNED)可以支持更加精确的小数位,M是小数位数(精度)的总数,D是小数点(标度)后面的位数。  
 如果D是0,则值没有小数点部分。M最大为65,D最大为30,如果D省略,默认是0,如果M省略,默认是10。



#演示 decimal 类型、float、double 使用
#创建表
CREATE TABLE t06 (
num1 FLOAT,
num2 DOUBLE,
num3 DECIMAL(30,20));

#添加数据
INSERT INTO t06 VALUES(88.12345678912345, 88.12345678912345,88.12345678912345);
SELECT * FROM t06;


#### 4️⃣字符串的基本使用




| 类型 | 大小 |
| --- | --- |
| CHAR(size) 固定长度字符串 | 最大 255 字符 |
| VARCHAR(size) 可变长度字符串 | 0 ~ 65535 字节 |
| TEXT | 0 ~ 2^16 - 1 字节 |
| MEDIUMTEXT | 0 ~ 2^24 - 1 字节 |
| LONGTEXT | 0 ~ 2^32 - 1 字节 |
| BLOB | 0 ~ 2^16 - 1 字节 |
| MEDIUMBLOB | 0 ~ 2^24 - 1 字节 |
| LONGBLOB | 0 ~ 2^32 - 1 字节 |


VARCHAR(size),最大可以存放 65532 字节 【1-3 个字节用于记录大小】  
 如果表的编码是 `utf8`,那么最大可以存 (65535-3) / 3 = 21844字符  
 如果表的编码是 `gbk` ,那么最大可以存 (65535-3) / 2 = 32766字符



#演示字符串类型使用 char varchar
CREATE TABLE t09 (
name CHAR(255));

CREATE TABLE t10 (
name VARCHAR(32766))
CHARSET gbk;


在存放文本时,也可以使用 TEXT 数据类型,可以将 TEXT 列视为 VARCHAR 列,注意 TEXT 没有默认值,如果不够用可以使用 MEDIUMTEXT 或 LONGTEXT。  
 BLOB,MEDIUMBLOB,LONGBLOB是二进制文本数据类型,使用较少。



#如果 varchar 不够用,可以考试使用 mediumtext 或者 longtext
#如果想简单点,可以使用直接使用 text
CREATE TABLE t13(
content TEXT,
content2 MEDIUMTEXT ,
content3 LONGTEXT);


#### 5️⃣字符串使用细节


**细节1:**


CHAR(4),这个4表示字符数(最大255),不是字节数,不管是中文还是字母都是放4个按字符计算。  
 VARCHAR(4),这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据。  
 不管是中文还是英文字母,都是最多存放4个,是按照字符来存放的。  
 对于占多少字节取决于编码。




| 编码类型 | 大小 |
| --- | --- |
| GBK | 字母1字节,汉字2字节 |
| UTF-8 | 字母1字节,汉字3字节 |
| Unicode | 字母2字节,汉字2字节 |


**细节2:**


CHAR(4)是定长(固定的大小),就是说,即使你插入’aa’ ,也会占用分配的4个字符的空间。  
 VARCHAR(4)是变长(变化的大小),就是说,如果你插入了’aa’,实际占用空间大小是2个字符空间再加上1-3个字节,因为VARCHAR本身还需要占用1-3个字节来记录存放内容长度


**细节3:**


什么时候使用char,什么时候使用varchar  
 1.如果数据是定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号码等。  
 2.如果一个字段的长度是不确定,我们使用varchar ,比如留言,文章。  
 3.查询速度:char > varchar


#### 6️⃣时间类型




| 类型 | 格式 | 描述 |
| --- | --- | --- |
| DATE | YYYY-MM-DD | 年-月-日 |
| TIME | HH:MM:SS | 时:分:秒 |
| YEAR | YYYY | 年 |
| DATETIME | YYYY-MM-DD HH:MM:SS | 年-月-日 时:分:秒 |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | 年-月-日 时:分:秒 |



#演示时间相关的类型
#创建一张表, date , datetime , timestamp
CREATE TABLE t14 (
birthday DATE , – 生日
job_time DATETIME, – 记录年月日 时分秒
login_time TIMESTAMP
NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP); – 登录时间, 如果希望 login_time 列自动更新, 需要配置

SELECT * FROM t14;
INSERT INTO t14(birthday, job_time)
VALUES(‘2022-11-11’,‘2022-11-11 10:10:10’); – 如果我们更新 t14 表的某条记录,login_time 列会自动的以当前时间进行更新


TIMESTAMP 在 INSERT 和 UPDATE 时,自动更新。


### 🎇三、修改与删除表


#### 1️⃣添加列


基本语法:



ALTER TABLE 表名
ADD 列名 列类型


练习:球员表 nba\_player 上面添加一个 enter\_nba\_time 列,INT类型(要求在team后面)



ALTER TABLE nba_player
ADD enter_nba_time INT NOT NULL DEFAULT 0
AFTER team;


#### 2️⃣修改列


基本语法:



ALTER TABLE 表名
MODIFY 列名 列类型


练习:修改球员表的name列,使其长度为60。



ALTER TABLE nba_player
MODIFY name VARCHAR(60) NOT NULL DEFAULT ‘’




### 最后

> 由于细节内容实在太多了,为了不影响文章的观赏性,只截出了一部分知识点大致的介绍一下,每个小节点里面都有更细化的内容!

![](https://img-blog.csdnimg.cn/img_convert/59807a7f114662d085bf954b30f71b95.webp?x-oss-process=image/format,png)

**小编准备了一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》**

![](https://img-blog.csdnimg.cn/img_convert/35333ca7cbd8db876f181429d3f8db91.webp?x-oss-process=image/format,png)

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》**

[外链图片转存中...(img-9egr2i04-1714994453023)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值