当前位置: 首页 > article >正文

【MySQL】第一弹----库的操作及数据类型

 笔上得来终觉浅,绝知此事要躬行

🔥 个人主页:星云爱编程

🔥 所属专栏:MySQL

🌷追光的人,终会万丈光芒  

 🎉欢迎大家点赞👍评论📝收藏⭐文章

  

一、SQL 语句分类

DDL:数据定义语句

DML:数据操作语句

DQL:数据查询语句

DCL:数据控制语句

二、基本语句

2.1创建数据库

CREATE DATABASE [ IF NOT EXISTS ] db_name  [ CHARACTER SET charset_name]  [ COLLATE collation_name ];

说明:

(1)红色字体表示必需要有的语句,绿色字体表示可以省略的语句。

(2)IF NOT EXISTS :在创建数据库时先检验db_name数据库是否存在,若不存在则创建,存在则不创建。

(3) CHARACTER SET charset_name :用于指定数据库采⽤的字符集编码,若不指定字符集,默认为utf8。

(4)COLLATE collation_name:用于指定数据库字符集的校验规则(常用的utf8_bin区分大小写、utf8_general_ci不区分大小写。默认为utf8_general_ci)。 

2.2查看、删除数据库

显示数据库语句:SHOW DATABASES;

显示数据库创建语句:SHOW CREATE DATABASE db_name

删除数据库:DROP DATABASE [ IF NOT SXISTS ] db_name

2.3备份恢复数据库

(1)备份数据库

mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n >路径加文件名.sql

注意:要在mysql安装目录\bin下dos窗口运行

eg:

mysqldump -u root -p -B db01 >D:\\test.sql

(2)恢复数据库

Source 路径+文件名.sql

注意:要在mysql命令行执行

eg:

Source D:\\test.sql

2.4备份恢复数据库的表

(1)备份数据库的表

mysqldump -u 用户名 -p  数据库 表1 表2 表n >路径加文件名.sql

注意:要在mysql安装目录\bin下dos窗口运行

eg:

mysqldump -u root -p db01 users >D:\\test.sql

(2)恢复数据库的表

source 路径+文件名.sql

注意:要在mysql命令行执行

eg:

source D:\\test.sql

2.5创建表

CREATE TABLE table_name 

filed1 datatype,

filed2 datatype,

filedn datatype

)character set 字符集 collate 校对规则 engine 存储引擎;

说明:

(1)filed 指定列名 datatype 指定列类型;

(2)character set 指定字符集,若不指定则默认为所在数据库字符集;

(3)collate 指定校对规则,若不指定则默认为所在数据库校对规则;

(4) engine 引擎。

三、常用数据类型(列类型)

3.1数据值类型

3.1.1类型列表

类型大小说明
BIT(M)默认bit位值类型。M表⽰每个值的位数,取值范围为1~64,如果省略M,则默认为1。
TINYINT(M) 1byte取值范围-2^7~2^7-1,无符号取值范围2^8-1
BOOL1byteTINYINT(1)的同义词,值为0认为是假,非0认为是真
SMALLINT(M)2byte取值范围-2^15~2^15-1,无符号取值范围2^16-1
MEDIUINT(M)3byte取值范围-2^23~2^23-1,无符号取值范围2^24-1
INT(M)4byte取值范围-2^31~2^31-1,无符号取值范围2^32-1
INTEGER(M)4byteINT的同义词
BIGINT(M)8byte取值范围-2^63~2^63-1,无符号取值范围2^64-1
FLOAT(M)4byte单精度浮点型,M是总位数,D是⼩数点后⾯的位数,⼤约可以精确到⼩数点后7位
DOUBLE(M)8byte双精度浮点型,M是总位数,D是⼩数点后⾯的位数,大约可以精确到小数点后15位。
DECIMAL(M,D)动态不存在精度损失,M是总位数,D是小数点后的位数。DECIMAL的最⼤位数(M)为 65,最大小数位数(D)为30。如果省略M,则默认为10,如果省略D,则默认为 0。M中不计算小数点和负数的-号,如果D为0,则值没有小数点和小数部分。

3.1.2数据类型取值范围 

类型⼤⼩有符号最⼩值有符号最⼤值⽆符号最⼩值⽆符号最⼤值
TINYINT(M) 1byte-1281270255
SMALLINT(M)2byte-3276832767065535
MEDIUINT(M)3byte-83886088388607016777215
INT(M)4byte-2147483648214748364704294967295
BIGINT(M)8byte-2^632^6302^64-1

3.1.3数值型的基本使用

(1)整数

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

eg:

create table t1(
 id TINYINT);


create table t2(
 id TINYINTUNSIGNED);

注:

①如果没有指定unsinged,则TINYINT就是有符号-128~127;

②如果指定unsinged,则TINYINT就是无符号0-255。

(2)bit(M)

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

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

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

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

(3)浮点数

①FLOAT/DOUBLE[UNSIGNED]

Float单精度浮点数,Double双精度浮点数

②DECIMAL(M,D)

可以支持更加精确的小数位,M是小数位数(精度)的总数,D是小数点(标度)后面的位数。如果省略M,则默认为10,如果省略D,则默认为 0。M中不计算小数点和负数的-号,如果D为0,则值没有小数点和小数部分。M最大是65,D最大是30。

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

3.2字符串类型 

3.2.1类型列表

类型说明
CHAR[(M)]固定⻓度字符串, M 表示长度,以字符为单位,取值范围 0 ~ 255 , M 省略则长度为 1
VARCHAR(M)可变⻓度字符串, M 表⽰字符最大长度,范围为 0 ~ 65535 ,有效字符个数取决于实际字符数和使⽤的字符集
TINYTEXT小文本类型,最大长度为 255 (2^8-1)个字符,有效字符个数取决于使用的字符集
TEXT(M)⽂本类型,最大长度为 65535 (2^16-1)个字符,有效字符个数取决于使用的字符集
MEDIUMTEXT中⽂本类型,最大长度为 16,777,215 (2^24-1)个字符,有效字符个数取决于使用的字符集
LONGTEXT大文本类型,最大长度为 4,294,967,295 即 4GB (2^32-1)个字符,有效字符个数取决于使用的字符集
BINARY(M)固定⻓度⼆进制字节,于CHAR类似,但存储的是⼆进制字节而不是字符串。 M表示长度,以字节为单位,取值范围 0 ~ 255 , M 省略则长度为 1
VARBINARY(M)可变⻓度⼆进制字节,于VARCHAR类似,但存储的是⼆进制字节⽽不是字符串。M 表⽰⻓度,以字节为单位
TINYBLOB小二进制字节类型,最⼤⻓度为 255 (2^8-1)个字节
BLOB(M)⼆进制字节类型,最大长度为 65535 (2^16-1)个字节
MEDIUMBLOB中⼆进制字节类型,最大长度为 16,777,215 (2^24-1)个字节
LONGBLOB大二进制字节类型,最大长度为 4,294,967,295 即 4GB (2^8-1)个字节
ENUM('value1','valu e2',...)

枚举

•从值列表 'value1','value2' 或 ''( 空字符串 ) 和 NULL 中选⼀个值

•最多可以有 65,535 个不同的元素

•单个元素的最⼤⻓度是 M <= 255 或 (M x w) <= 1020 ,其中 M 是元素字 符⻓度, w 是字符集中字符所需的最⼤字节数

• ENUM的值在内部表⽰为整数

SET('value1','value 2',...)

集合

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

•最多64个元素

•单个元素的最⼤⻓度是 M <= 255 或 (M x w) <= 1020 ,其中 M 是元素字 符⻓度, w 是字符集中字符所需的最⼤字节数

•SET值在内部表⽰为整数

3.2.2字符串的基本使用

(1)CHAR(size)

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

(2)VARCHAR(size)

范围为0~65535字节,可变长度字符串最大65532字节【utf8编码最大21844字符1-3个字节用于记录大小】

如果表的编码是utf8varchar(size)size=(65535-3)/3=21844字符;

如果表的编码是gbkvarchar(size)size=(65535-3)/2=32766字符。

3.2.3字符串使用细节

(1)char(4),这个4表示字符数(最大255),不是字节数,不管中文还是字母都是放4个,按字符来存放的;

(2)char(4),是固定的大小,即尽管你插入“ab”,也会占用/分配4个字符的空间;

(3)varchar(4),这个4表示字符数,不管中文还是字母都是放4个,按字符来存放的;

(4)varchar(4),是可变化的大小,即你插入了“ab”,实际占用空间并不是4个字符,而是按照实际占用空间来分配;

注:varchar本身还需要占用1~3个字节来记录存放内容长度,即实际数据大小+(1~3)个字节。

(5)如果数据是定长,推荐使用char,例如:手机号,身份证号;

(6)如果一个字段的长度不确定,使用varchar,例如:留言,文章;

(7)查询速度:char>varchar。

(8)在存放文本时,可以使用Text数据类型。可以将TEXT列看成VARCHAR列,注意Text不能有默认值,大小为0~2^16字节。

3.3日期类型

3.3.1类型列表

类型大小说明0值
TIMESTAMP( fsp)4 bytes

•时间戳类型

•⽀持范围 1970-01-01 00:00:01.000000 ~ 20388-01-19 03:14:07.499999

0000-00 00 00:00:00
DATETIME(fsp)8 bytes

•⽇期类型和时间类型的组合

•⽀持范围 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.499999

•显⽰格式为 YYYY-MM-DD hh:mm:ss[.fraction]

0000-00-00 00:00:00
DATE3 bytes

•⽇期类型

•⽀持范围 1000-01-01 ~ 9999-12-31

•显⽰格式为 YYYY-MM-DD

0000-00-00
TIME(fsp)3 bytes

•时间类型

•⽀持范围-838:59:59.000000 ~ 838:59:59.000000

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

00:00:00
YEAR(4)1 byte

•4位格式的年份

•⽀持范围 1901 ~ 2155

•显⽰格式为 YYYY

0

3.3.2的基本使用

• fsp 为可选设置,⽤来指定⼩数秒精度,范围从0到6,值为0表⽰没有⼩数部分,如果省略,默认 精度为0

• CURRENT_DATE 和 CURRENT_DATE() 是 CURDATE() 的同义词⽤于获取当前⽇期

• CURRENT_TIME 和 CURRENT_TIME([fsp]) 是 CURTIME() 的同义词⽤于获取当前时间

• CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP([fsp]) 是 NOW() 的同义词⽤于获取当前⽇期和时间 

注:TimeStamp在insert和update时,会自动更新。 

结语

感谢您的耐心阅读,希望这篇博客能够为您带来新的视角和启发。如果您觉得内容有价值,不妨动动手指,给个赞👍,让更多的朋友看到。同时,点击关注🔔,不错过我们的每一次精彩分享。若想随时回顾这些知识点,别忘了收藏⭐,让知识触手可及。您的支持是我们前进的动力,期待与您在下一次分享中相遇!

路漫漫其修远兮,吾将上下而求索。


http://www.kler.cn/a/461023.html

相关文章:

  • 【图像处理】OpenCv + Python 实现 Photoshop 中的色彩平衡功能
  • USB射频微波功率计的功能与优势-盛铂科技
  • Python 字符串定义及前缀
  • Linux 挥别 WinXP 时代协议,USB RNDIS 即将退场
  • laravel部署到云服务器上,除了首页之外,区域页面找不到路由
  • 若依框架之简历pdf文档预览功能
  • 网络安全问题解答
  • 尚硅谷Vue3入门到实战 —— 02 编写 App 组件
  • axios拦截器底层实现原理
  • 基于SpringBoot+Vue的旅游推荐系统
  • [pdf、epub]260道《软件方法》强化自测题业务建模需求分析共216页(202412更新)
  • Doris安装部署
  • 实现单例模式的五种方式
  • jQuery学习笔记1
  • 无人机任务载荷系统之电子对抗技术!
  • 使用PyTorch实现的二分类模型示例,综合了CNN、LSTM和Attention技术
  • MyBatis-Plus 中的分页插件配置
  • 在C++中,dynamic_cast是一种用于在类的继承体系中进行安全向下转型
  • 搭建ZooKeeper分布式集群
  • 2、单片机、CC2530、zigbee期末考试选择、填空题含答案
  • 如何确保Kafka集群的高可用?
  • Cursor小试1.生成一个网页的接口请求工具
  • Django 管理界面实现自动提交和动态字段选项
  • 鸿蒙HarmonyOS应用开发 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
  • C++中宏的使用方法
  • AI同传的崛起:人工同传还能坚持多久?