MySQL

1. 数据类型

1.1. 日期和时间数据类型

MySQL数据类型 含义
date 3字节,日期,格式:2014-09-18
time 3字节,时间,格式:08:42:30
datetime 8字节,日期时间,格式:2014-09-18 08:42:30
timestamp 4字节,自动存储记录修改的时间
year 1字节,年份

1.2. 整型

MySQL数据类型 含义(有符号)
tinyint 1字节,范围(-128~127)
smallint 2字节,范围(-32768~32767)
mediumint 3字节,范围(-8388608~8388607)
int 4字节,范围(-2147483648~2147483647)
bigint 8字节,范围(+-9.22*10的18次方)
  1. 上面定义的都是有符号的,当然了,也可以加上unsigned关键字,定义成无符号的类型,那么对应的取值范围就要翻翻了,比如:tinyint unsigned的取值范围为0~255。

  2. int(n)需配合fillzero使用,表示int的显示位数为n位,不足的左边补0,多的原样输出,不影响内存占用大小.

1.3. 浮点型

MySQL数据类型 含义
float(m, d) 4字节,单精度浮点型,m总个数,d小数位
double(m, d) 8字节,双精度浮点型,m总个数,d小数位
decimal(m, d) decimal是存储为字符串的浮点数

我在MySQL中建立了一个表,有一列为float(5, 3);做了以下试验:

  1. 插入123.45678,最后查询得到的结果为99.999;

  2. 插入123.456,最后查询结果为99.999;

  3. 插入12.34567,最后查询结果为12.346;

所以,在使用浮点型的时候,还是要注意陷阱的,要以插入数据库中的实际结果为准。

FLOAT和DOUBLE在不指 定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。

1.4. 字符串数据类型

MySQL数据类型 含义
char(n)效率高 固定长度,最多255个字符
varchar(n)节省内存 可变长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符
  1. char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。

  2. 同时char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。

  3. 超过char和varchar的n设置后,字符串会被截断。

  4. char的上限为255字节,varchar的上限65535字节,text的上限为65535。

  5. char在存储的时候会截断尾部的空格,varchar和text不会。

  6. varchar会使用1-3个字节来存储长度,text不会。

  7. binary属性只用于char和varchar值。当为列指定了该属性时,将以区分大小写的方式排序。与之相反,忽略binary属性时,将使用不区分大小写的方式排序。

1.5. 其它类型

enum(“member1″, “member2″, … “member65535″)

enum数据类型就是定义了一种枚举,最多包含65535个不同的成员。当定义了一个enum的列时,该列的值限制为列定义中声明的值。如果列声明包含NULL属性,则NULL将被认为是一个有效值,并且是默认值。如果声明了NOT NULL,则列表的第一个成员是默认值。

set(“member”, “member2″, … “member64″)

set数据类型为指定一组预定义值中的零个或多个值提供了一种方法,这组值最多包括64个成员。值的选择限制为列定义中声明的值。

BLOB(Binary Large OBject)二进制大对象

专门存储图片,视频(提供视频的链接地址)

CLOB(Character Large OBject)字符大对象

存储比较大的文本,4G+的字符串可以储存

2. 常用命令

2.1. mySQL使用步骤

  1. 连接数据库:mysql -h 服务器主机地址 -u 用户名 -p 用户密码
  2. 打开/关闭服务:net start/stop mysql(mysql57)
  3. 打开数据库:use database_name

展示所有表/数据库/变量/存储引擎:show tables/databeses/variables/engines

2.2. 其他命令

  • 查看版本:mysql --version/-V 或者进入后select version()
  • 退出mysql:quit 或者 exit 或者 \q 或ctrl+c(mysql里可能失效)
  • show create table table_name: \G 查看表的创建过程的语句,\G为格式化
  • show tables from database_name查看其它数据库的表
  • describe/desc table_name 查看表结构

结果含义:Field字段名,Type字段类型,NULL是否可以为空,Key是否是主键,Default默认值,Extra附加信息

  • set character_set_result='GBK'设置显示编码
  • source 路径 运行.sql文件
  • mysqldump 库名 [表名]>路径 -uroot -p123 导出数据
  • truncate table table_name 清空表,表结构不变,速度快
  • use database_name 使用数据库
  • set @变量名=值 //设置变量
  • select @变量名 //查询变量值

3. SQL运算符

运算符是一个保留字或字符,主要用于连接WHERE后面的条件。

3.1. 算数运算符

运算符 描述
+ 加法 - 把运算符两边的值相加
- 减法 - 左操作数减去右操作数
* 乘法 - 把运算符两边的值相乘
/ 除法 - 左操作数除以右操作数
% 取模 - 左操作数除以右操作数后得到的余数

3.2. 比较运算符

运算符 描述
= 检查两个操作数的值是否相等,如果相等则条件为真
!= 检查两个操作数的值是否相等,如果不相等则条件为真。
<> 检查两个操作数的值是否相等,如果不相等则条件为真
> 检查左操作数的值是否大于右操作数的值,如果是则条件为真
< 检查左操作数的值是否小于右操作数的值,如果是则条件为真
>= 检查左操作数的值是否大于等于右操作数的值,如果是则条件为真
<= 检查左操作数的值是否小于等于右操作数的值,如果是则条件为真
!< 检查左操作数的值是否不小于右操作数的值,如果是则条件为真
!> 检查左操作数的值是否不大于右操作数的值,如果是则条件为真

3.3. 位运算符

运算符 描述
& 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中
\ \ 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中
~ 二进制补码运算符是一元运算符,具有"翻转"位效应
<< 二进制左移运算符。左操作数的值向左移动右操作数指定的位数
>> 二进制右移运算符。左操作数的值向右移动右操作数指定的位数

3.4. 逻辑运算符

运算符 描述
AND AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在。
BETWEEN BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值。用在数字闭区间,用在字符前闭后开
EXISTS EXISTS 运算符用于在满足一定条件的指定表中搜索行的存在。
IN IN 运算符用于把某个值与一系列指定列表的值进行比较。
NOT IN IN 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。
LIKE LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。
GLOB GLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。
NOT NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。
OR OR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件。
IS NULL NULL 运算符用于把某个值与 NULL 值进行比较。
IS IS 运算符与 = 相似。
IS NOT IS NOT 运算符与 != 相似。
\ \ 连接两个不同的字符串,得到一个新的字符串。
UNIQUE UNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)。

AND 和OR 的顺序优先级对判断的影响

4. 存储引擎

4.1. MyISAM(常用)

  • 格式文件-存储表结构的定义(mytable.frm)
  • 数据文件-存储表行的内容(mytable.MYD)
  • 索引文件-存储表上索引(mytable.MYI)

优点:可压缩,支持只读表(节省安全控制,检索效率高)

适用:大量数据读而少量数据更新的混合操作或者使用压缩的只读表.

4.2. InnoDB(默认)

优点:支持事务,级联更新和级联删除,服务器崩溃后提供自动回复

适用:查询中包含较多数据更新操作

4.3. MEMORY

表数据及索引被存储在内存中

优点:检索速度快. 缺点:不能持久化

适用:非永久需要的数据或能从基于磁盘的表中重新生成的数据.

results matching ""

    No results matching ""