【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 |
BOOL | 1byte | TINYINT(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) | 4byte | INT的同义词 |
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 | -128 | 127 | 0 | 255 |
SMALLINT(M) | 2byte | -32768 | 32767 | 0 | 65535 |
MEDIUINT(M) | 3byte | -8388608 | 8388607 | 0 | 16777215 |
INT(M) | 4byte | -2147483648 | 2147483647 | 0 | 4294967295 |
BIGINT(M) | 8byte | -2^63 | 2^63 | 0 | 2^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 |
DATE | 3 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时,会自动更新。
结语
感谢您的耐心阅读,希望这篇博客能够为您带来新的视角和启发。如果您觉得内容有价值,不妨动动手指,给个赞👍,让更多的朋友看到。同时,点击关注🔔,不错过我们的每一次精彩分享。若想随时回顾这些知识点,别忘了收藏⭐,让知识触手可及。您的支持是我们前进的动力,期待与您在下一次分享中相遇!
路漫漫其修远兮,吾将上下而求索。