SQL语言基础知识(2)

        在学会创建数据库之后,在数据库中需要创建表(实体以表的形式存在),以及对表中存储的数据记录进行定义,相当于 Java 语言中对类编写其属性。在定义前我们需要了解 SQL 语言有哪些数据类型。

一、数据类型

1.1 数据值类型

        1.1.1 整型

类型大小说明对应 Java 类型
bit [(M)]默认 bit位值类型。M表示每个值的位数,取值范围是1~64.如果省略M,则默认是1
tinyint [(M)]1 byte取值范围 -2⁷ ~ 2⁷-1(-128到127),无符号取值范围2⁸-1Byte
bool1 byte通常用 tinyint(1) 表示true。值为零表示假,非零表示真Boolean
smallint [(M)]2 byte取值范围 -2¹⁵ ~ 2¹⁵-1,无符号取值范围 2¹⁶-1Short
mediumint [(M)]3 byte取值范围 -2²³ ~ 2²³-1,无符号取值范围 2²⁴-1
int [(M)]4 byte取值范围 -2³¹ ~ 2³¹-1,无符号取值范围 2³²-1 Int
integer [(M)]4 byteint[(M)] 的同义词Integer
bigint [(M)]8 byte取值范围 -2⁶³ ~ 2⁶³-1,无符号取值 2⁶⁴-1Long

        bigint 一般用来作编号的类型。

        1.1.2 浮点型

类型大小说明
float [(M,D)]4 byte单精度浮点型,M是总位数,D是小数点后面的位数,大约可以精确到小数点后7位。
double [(M,D)]8 byte单精度浮点型,M是总位数,D是小数点后面的位数,大约可以精确到小数点后15位。
decimal [(M,D)]动态不存在精度损失,M是总位数,D是小数点后面的位数。decimal的最大位数(M) 是65,最大小数位数(D)是30.如果省略M,则默认是10,如果省略D,则默认为0。M中不计算小数点和负数的-号,如果D为0,则值没有小数点和小数部分。

        decimal 一般用于表示金额 / 价格,可以存放很大的数,也可以根据项目要求自己设置小数精度,适用范围广。

1.2 字符串类型

类型说明
char [(M)]固定长度字符串,M表示长度,以字符为单位,取值范围0~255,M省略则长度为1
varchar (M)可变长度字符串,M表示字符最大长度,取值范围0~65535字节,有效字符个数取决于实际指定的字符数和使用的字符集,最常用
tinytext小文本类型,最大长度为255个字节,有效字符个数取决于使用的字符集
text [(M)]文本类型,最大长度为65535个字节,有效字符个数取决于使用的字符集
midiumtext中文本类型,最大长度为16,777,215个字节,有效字符个数取决于使用的字符集
longtext大文本类型,最大长度为4,294,967,295 即4GB个字节,有效字符个数取决于使用的字符集

        对于 varchar 最常用的字符串类型其大小如果以字符为单位,就需要根据字符的具体情况用 1~4 个字节来表示一个字符。在 utf8mb4 编码集下,一个 varchar 字段最多可以存放 65535 / 4 = 16383 个字符。

1.3 二进制类型

        文本类型是人类能直接看懂的,而二进制类型,则是给机器看的。

类型大小
binary [(M)]固定长度二进制字节,与char类似,但存储的是二进制字节而不是字符串。M表示长度,以字节为单位,取值范围0~255,M省略则长度为1
varbinary (M)可变长度二进制字节,与varchar类似,但存储的是二进制字节而不是字符串。M表示长度,以字节为单位
tinyblob小二进制字节类型,最大长度为255个字节
blob [(M)]二进制字节类型,最大长度为65535个字节
midiumblob中二进制字节类型,最大长度为16,777,215个字节
longblob大二进制字节类型,最大长度为 4,294,967,295即4GB个字节

1.4 日期类型

数据类型大小说明对应Java类型
datetime [(fsp)]8字节

日期类型和时间类型结合

范围从1000-01-01 00:00:00.000000 到 9999-12-31 23:59:59:59.499999,不会进行时区的检索及转换

显示格式 yyyy-mm-dd hh:mm:ss[.fraction]

0值为 0000-00-00 00:00:00

java.util.Date, java.sql.Timestamp
timestamp4字节

时间戳类型

范围从1970-01-01 00:00:01.000000 到2038-01-19 03:14:07.499999,自动检索当前时区并进行转换

0值为 0000-00-00 00:00:00

java.util.Date, java.sql.Timestamp
date3 字节

日期类型

支持范围 1000-01-01 到 9999-12-31

显示格式 yyyy-mm-dd

0值 0000-00-00

time [(fsp)]3 字节

时间类型

支持范围 -838:59:59.000000 ~ 838:59:59.000000

显示格式为 hh:mm:ss[.fraction]

0值 00:00:00

year [(4)]1 字节

4位格式的年份

支持范围 1901~2155

        fsp 为可选设置,用来指定小数秒精度,范围从 0~6,值为0表示没有小数部分,如果省略,默认精度为0;

        对于 timestamp 时间戳,一旦时间超过2038年就会出现溢出的问题,因此现在普遍使用 datetime 类型。

1.5 枚举和集合

类型说明
enum('value1', 'value2', ...)

枚举

从值列表 'value1','value2'或 ''(空字符串)和null中选一个值

最多可以有65535个不同的元素

单个元素的最大长度是 M <= 255 或 (M * w) <= 1020,其中M是元素字符长度,w是字符集中字符所需的最大字节数

enum 的值在内部表示为整数

set('value1', 'value2', ...)

集合

从值列表 'value1','value2'...中选零个或多个值

最多64个元素

单个元素的最大长度是 M <= 255 或 (M * w) <= 1020,其中M是元素字符长度,w是字符集中字符所需的最大字节数

set 值在内部表示为整数

二、表操作指令

        在操作表之前,应该要选择要操作的目标数据库,才能对表进行操作。

2.1 查看所有表指令:show tables;

2.2 创建表

 create [temporary] table [if not exists] tbl_name (field datatype [约束] [comment '注解内容'][, field datatype [约束] [comment '注解内容']] ...) [engine 存储引擎] [character set 字符集] [collate 排序规则];

• temporary:表示创建的是一个临时表

• field:列名

• datatype:数据类型

• comment:对列的描述或说明

• engine:存储引擎,不指定则使⽤默认存储引擎

• characterset:字符集,不指定则使⽤默认字符集

• collate:排序规则,不指定则使⽤默认排序规则

        注意:定义字段时,最后一个字段是没有逗号的,且定义字段用一个小括号括起来,最后要以分号结束。

示例:创建一个学生表,表中包含3个字段,id表示学生号,name表示学生姓名,gender表示性别

2.3 查看表结构指令:desc 表名

2.4 删除表

drop [temporary] table [if exists] tbl_name [,tab_name]...

        命令行客户端工具只执行一些简单的查询指令,如果一两句 SQL 可以解决的可以用命令行工具执行。但对于比较复杂的 SQL,比如表涉及、复杂查询,建议还是使用可视化工具。MySQL 就提供了快捷方式 MySQL Workbench 工具。以下是使用该工具进行建表的示例:

2.5 修改表 alter

alter table tbl_name [alter_option [, alter_option] ...];alter_option: {table_options| add [COLUMN] col_name column_definition [FIRST | AFTER col_name]| modify [COLUMN] col_name column_definition [FIRST | AFTER col_name]| drop [COLUMN] col_name| rename COLUMN old_col_name TO new_col_name| rename [TO | AS] new_tbl_name
}

2.5.1 add 向表中新增一列

alter table 表名 add 列名 数据类型 [comment '注释' after 指定列名];

2.5.2 modify 修改某列的长度

alter table 表名 modify 列名 数值长度;

2.5.3 rename 重命名某列

alter table 表名 rename column 要修改的原始列名 to 新列名;

2.5.4 drop 删除某个字段

alter table 表名 drop 列名;

2.5.5 rename to 修改表名

alter table 旧表名 rename to 新表名;    /    rename table 旧表名 to 新表名;

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

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

相关文章

响应式编程框架Reactor【1】

文章目录一、Reactor 框架概述与理论基础1.1 响应式编程&#xff08;Reactive Programming&#xff09;是什么&#xff1f;1.2 Reactive Streams 规范1.3 响应式编程与 Reactor 的诞生1.4 Reactor核心特性1.5 Reactor与其它响应式框架比较二、Reactor核心类型2.1 Reactor 核心概…

【LeetCode】29. 两数相除(Divide Two Integers)

文章目录29. 两数相除&#xff08;Divide Two Integers&#xff09;1. 题目重述与约束解析2. 算法选择与总体设计3. 核心难点与关键技巧4. 解法一&#xff1a;快倍增&#xff08;重复加倍减法&#xff09;4.1 思路4.2 流程图4.3 正确性要点5. 解法二&#xff1a;位移长除法&…

智能物联网(AIoT)核心技术落地路径与企业数字化转型适配方案

一、行业现状&#xff1a;AIoT 落地潜力与企业转型痛点并存根据中国信通院《2023 年中国物联网发展白皮书》数据&#xff0c;截至 2023 年&#xff0c;我国物联网设备连接数已突破 300 亿&#xff0c;庞大的设备基数为企业数字化转型奠定了技术基础。但与之形成鲜明对比的是&am…

前端文件下载的三种方式:URL、二进制与 Base64 的深度解析

前言在 Web 应用开发中&#xff0c;文件下载是一个常见的功能需求。从简单的图片保存到复杂的报表导出&#xff0c;前端开发者需要根据后端返回的数据格式选择合适的处理方式。本文探讨三种主流的文件下载方式 —— 基于 URL、二进制数据和 Base64 编码的实现原理、区别对比及通…

B站 XMCVE Pwn入门课程学习笔记(8)

这个视频讲的比较难&#xff0c;我花了比较长时间来分析&#xff0c;甚至一个点反复很多次&#xff0c;这也是在学PWN的过程中不可避免的&#xff0c;需要坚持和毅力pwn3:没有system&#xff0c;通过ROP调用write的plt入口&#xff0c;执行write函数&#xff0c;并且将gots里的…

AMGCL介绍和使用

文章目录一、AMGCL 简介1.1 什么是 AMG&#xff1f;1.2 AMGCL 特点二、安装与配置2.1 获取源码2.2 编译依赖&#xff08;可选&#xff09;三、基本使用示例3.1 构造稀疏矩阵&#xff08;以 1D Poisson 为例&#xff09;四、核心组件介绍4.1 后端&#xff08;Backend&#xff09…

AI解决生活小事系列——用AI给我的电脑做一次“深度体检”

哈喽&#xff0c;大家好&#xff0c;这里是Ai极客团长&#xff0c;我打算做一个用AI解决生活实际问题的系列专栏。 决定做这个系列的初衷很简单&#xff1a;现在打开手机、电脑&#xff0c;到处都是 "AI 改变世界" 的宏大叙事&#xff0c;但对普通人来说&#xff0c…

JavaWeb 30 天入门:第二十一天 ——AJAX 异步交互技术

在前二十天的学习中&#xff0c;我们掌握了 JavaWeb 开发的核心技术&#xff0c;包括 Servlet、JSP、会话管理、过滤器、监听器、文件操作、数据库交互、连接池、分页与排序等。今天我们将学习一项彻底改变 Web 应用交互方式的技术 ——AJAX&#xff08;Asynchronous JavaScrip…

从枯燥C++到趣味音乐:我的Windows系统底层探索之旅

一段穿越计算机抽象层次的旅程&#xff0c;从高级语言到底层硬件&#xff0c;探索代码如何创造美妙旋律第一章&#xff1a;初学C的枯燥与灵感闪现 当我第一次打开《C Primer Plus》这本厚重的教程时&#xff0c;面对那些晦涩的语法规则和抽象概念&#xff0c;确实感到有些枯燥乏…

taro+vue3+vite项目 tailwind 踩坑记,附修复后的模板源码地址

tailwind 踩坑记 这&#xff0c;是taro官网地址&#xff1a;taro引入tailwind的教程 我完全按照上面的步骤来&#xff0c;结果根本无效&#xff08;文档太过时了&#xff09; 我后来又按照 weapp-tailwindcss 的官方文档做了一番修正&#xff1a; weapp-tailwindcss Taro (所…

LCEDA电气规则

MARK点普通问题 铺铜太靠近MARK点放置一个禁止区域&#xff0c;圆形编辑封装

无人机Remote ID:天空中的数字车牌与未来空域管理

一架没有牌照的汽车上路会被交管部门处罚,那么一架没有“数字车牌”的无人机升空呢?随着无人机Remote ID技术的推广,未来天空中的每架无人机都将拥有自己的身份标识。 近年来,无人机呈爆炸式增长,从航拍摄影到物流配送,从农业植保到应急救援,应用场景不断拓展。但随着无…

自下而上的树形dp

最大独立集 1.蓝桥舞会 link:1.蓝桥舞会 - 蓝桥云课 分析&#xff1a; code #include <bits/stdc.h> using namespace std; using ll long long; const ll MAXN 1e5 7; ll hpy[MAXN], fa[MAXN], dp[MAXN][2]; vector<ll> sons[MAXN];void dfs(ll u, ll fa) {…

Docker 详解+示例

介 绍Docker 是一个开源的容器化平台&#xff0c;它的核心目标是解决 “软件在不同环境下运行不一致” 的问题&#xff0c;实现 “一次构建&#xff0c;到处运行” 。它基于 Linux 内核的底层技术&#xff0c;将应用程序及其依赖&#xff08;如库文件、配置、运行环境等&#x…

洛谷 P2568 GCD-提高+/省选−

题目描述 给定正整数 nnn&#xff0c;求 1≤x,y≤n1\le x,y\le n1≤x,y≤n 且 gcd⁡(x,y)\gcd(x,y)gcd(x,y) 为素数的数对 (x,y)(x,y)(x,y) 有多少对。 输入格式 只有一行一个整数&#xff0c;代表 nnn。 输出格式 一行一个整数表示答案。 输入输出样例 #1 输入 #1 4输…

软件测试覆盖率与质量保障专业经验分享报告

测试覆盖率的核心维度与评估标准 多维度定义与核心内涵 测试覆盖率是衡量软件测试完整性的关键指标体系,分为测试覆盖率(黑盒视角:需求验证程度)和代码覆盖率(白盒视角:代码执行占比)两大基础类型。现代测试覆盖体系已扩展至产品覆盖、风险覆盖、平台/设备覆盖、数据覆…

使用CCProxy搭建http/https代理服务器

下载 https://user.youngzsoft.com/ccproxy/update/ccproxysetup.exe 我们使用免费的即可&#xff0c;3个人。 启动软件 设置 更改局域网IP 我的电脑有多个IP&#xff0c;所以要手工指定。

ICCV 2025|TRACE:无需标注,用3D高斯直接学习物理参数,从视频“预知”未来!

论文链接&#xff1a;https://arxiv.org/pdf/2507.01484导读 准确预测道路智能体的运动对于自动驾驶的安全性至关重要。当前&#xff0c;现有的数据驱动方法直接预测未来轨迹&#xff0c;缺乏对驾驶行为的充分考虑&#xff0c;限制了可解释性和可靠性。为此&#xff0c;本文引入…

TypeScript:symbol类型

symbol是TypeScript和JavaScript中的一种基本数据类型&#xff0c;表示唯一的、不可变的标识符。作为专业的前端工程师&#xff0c;理解symbol的特性对于构建安全可靠的代码至关重要。1. symbol的核心特性唯一性&#xff1a;每个symbol值都是唯一的&#xff0c;即使创建时使用相…

【深度学习新浪潮】显著性检测最新研究进展(2022-2025)

1. 弱监督与主动学习 ASTE-AL框架(TPAMI 2024):提出对抗性时空集成主动学习方法,通过点标记数据集(每张图像仅需10个标注点)达到全监督模型98%-99%的性能。其核心模块包括: FPGD-PA对抗攻击:通过无额外计算成本的自由梯度下降攻击定位不确定像素。 时空集成策略:减少模…