MySQL是一个关系型数据库管理系统(RDBMS),它是当前最流行的 RDBMS 之一。MySQL分为社区版和企业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

一、什么是SQL

SQL,即结构化查询语言(Structured Query Language),是与关系型数据库进行通信的标准语言。目前最新的标准是2008年7月开始采用的SQL-2008。

所谓SQL实现是指特定厂商的SQL产品或关系型数据库管理系统(RDBMS),目前主流的关系型数据库有DB2、Oracle、SQL Server、MySQL、PostgresSQL等。各种不同的SQL实现对SQL语言的支持与标准存在着细微的不同,所以,实际上不同数据库系统之间的SQL不能完全相互通用。

二、 SQL命令类型

结构化查询语言包含6个部分。

2.1 数据定义语言(DDL)

数据定义语言(DDL)用于创建和重构数据库对象,比如创建和删除表。

create table
alter table
drop table
create index
alter index
drop index
create view
drop view

2.2 数据操作语言(DML)

数据操作语言(DML)用于操作关系型数据库对象内部的数据。

insert
update
delete

2.3 数据查询语言(DQL)

数据查询语言(DQL)是最受关注的部分。虽然只有一个命令,但这个命令具有很多选项和子句。

select

2.4 数据控制语言(DCL)

数据控制语言(DCL)用于控制对数据库里数据的访问,比如创建与用户访问相关的对象、控制用户的权限。

alter password
grant /*赋予访问权限*/
revoke /*取消访问权限*/

2.5 数据管理命令

数据管理命令用于对数据库里的操作进行审计和分析,还有助于分析系统性能。

start audit   /*审计*/
stop audit

2.6 事务控制命令

事务控制命令用于管理数据库事务,确保被DML语句影响的表的所有行及时得以更新。

commit    /*保存数据库事务*/
rollback /*撤销数据库事务*/
savepoint /*在一组事务里创建标记点,用于回退(rollback)*/
set transaction /*设置事务的名称*/

三、数据类型

MySQL支持多种数据类型,主要有数值类型、日期/时间类型、字符串类型。

3.1 数值类型

数值类型主要用来存储数字,包括整数类型和浮点数类型。

3.1.1 整数类型

类型名称 说明 存储需求
TINYINT 很小的整数 1个字节
SMALLINT 小的整数 2个字节
MEDIUMINT 中等大小的整数 3个字节
INT(INTEGER) 普通大小的整数 4个字节
BIGINT 大整数 8个字节

3.1.2 浮点数类型

类型名称 说明 存储需求
FLOAT 单精度浮点数 4个字节
DOUBLE 双精度浮点数 8个字节
DECIMAL(m,d) 压缩的“严格”定点数 m+2个字节

DECIMAL(m,d)中,m表示有效位,d表示保留小数位数。

3.2 日期与时间类型

MySQL中有多种表示日期与时间的类型,如下表:

类型名称 日期格式 范围 存储需求
YEAR YYYY 1901 ~ 2155 1字节
TIME HH:MM:SS -838:59:59 ~ 838:59:59 3字节
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-31 3字节
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8字节
TIMESTAMP YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC 4字节

TIMESTAMP 显示宽度固定在19个字符,显示格式与 DATETIME 的相同。但是存储字节和支持范围不同,另外还有一个最大的不同是:

  • DATETIME 按实际的输入格式存储,输入什么就存储什么,与时区无关;而 TIMESTAMP 以 UTC(世界标准时间)格式保存,存储时对当前时区进行转换,检索时再转换回当前时区。即查询时,根据当前时区的不同,显示的时间值是不同的。

3.3 字符串类型

MySQL支持两种字符串类型:文本字符串、二进制字符串

3.3.1 文本字符串类型

类型名称 说明 存储需求
CHAR(m) 固定长度字符串 m字节,1<=m<=255
VARCHAR(m) 变长字符串 p+1字节,p<=m和1<=m<=255
TINYTEXT 非常小的字符串 p+1字节,p<28
TEXT 小的字符串 p+2字节,p<216
MEDIUMTEXT 中等大小的字符串 p+3字节,p<224
LONGTEXT 大的字符串 p+4字节,p<232
ENUM 枚举类型 1或2个字节,取决于枚举值的数目(最多65535)
SET 集合类型 1,2,3,4或8个字节,取决于集合成员数量

类型 ENUM 与 SET 的相同之处是它们在内部都用整数表示,定义列表中每个成员都有一个索引编号。而它们的不同之处在于:

  • ENUM最多可以有65535个枚举值,而SET最多有64个成员。
  • ENUM类型的字段每次取值只能取一个,而SET类型字段可以取零个或多个成员的组合形式。

3.3.2 二进制字符串类型

类型名称 说明 存储需求
BIT(m) 位字段类型 大约(m+7)/8个字节
BINARY(m) 固定长度二进制字符串 m个字节
VARBINARY(m) 变长二进制字符串 m+1个字节
TINYBLOB(m) 非常小的BLOB p+1字节,p<28
BLOB(m) 小BLOB p+2字节,p<216
MEDIUMBLOB(m) 中等大小的BLOB p+3字节,p<224
LONGBLOB(m) 非常大的BLOB p+4字节,p<232

BLOB类型是一个二进制大对象,通常用来存储可变的大容量数据,比如图片、音频或视频。

为了优化存储,在任何情况下均应使用最精确的类型。例如,如果列的值的范围为从1到99999,若使用整数,则MEDIUMINT UNSIGNED是好的类型。在所有可以表示该列值的类型中,该类型使用的存储最少。

MySQL基础笔记(一) SQL简介+数据类型的更多相关文章

  1. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  2. MYSQL基础笔记(七)- 数据类型二

    字符串类型 在SQL中,讲字符串类型分成了六类:char,varchar,text,blob,enum,set char,定长字符串 磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度. ...

  3. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  4. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

  5. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

  6. MYSQL基础笔记(一)

    关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ...

  7. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  8. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  9. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  10. MySql基础架构以及SQL语句执行流程

    01. mysql基础架构 SQL语句是如何执行的 学习一下mysql的基础架构,从一条sql语句是如何执行的来学习. 一般我们写一条查询语句类似下面这样: select user,password ...

随机推荐

  1. Microsoft Windows Server 部署

    Microsoft Windows Server 部署 多重引导 计算机可以被设置多重引导,即在一台计算机上安装多个操作系统..在安装多重引导的操作系统时,还要注意版本的类型,一般应先安装版本低的,再 ...

  2. 公共dao的抽取

    package cn.sxx.dao; import java.util.List; import cn.sxx.model.Dep; import cn.sxx.query.DepQuery; pu ...

  3. No-7.系统信息相关命令

    系统信息相关命令 本节内容主要是为了方便通过远程终端维护服务器时,查看服务器上当前 系统日期和时间 / 磁盘空间占用情况 / 程序执行情况 本小结学习的终端命令基本都是查询命令,通过这些命令对系统资源 ...

  4. 硬盘写入 iso

    https://www.jb51.net/softjc/508796.html WinImage 正确操作是要有两个or以上-硬盘. 这样才能写入你要装的操作系统 测试或者安装

  5. Maven实战读书笔记(六):Maven灵活构建

    Maven为了支持构建的灵活性,内置了3大特性,即:属性.Profile和资源过滤. 6.1 Maven属性 Maven的属性与Java代码的常量有异曲同工之妙,都是为了消除重复,对相关内容进行统一管 ...

  6. 3 SQL 聚合与排序

    3 聚合与排序 3-1 对表进行聚合查询 聚合函数 通过SQL对数据进行 操作或计算时需要使用函数. 计算表中全部数据行数时,可以使用COUNT函数. COUNT : 计算表中的记录数(行数). SU ...

  7. JavaScript中函数的定义

    JavaScript中函数的定义 制作人:全心全意 在JavaScript中,函数是由关键字function.函数名加一组参数以及置于大括号中需要执行的一段代码定义的.定义函数的基本语法格式如下: f ...

  8. python-----定制群发微信消息

    如何使用表格中的信息群发微信消息? 如何读取csv? →   使用内置模块csv 如何按对应信息发送到微信?→  使用第三方库wxpy 以下代码素材自取:链接:https://pan.baidu.co ...

  9. 大数据学习——mapreduce运营商日志增强

    需求 1.对原始json数据进行解析,变成普通文本数据 2.求出每个人评分最高的3部电影 3.求出被评分次数最多的3部电影 数据 https://pan.baidu.com/s/1gPsQXVYSQE ...

  10. Pychorm提示Unresolved reference 导入模块报错

    最近使用Pychorm编写Python时,每次要引入自定义模块,就会报错,提示“Unresolved reference” Unresolved reference 'LoginClass' more ...