MySQL_2 常见列类型与表的基本操作

news2024/11/15 17:46:48

目录

一、常见列类型(字段类型)

        1.数值类型 : 

                1° 整型

                2° 浮点型 

        2.文本类型(字符串类型) : 

        3.二进制类型 : 

        4.日期类型 : 

二、表的基本操作

        1.创建表 : 

                1° 基本语法

                2° 代码演示

        2.删除表 : 

                1° 基本语法

                2° 代码演示

        3.修改表 : 

                1° 基本语法

                2° 代码演示


一、常见列类型(字段类型)

        1.数值类型 : 

                1° 整型

        ①tinyint [1 byte;有符号-128~127,无符号0~255]

        smallint [2 bytes;有符号-2^15~2^15 - 1,无符号0~2^16 - 1]

        mediumint [3 bytes;有符号-2^23~2^23 - 1,无符号0~2^24 - 1]

        int [4 bytes;有符号-2^31~2^31 - 1,无符号0~2^32 - 1]

        bigint [8 bytes;有符号-2^63~2^63 - 1,无符号0~2^64 - 1]

        PS : 1>Δ默认均为有符号数。若想定义无符号数,需要在定义字段的类型时,在后面添加一个UNSIGHED。
                
2>以上范围均为补码可表示的范围。
                3>bit类型默认为无符号数,使用格式为“bit(M)”,其中M表示指定的位数,默认值是1,实际范围是1~64;使用bit类型的字段,查询时以二进制的形式显示;当需要存入0或者1时,可以考虑使用bit(1)来节省空间。

                演示Ⅰ——

                代码如下 : 

# 创建一张新的表
CREATE TABLE IF NOT EXISTS `table_2` 
(
	`id` INT UNSIGNED,
	`key` BIT(1)
) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin ENGINE INNODB;

# 向表中添加数据
INSERT INTO table_2 VALUES(0, 1);

# 查询表
SELECT * FROM table_2;

                运行效果 : 

                演示Ⅱ—— 

                代码如下 : 

CREATE TABLE IF NOT EXISTS `table_1`
(
	`id` bit(8)
);

INSERT INTO table_1 VALUES(38);

SELECT * FROM table_1;

                运行效果 : 

                2° 浮点型 

        float [single precision, 4 bytes]

        double [double precision, 8bytes]

        decimal [M, D],M决定了数的长度(M最大65),D决定了其中的小数位数(D最大30);如果D是0,表示无小数点或分数部分;若D被省略,默认是0;若M被省略,默认是10;

                演示——

                代码如下 : 

CREATE TABLE IF NOT EXISTS `table_3`
(
	`t1` FLOAT,
	`t2` DOUBLE,
	`t3` DECIMAL(25, 20)
);

INSERT INTO `table_3` VALUES(3.14159265358979323, 3.14159265358979323, 3.14159265358979323);

SELECT * FROM `table_3`;

                运行效果 : 

        2.文本类型(字符串类型) : 

        char [0~255(字符)],固定长度字符串(即分配的空间大小是固定的);这里的范围就是字符数的范围(不管中英文)。

        varchar [0~65535 (0 ~ 2^16 - 1)(字节)],可变长度字符串(即分配的空间大小决定于实际的占用情况;这里的范围是字节的范围。实际最大字节是65535 - 3 = 65532,因为要预留出1~3个字节用于存储字段的大小,在不同编码中65532最终对应的字符数不同。

       text [0 ~ 2^16 - 1] ,更简单,存放文本内容时可以考虑,可以将TEXT类型视为VARCHAR类型。PS : TEXT类型没有默认值。

        longtext [0 ~ 2^32 - 1]

        PS : 实际使用时,括号中传入的一定是字符数。一般来讲,使用varchar类型更好;但是,若某个字段已明确为定长,使用char类型可以提高查询速度。

                演示——

                代码如下 : 

CREATE TABLE IF NOT EXISTS `table_4`
(
	`content1` CHAR(255),
	`content2` VARCHAR(255),
	`content3` TEXT(256)
) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin ENGINE INNODB;

INSERT INTO `table_4` VALUES('Cyan_RA9', 'cyan_ra9', '塞峎_RA9');

SELECT * FROM `table_4`;

                运行效果 : 

        3.二进制类型 : 

        blob [0 ~ 2^16 - 1]

        longblob [0 ~ 2^32 - 1]

        PS : 一般不会直接存储二进制数据。

        4.日期类型 : 

        date [日期,年月日]

        time [世界,时分秒]

        datetime [年月份 时分秒 YYYY-MM-DD HH:mm:ss]

        timestamp [时间戳],可在定义时间戳类型的字段时加入以下约束——TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,其中,NOT NULL表示不为空;DEFAULT...表示默认是当前时间戳;ON UPDATE...表示以后每次修改记录(INSERT, UPDATE),时间戳会自动更新为修改时的当前时间戳。

                演示——

                代码如下 : 

CREATE TABLE IF NOT EXISTS `table_5` (
	`date` DATE,
	`time` TIME,
	`datetime` DATETIME,
	`timestamp` TIMESTAMP 
				NOT NULL DEFAULT CURRENT_TIMESTAMP 
				ON UPDATE CURRENT_TIMESTAMP
) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin ENGINE INNODB;

INSERT INTO `table_5`(`date`, `time`, `datetime`) 
	VALUES('2023-5-6', '20:06:55', '2023-5-6 20:06:55');
	
SELECT * FROM `table_5`;

                运行结果 : 


二、表的基本操作

        1.创建表 : 

                1° 基本语法

        CREATE TABLE table_name

        (

                field1 data_type,

                field2 data_type,

                field3 data_type...

        ) CHARACTER SET 字符集 COLLATE 校对规则 ENGINE 引擎;

        其中——

        filed : 字段名,表示指定的列名。

        data_type : 字段的数据类型,表示指定的列类型。

        CHARACTER SET : 若不指定则为表所在数据库的字符集。

        CLOOATE : 若不指定则为表所在数据库的排序规则。

        PS : 创建表时,要根据需保存的数据创建相应的列,并根据字段的数据类型定义相关的列类型。

                2° 代码演示

                首先,选择要创建表的数据库,如下图所示 : 

                代码如下 : 

# 创建数据库
CREATE DATABASE IF NOT EXISTS temp_1 CHARACTER SET utf8mb3 COLLATE utf8mb3_bin;

# 创建表(记得添加反引号)
CREATE TABLE `table_0`
(
	`id` INT,
	`name` VARCHAR(255),
	`password` VARCHAR(255),
	`birthday` DATE
) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin ENGINE INNODB;

                创建效果 : 

        2.删除表 : 

                1° 基本语法

        ①删除整张表——

        DROP TABLE table_name;

        ②只删除表数据(不可使用WHERE)——

        TRUNCATE TABLE table_name;

        ③只删除数据(可使用WHERE)——

        DELETE FROM table_name WHERE...;

                2° 代码演示

                现有三张一模一样的表(table_0,table_1,table_2),表的具体内容如下图所示 : 

                删除表的代码如下 : 

-- 删除表的第一种方式:直接删除整张表。
DROP TABLE `table_0`;

-- 删除表的第二种方式:删除表的所有数据但保留结构
TRUNCATE TABLE `table_1`;

-- 删除表的第三种方式:删除表的指定数据且保留结构
DELETE FROM `table_2` WHERE `name` = 'Ice';

                删除效果 : 

        3.修改表 : 

                1° 基本语法

        ①添加列——

        ALTER TABLE table_name

                ADD column data_type [DEFAULT expr],

                ADD column data_type [DEFAULT expr]...;

        ②修改列的类型——

        ALTER TABLE table_name

                MODIFY column data_type [DEFAULT expr],

                MODIFY column data_type [DEFAULT expr]...;

        ③修改列的名字——

        ALTER TABLE table_name

                CHANGE 旧列名 新列名 data_type NOT NULL DEFAULT '';

        ④删除列——

        ALTER TABLE table_name

                DROP column,

                DROP column ...;

        PS : 

        ①修改表名——

        RENAME TABLE 旧表明 TO 新表名;

        ②修改表字符集——

        ALTER TABLE 表名 CHARACTER SET 字符集;

        ③查看表的结构——

        DESC 表名; (可以查看表的列的情况)

                2° 代码演示

                已知如下表 : 

                该表由以下代码形成 : 

# Create a demo employee table...

CREATE TABLE IF NOT EXISTS `e1` (
	`id` INT,
	`name` VARCHAR(255),
	`sex` char(4),
	`birthday` DATE,
	`entry_date` DATETIME,
	`job` VARCHAR(255),
	`salary` DOUBLE,
	`resume` TEXT(256)
);

INSERT INTO `e1` 
			VALUES(11, 'Cyan', 'male', '2002-11-17', '2025-11-7 00:00:00', 'nb', 20000.0, 'NB');
			
SELECT * FROM `e1`;

                现要求——
                增加VARCHAR类型的image列,要求置于resume后;删除sex列;修改job列的长度为60;修改表名为e1_employee_table:修改表的字符集为utf8mb4;将列名name修改为name_EX

                代码如下 : 

ALTER TABLE `e1` 
			ADD `image` VARCHAR(255) NOT NULL DEFAULT '' 
			AFTER `resume`;

ALTER TABLE `e1` 
			MODIFY `job` VARCHAR(60) NOT NULL DEFAULT '';


ALTER TABLE `e1` 
			CHANGE `name` `name_EX` VARCHAR(255) NOT NULL DEFAULT '';


ALTER TABLE `e1` 
			DROP `sex`;

RENAME TABLE `e1` TO `e1_employee_table`;

ALTER TABLE `e1_employee_table` CHARACTER SET utf8mb4;

DESC `e1_employee_table`;

                效果如下 : 

        System.out.println("END-----------------------------------------------------------------------------");

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

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

相关文章

收藏:不错的质量论述文:《研发效能系列 - 质量与速度能否兼得》

研发效能系列 - 质量与速度能否兼得丨IDCF 引言 我们的时间,应该是用于提高软件质量,还是专注在发布更有价值的功能?这貌似是软件研发中永恒的话题。 到底什么是质量? 质量有什么特质? 质量与速度是什么关系&#…

Actuators + jolokia

Actuators + jolokia Jolokia造成的XXE漏洞 首先我们查看我们当前环境http://x.x.x.x/jolokia/list地址,是否存在reloadByURL这个方法, 这个方法是造成RCE的关键。因为logback组件提供的reloadByURL操作使我们可以从外部URL重新加载日志配置 创建logback.xml和file.dtd文件…

为何要使用MySQL?MySQL和Oracle的区别有什么?

目录 一、为何要使用MySQL?二、MySQL学习路线三、数据库相关概念1、DB,数据库Database。2、DBMS,数据库管理系统Database Management System。3、SQL,结构化查询语言,Structured Query Language。 四、常见的关系型数据…

SpringCloud_Config配置中心和Bus消息总线和Stream消息驱动

文章目录 一、SpringCloudConfig配置中心1、SpringCloudConfig配置中心的概论2、SpringCloudConfig配置中心的gitee仓库搭建3、SpringCloudConfig配置中心服务端的搭建4、SpringCloudConfig配置中心客户端的的搭建5、SpringCloudConfig配置中心客户端动态刷新配置文件 二、Spri…

如何用ChatGPT做品牌联名方案策划?

该场景对应的关键词库(15个): 品牌、个人IP、社交话题、联名策划方案、调研分析、市场影响力、资源互补性、产品体验、传播话题、视觉形象设计、合作职权分配、销售转化、曝光目标、宣发渠道、品牌形象 提问模板(1个)…

Milvus应用开发实战【语义搜索】

美国总统竞选活动即将到来。 现在是回顾拜登政府上任头两年的一些演讲的好时机。 搜索一些演讲记录以了解更多关于白宫迄今为止关于某些主题的信息不是很好吗? 假设我们要搜索演讲的内容。 我们该怎么做? 我们可以使用语义搜索。 语义搜索是目前人工智能…

【谷粒商城之分布式锁Redisson-lock】

本笔记内容为尚硅谷谷粒商城分布式锁Redisson-lock部分 目录 一、分布式锁与本地锁 二、分布式锁实现 使用 RedisTemplate 操作分布式锁 三、Redisson 完成分布式锁 1、简介 2、导入依赖 3、配置 4、使用 1.可重入锁 2.公平锁(Fair Lock) 3…

记录-VUE中常用的4种高级方法

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. provide/inject provide/inject 是 Vue.js 中用于跨组件传递数据的一种高级技术,它可以将数据注入到一个组件中,然后让它的所有子孙组件都可以访问到这个数据。通常情况下&a…

DC-8通关详解

信息收集 漏洞发现 找个扫描器扫一下 msf试了几个exp都没用 那么手动找找 发现传参nid出存在sql注入 python sqlmap -u "http://192.168.45.144:80/?nid1" --union-cols1 -D d7db -T users -C name,pass --columns --tables --dump 用john爆密码 admin爆了20分钟没…

为Linux系统添加一块新硬盘,并扩展根目录容量

我的原来ubuntu20.04系统装的时候不是LVM格式的分区, 所以先将新硬盘转成LVM,再将原来的系统dd到新硬盘,从新硬盘的分区启动,之后再将原来的分区转成LVM,在融入进来 1:将新硬盘制作成 LVM分区 我的新硬盘…

Python进阶

1.Json数据格式(用于不同语言的数据交互) 特定格式的字符串 第一种形式的Json ,转换成字典 第二种形式的Json,转换成字典列表 1.1 Python的Json转化 dumps 方法 Python转Json loads 方法 Json转Python 1.2 字典转json 需要…

Studio One6Mac中文免费版数字音乐工作站DAW

无论你是第一次接触数字音乐工作站(DAW),还是第一次尝试 制作属于自己的音乐,Studio One 都能给你非凡的体验!Studio One 6中文版是一款音乐制作软件,通过新的智能模板、直观的拖放工作流、可定制的用户界面…

C# 使用自带的组件PrintPreviewDialog 和 PrintDocument实现打印预览(一)

文章目录 前言相关内容了解打印预览功能1 创建winform工程2 创建要打印的测试数据3 绘制打印页绘制页脚绘制内容PrintPage事件 完整的代码工程小节 前言 有这么个需求:DataTable中有一些数据是需要给显示或直接可以连接打印机进行打印的, 查阅了一下资料…

jenkins共享ci阶段

jenkins共享ci阶段 需求 一个产品包含多个服务,这些服务的流水线都是类似的:制作制品构建并推送镜像构建并推送chart包触发自动部署。我们期望将流水线拆分为ci流水线、cd流水线,ci流水线包含:制作制品构建并推送镜像构建并推送…

蓝牙协议栈之L2CAP使用

目录 前言一、逻辑链路层及自适应协议层(L2CAP)二、常用的L2CAP术语三、L2CAP的工作模式四、L2CAP通道五、L2CAP帧类型六、Fragmentation/Recombination七、Segmentation/Reassembly八、L2CAP MTU九、Controller to Host Flow Control十、总结 前言 本文…

七个值得推荐的物联网分析平台

物联网分析平台是一种软件工具,可以帮助企业收集和分析来自其广泛的物联网设备的数据。企业可以通过物联网收集大量数据,从消费者支出模式到流量使用,物联网数据分析平台在帮助企业获得竞争优势所需的洞察力方面至关重要。 物联网分析平台已…

「2023 最新」 Github、Gitlab Git 工作流「常用」 git 命令、规范以及操作总结

Git commit 规范 关于提交信息的格式,可以遵循以下的规则: feat: 新特性,添加功能fix: 修改 bugrefactor: 代码重构docs: 文档修改style: 代码格式修改test: 测试用例修改chore: 其他修改, 比如构建流程, 依赖管理 Git 基础知识 当我们通过…

Midjourney生成LOGO指南

目录 常见的Logo 宠物店Logo Graphic Logo​ Lettermark Logo​ Geometric Logo​ Mascot Logo​ 增加风格——艺术运动​ 每个产品都有自己的专属名称,也有自己专属的Logo,经过前几篇的学习,我相信你也有了一定的基础,今天…

TiDB实战篇-PD调度常见问题处理方法

常见的问题 调度产生和执行 常见的调度类型 参数调度的速度 调度典型场景 Leader分布不均匀监控 leader分布算法,每一个leader的size作为总和,还有TiKV的剩余空间等等。 可以手动设置权重。 分布不均衡处理 TiKV节点下线速度慢 TiKV下线速度慢解决方法 …

一文说透IO多路复用select/poll/epoll

概述 如果我们要开发一个高并发的TCP程序。常规的做法是:多进程或者多线程。即:使用其中一个线程或者进程去监听有没有客户端连接上来,一旦有新客户端连接,就新开一个线程(进程),将其扔到线程(或进程&…