您的位置:首页 > 数据库 > MySQL

MySQL基础笔记(一) SQL简介+数据类型

2015-06-27 15:19 579 查看
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中有多种表示日期与时间的类型,如下表:

类型名称日期格式范围存储需求
YEARYYYY1901 ~ 21551字节
TIMEHH:MM:SS-838:59:59 ~ 838:59:593字节
DATEYYYY-MM-DD1000-01-01 ~ 9999-12-313字节
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:598字节
TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC4字节
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)非常小的BLOBp+1字节,p<28
BLOB(m)小BLOBp+2字节,p<216
MEDIUMBLOB(m)中等大小的BLOBp+3字节,p<224
LONGBLOB(m)非常大的BLOBp+4字节,p<232
BLOB
类型是一个二进制大对象,通常用来存储可变的大容量数据,比如图片、音频或视频。

为了优化存储,在任何情况下均应使用最精确的类型。例如,如果列的值的范围为从1到99999,若使用整数,则MEDIUMINT UNSIGNED是好的类型。在所有可以表示该列值的类型中,该类型使用的存储最少。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息