SQL语句
- SQL是一种数据库查询和程序设计语言,专门用来操作关系数据库。
- 用于存取数据以及查询、更新和管理关系数据库系统。
【可以通过SQL操作 oracle、sqlserver、mysql、sqlite 等所有的关系型数据库。】
SQL语言分类
- 数据检索 select 语句
- 数据操作 dml 语句:对数据进行增加、修改、删除【insert,delete,update】
- 数据定义 ddl 语句:进行数据库、表的管理等【create,drop,alter,truncate】
- 事务操作 tcl 语句:事务处理语言,对事务进行处理【commit,rollback,savepoint】
- 数据控制 dcl 语句:进行授权与权限回收【grant revoke】
【SQL语句不区分大小写】
常用命令
- 查看版本:select version();
- 显示当前时间:select now();
- ⭐查看所有数据库:show databases;
- ⭐切换使用的数据库:use 数据库名;
- ⭐查看当前使用的数据库:select database();
- ⭐创建数据库:create database XXX;
- ⭐查看数据库下的表:show tables from 数据库名;
- ⭐查看表的信息:desc 表名;
- 删除数据库:drop database 数据库名;
数据有效性
一个数据库就是一个完整的业务单元,可以包含多张表,相关的数据被存储在表中。
- 为了更加准确存储表中的数据,保证数据的正确有效性,在创建表的时候,为表添加一些强制的验证,包括数据字段的类型,约束条件等。
- 数据类型的使用原则是:够用就行,尽量使用取值范围小的,可以节省存储空间。
常用的数据类型:
- 整数:int、bit
- 小数:decimal
- 字符串:varchar、char
- 日期时间: date、time、datetime
- 枚举类型:(enum)
整型
- 作用:存储年龄,等级,id,各种号码。
tinyint[(m)] [unsigned] [zerofill]
小整数,用于保存一些范围的整数数值范围:
- 有符号:-128 ~ 127
- 无符号:0 ~ 255
- MySQL中无布尔值,使用tinyint(1)构造。
int[(m)] [unsigned] [zerofill]
整数,用于保存一些范围的整数数值范围:
- 有符号:-2147483648 ~ 2147483647
- 无符号:0 ~ 4294967295
bigint[(m)] [unsigned] [zerofill]
大整数,用于保存一些范围的整数数值范围:
- 有符号:-9223372036854775808 ~ 9223372036854775807
- 无符号:0 ~ 18446744073709551615
⭐int 类型后面的存储是显示宽度,而不是存储宽度。
int 的存储宽度是4个Bytes,即32个bit,即2**32。
- 无符号最大值为:4294967296-1
- 有符号最大值:2147483648-1
【有符号和无符号的最大数字需要的显示宽度均为10,针对有符号的最小值需要11位才能显示完全,所以 int 类型默认的显示宽度为11是非常合理的】
【整形类型没有必要指定显示宽度,使用默认的就好】
浮点型
- 定点数类型:DEC等同于DECIMAL
- 浮点类型:FLOAT DOUBLE
- 作用:存储薪资、身高、体重、体质参数等。
FLOAT [(M,D)] [UNSIGNED] [ZEROFILL]
单精度浮点数(非准确小数值),M是全长,D是小数点后个数。M最大值为255,D最大值为30。
- 有符号:-3.402823466E+38 ~ -1.175494351E-38 6 1.175494351E-38 ~ 3.402823466E+38
- 无符号:1.175494351E-38 ~ 3.402823466E+38
【精确度:随着小数的增多,变得不准确。】
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
双精度浮点数(非准确小数值),M是全长,D是小数点后个数。M最大值为255,D最大值为30。
- 有符号:-1.7976931348623157E+308 ~ -2.2250738585072014E-308 2.2250738585072014E-308 ~ 1.7976931348623157E+308
- 无符号:2.2250738585072014E-308 ~ 1.7976931348623157E+308
【精确度:随着小数的增多,精度比float要高,但也会变得不准确。】
decimal[(m[,d])] [unsigned] [zerofill]
准确的小数值,M是整数部分总个数(负号不算),D同上。M最大值为65,D最大值为30。
【精确度:随着小数的增多,精度始终准确。】
- 对于精确数值计算时需要用此类型
- decaimal能够存储精确值的原因在于其内部按照字符串存储。
日期类型
DATE、TIME、DATETIME、TIMESTAMP、YEAR
作用:存储用户注册时间、文章发布时间、员工入职时间、出生时间、过期时间等
- YEAR:YYYY(1901/2155)
- DATE:YYYY-MM-DD(1000-01-01/9999-12-31)
- TIME:HH:MM:SS('-838:59:59'/'838:59:59')
- DATETIME:YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)
- TIMESTAMP:YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)
- 单独插入时间时,需要以字符串的形式,按照对应的格式插入。
- 插入年份时,尽量使用4位值。
- 插入两位年份时,<=69,以20开头,如50,结果2050; >=70,以19开头,如71,结果1971。
总结
类型 | 大小 | 具体类型 | 用途 | 备注 |
CHAR | 0-255字节 | 字符串类型 | 定长字符串 | |
VARCHAR | 0-65535字节 | 字符串类型 | 变长字符串 | 5.0.3版本 |
TEXT | 0-65535字节 | 字符串类型 | 长文本数据 | |
INT/INTEGER | 4字节 | 数值类型 | 大整数值 | |
FLOAT | 4字节 | 数值类型 | 单精度 | |
DOUBLE | 8字节 | 数值类型 | 双精度 | |
DATE | 3字节 | 日期和时间类型 | 日期值 | YYYY-MM-DD |
TIME | 3字节 | 日期和时间类型 | 时间值 | HH:MM:SS |
YEAR | 1字节 | 日期和时间类型 | 年份值 | YYYY |
附:
- decimal:浮点数,如decimal(5,2),表示共存5位数,小数占2位(999.99)。
- char:固定长度的字符串,如char(4),放入数据 'abc' 会补一个空格为 ‘abc ’。
- varchar:可变长度的字符串,如varchar(4),放入数据 ‘abc’ 就会存储 ‘abc’。
- 字符串text:存储大文本,当字符大于4000时使用。
- 对于图片、音频、视频等文件,不存储在数据库中,而是上传到对应的服务器上,在表中存储这个文件的保存路径。
- 一个汉字占多少长度与编码有关 UTF-8:一个汉字=3字节 GBK: 一个汉字=2字节
MySQL基础知识到这里就全部更完了,下期更新SQL语句。
上期回顾:MySQL基础知识(一)
【发现有误及时联系】【喜欢记得点赞收藏❤】【欢迎评论补充】
_犬少加油!及时查漏补缺才是关键!