Java学习笔记 --- MySQL-常用数据类型

news2025/1/12 0:01:00

 一、Mysql常用数据类型

二、数值型(整数)的基本使用

使用规范:在能够满足需求的情况下, 尽量选择占用空间小的

# 演示整形的使用
# 使用tinyint来演示范围 有符号 -128 ~ 127  如果没有符号 0-255
# 1. 如果没有指定 unsigned,则TINYINT就是有符合
# 2. 如果指定 unsigned,则TINYINT就是无符合 0-255

CREATE TABLE t1 (
	id  TINYINT);
CREATE TABLE t2 (
	id  TINYINT UNSIGNED);	
	
INSERT INTO t1 VALUES (-128); # 这是非常简单的添加语句

INSERT INTO t2 VALUES (255);

SELECT * FROM t2

三、如何定义一个无符号的整数

create table t10 (id tinyint); 默认是有符号的

create table t10 (id tinyint unsigned); 无符号的

四、数值型(bit)的使用

1、基本使用

mysql > create table t2(num bit(8));

mysql > insert into t2(1, 3);

mysql > insert into t2 values(2, 65);

2、细节说明

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

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

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

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

      实际开发中使用不多

# 演示 bit 类型使用
# 1. bit(m) m 在 1-64
# 2. 添加数据 范围 按照你给的位数来确定,比如 m=8 表示一个字节,0-255
# 3. 显示按照bit
# 4. 查询时,仍然可以按照数来查询

CREATE TABLE t3 (num BIT(8));
INSERT INTO t3 VALUES (255);
SELECT * FROM t3
SELECT * FROM t3 WHERE num = 1

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

1、FLOAT/DOUBLE(UNSIGNED)

      Float 单精度,Double 双精度

2、DECIMAL[M, D](UNSIGNED)

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

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

      建议:如果希望小数的精度高,推荐使用decimal

# 演示decimal类型、float、double 使用
#创建表
CREATE TABLE t4 (
	num1 FLOAT,
	num2 DOUBLE,
	num3 DECIMAL(30, 20) );
# 添加数据
INSERT INTO t4 VALUES(88.12345678912345, 88.12345678912345, 88.12345678912345) 
SELECT * FROM t4

#DECIMAL 可以存放很大的数
CREATE TABLE t5(
	num1 DECIMAL(65));
INSERT INTO t5 VALUES(999999999999999999999999999999999999999999999999999); 
SELECT * FROM t5

#BIGINT则无法存放特别大的数
CREATE TABLE t6(
	num1 BIGINT UNSIGNED);
INSERT INTO t6 VALUES(999999999999999999999999999999999999999999999999999);# 添加失败
SELECT * FROM t6

六、字符串的基本使用

CHAR(size):固定长度字符串,最大255字符

VARCHAR(size):可变长度字符串,最大65532字节

(utf8编码最大21844字符,1-3个字节用于记录大小)

# 演示字符串类型使用 char varchar
-- CHAR(size):固定长度字符串,最大255字符
-- VARCHAR(size):可变长度字符串,最大65532字节 (utf8编码最大21844字符,1-3个字节用于记录大小)
-- 如果表的编码是 utf8 varchar(size) size = (65535-3) / 3 = 21844
-- 如果表的编码是 gbk varchar(size) size = (65535-3) / 2 = 32766

CREATE TABLE t6(
	`name` CHAR(255));
CREATE TABLE t7(
	`name` VARCHAR(21844));
CREATE TABLE t8(
	`name` VARCHAR(32766))CHARSET gbk;

七、字符串使用细节

1、细节1:

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

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

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

2、细节2:

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

      varchar(4) 是变长,就是说,如果你插入了'aa',实际占用空间大小并不是4个字符,而是按照实际占用空间来分配

    (说明:varchar本身还需要占用1-3个字节来记录存放内容长度) L(实际数据大小) + (1-3)字节 

3、细节3:

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

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

      (2)如果一个字段的长度是不确定的,我们使用varchar,比如留言,文章

      查询速度:char > varchar

4、细节4:

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

# 演示字符串类型的使用细节
# char(4) 和 varchar(4) 这个4表示的是字符,而不是字节,不区分字符是汉字还是字母

CREATE TABLE t9(
	`name` CHAR(4));
INSERT INTO t9 VALUES('abcd');
SELECT * FROM t9;

CREATE TABLE t10(
	`name` VARCHAR(4));
INSERT INTO t10 VALUES ('你好你好');
INSERT INTO t10 VALUES ('你好aa');
SELECT * FROM t10

# 如果varchar不够用,可以考虑使用 mediumtext 或 longtext,
# 如果想简单点,可以直接使用 text
CREATE TABLE t11(
	content1 TEXT, contnet2 MEDIUMTEXT, nontent3 LONGTEXT );
INSERT INTO t11 VALUES('啊啊啊啊啊', '你好你好你好aa100', '红红火火~~')
SELECT * FROM t11

八、日期类型的基本使用

CREATE TABLE birthday (

        t1 DATE,

        t2 DATETIME,

        t3 TIMESTAMP 

        NOT NULL DEFAULT CURRENT_TIMESTAMP

        ON UPDATE CURRENT_TIMESTAMP 

);

细节说明:TimeStamp在Insert和update时,会自动更新

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

SELECT * FROM t12

# 如果我们更新了 t12 表的某条记录,login_time列会自动以当前时间更新

九、创建表练习 

# 创建表的练习
-- 字段属性
-- Id 	       整形
-- name        字符型
-- sex 	       字符型
-- brithday    日期型(date)
-- entry_date  日期型 (date)
-- job 	       字符型
-- Salary      小数型
-- resume      文本型

CREATE TABLE emp (
	id INT,
	`name` VARCHAR(32),
	sex CHAR(1),
	birthday DATE,
	entry_date DATETIME,
	job VARCHAR(32),
	salary DOUBLE,
	`resume` TEXT
) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB;

INSERT INTO emp VALUES(1, '张三',  '男', '2022-12-16', '2023-3-30 22:22:22', '***', 2222, '***');

SELECT * FROM emp

十、修改表练习

# 修改表的练习

-- 员工表 emp 的上增加一个 image 列,varchar 类型(要求在 resume 后面)
ALTER TABLE emp 
	ADD image VARCHAR(32) NOT NULL DEFAULT ' ' 
	AFTER RESUME;
-- 修改 job 列,使其长度为 60
ALTER TABLE emp 
	MODIFY job VARCHAR(60) NOT NULL DEFAULT ' ';
-- 删除 sex 列
ALTER TABLE emp 
	DROP sex;
-- 表名改为 employee
RENAME TABLE emp TO employee;
-- 修改表的字符集为 utf8
ALTER TABLE employee 
	CHARACTER SET utf8;
-- 列名 name 修改为 user_name
ALTER TABLE employee 
	CHANGE `name` user_name VARCHAR(32);
	
DESC employee -- 显示表的结构,可以查看表的所有列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

卡塔尔世界杯门线技术(GOAL LINE TECHNOLOGY)背后的黑科技

现代职业足球运动员踢球时足球的行进速度,据国际足联统计数据,平均速度可达 60 英里/小时。极少数爆发力超强的职业球员,可以将这个速度刷新到超过 100 英里/小时。比如里斯本竞技队的巴西左后卫罗尼赫伯森在 2006 年以 131.82 英里/小时的速…

HACKTHEBOX——Sunday

nmap 第一次没有进行全端口扫描,只发现了79和111端口,79端口运行着finger程序,111则是rpcbind。 重新扫描一次,这次针对全部端口进行扫描。 nmap -p- -oA nmap 10.10.10.76 然后在扫描端口详细信息 可以发现22022端口运行着ssh…

数据结构——查找最全总结(期末复习必备)

目录 查找的基本概念 线性表的查找 顺序查找 折半查找(二分或对分查找) 分块查找(索引顺序查找) 树表的查找 二叉排序树 定义: 二叉排序树的查找: 二叉排序树的插入: 二叉排序树的创建&…

【缺陷识别】SVM金属表面缺陷分类与测量【含GUI Matlab源码 682期】

⛄一、简介(附lunwen、答辩PPT) 1 题目内容 金属板广泛应用在工业生产与生产生活的各方面。由于金属板制造过程涉及到的设备、工艺等多因素的影响,金属板表面容易出现种类较多、形态各异的缺陷,这些缺陷对金属板的耐磨性、抗腐蚀…

取整的四种方式

取整的四种方式一.基本认识二.四种取整方案1.零向取整2.地板取整3.向右取整4.四舍五入一.基本认识 这里按理说5/2应该为2.5啊,怎么为2呢?按照我们曾经的理解,其实知道符号/其实是取整。但它究竟是如何取整呢? 二.四种取整方案 1.…

小啊呜产品读书笔记001:《邱岳的产品手记-16》第30讲产品案例分析:Primer的扑克牌交互 第31讲 产品分析的套路(下):如何出解决方案?

小啊呜产品读书笔记001:《邱岳的产品手记-16》第30讲产品案例分析:Primer的扑克牌交互 & 第31讲 产品分析的套路(下):如何出解决方案?一、今日阅读计划二、泛读&知识摘录1、第30讲产品案例分析&…

猿如意中的【Visual Studio Code】工具详情介绍

猿如意中的【Visual Studio Code】工具一、 猿如意工具介绍二、 工具名称2.1 下载安装渠道2.2 如何在载猿如意中下载VS Code开发工具?2.3 安装流程2.4 安装完成的界面2.6 VS Code使用步骤常用快捷键使用感受一、 猿如意工具介绍 打开猿如意程序工具。猿如意下载地址…

东北大学2023分布式操作系统考试题目

1、简述分布式系统的设计目标中开放性的特点有哪些? 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 2、简述分布式体系结构中的层次结构,并举出一个层次结构的例子 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 …

20222-02-16 Linux 触摸屏测试工具tslib工具下载、编译、安装,buildroot ARM平台上实际运行

一、tslib全称英文是C library for filtering touchscreen events,是捕捉触摸屏事件的工具。 二、下载地址https://github.com/libts/tslib 三、tslib的代码如下 二、ARM交叉编译流程 1、可能需要安装下面的软件 sudo apt-get install automake autoconf libtool …

数据结构之链表 - (通过代码实现方法,熟悉方法的使用)

文章目录前言1. 链表1.1 什么是链表?1.2 链表的分类2. 链表方法的实现2.1 实现构建思想2.2 代码实现2.2.1 实现方法前的准备工作2.2.2 链表方法:display() - 打印链表, contains() - 查找链表中key值, size() - 求链表长度2.2.3 头插法-addFirst(), 尾插法-addLast(…

比较生成模型

说说GAN/VAE/Flow/Diffusion/AR~~~ 各类生成模型,比如自回归模型Autoregressive Model (AR),生成对抗网络Generative Adversarial Network (GAN),标准化流模型Normalizing Flow (Flow),变分自编码器Variational Auto-Encoder (VA…

软件测试优秀的测试工具,会用三款工作效率能提升一半

我们将常用的测试工具分为10类。 1. 测试管理工具 2. 接口测试工具 3. 性能测试工具 4. C/S自动化工具 5.白盒测试工具 6.代码扫描工具 7.持续集成工具 8.网络测试工具 9.app自动化工具 10.web安全测试工具 注:工具排名没有任何意义。 大多数初学者&…

图解Python深拷贝和浅拷贝

Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。 下面本文就通过简单的例子介绍一下这些概念之间的差别。 对象赋值 直接看一段代码: wil…

蓝桥杯:数字三角形

目录 题目描述 输入描述 输出描述 输入输出样例 输入 输出 思路: AC代码(Java): 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个…

数据结构基础--排序

一、直接插入排序 思路: 直接插入排序是一种简单的插入排序法 其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。 直接插入排序的特性总…

二分查找算法

目录 一 算法简介 1)算法解释 2)前提 3)思想 4)分类 5)算法模板 mid的计算的实现方法 二分法模板 求某个数的平方根: 二 算法实践 1)问题引入 2)问题解答 1)解法一:左闭…

[附源码]Node.js计算机毕业设计关山社区居民信息管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

Nacos认证绕过漏洞(CVE-2021-29441)

Nacos认证绕过漏洞(CVE-2021-29441) 指纹识别 titlenacos漏洞范围 nacos1.2.0版本-nacos1.4.0版本 漏洞复现 靶机ip:192.168.1.4 默认的nacos登录界面 http://192.168.1.14:8848/nacos/#/login利用如下请求包查看只有一个nacos用户 GET /nacos/v…

ZBC陆续在主要CEX开启Staking,锁定市场大部分流通量成大利好

从2022年Q3开始,Zebec生态开始不断的迎来新的利好,比如以 10 亿美元的完全稀释估值筹集了 850 万美元,使其历史融资额超过4000万美元,引发ZBC通证的一波上涨。而在此后,Zebec 生态开启了从Solana生态的迁移&#xff0c…

Eclipse+Java+Swing+mysql实现学生宿舍管理系统

EclipseJavaSwingmysql实现学生宿舍管理系统一、系统介绍1.环境配置二、系统展示1.登录页2.学生主页面3.学生端-登记页面4.学生端-学生信息修改5.学生端-寝室信息查询6.学生端-学生信息查询7.学生端-退出登录8.管理员-主页面9.管理员-宿舍信息修改10.管理员-宿舍信息删除11.管理…