mysql使用笔记(三)

一、数值类型

1. 数值类型 
    标准sql中包含数据类型 INTEGER, SMALLINT, DECIMAL, NUMERIC,以及FLOAT, REAL, DOUBLE。mysql在此基础上进行了拓展,增加了TINYINT, MEDIUMINT, BIGINT三种长度不同的整数,以及BIT类型,用来存放位数据。

整数类型 字节
TINYINT 1
SMALLINT 2
MEDIUMINT 3
INT/INTEGER 4
BIGINT 8
浮点数类型 字节
FLOAT 4
DOUBLE 8
定点整数类型 字节
DEC(M,D)/DECIMAL(M,D) M+2

(1.1) 整数类型 
    整数类型,mysql支持在类型名称后面的小括号内指定显示宽度,如int(5)表示当数值宽度小于5位的时候在数字前面填满宽度,如果不显式指定宽度则默认为int(11),这一般配合zero_fill一块使用,如 
create table t1(id int(5) zerofill);#表t1中的id列宽度为5位整数,如果数据位数小于5,则在前面添加0;如果数据位数大于5,仍然显示正确的数据,即不会受到数据位数的限制,只要保证该数据是个合法的4字节可以表示的整数。 
    整数类型有unsigned属性,如果一个列指定为zerofill,则mysql会自动给该列添加unsigned属性。 
    整数类型有uto_increment属性一般从1开始,每行增加1,在插入null到一个auto_increment列时,mysql插入一个比该列中当前最大值大1的值。一个表中最多只能有一个auto_increment列。对于任何想要使用auto_increment的列,应该定义为not null,并定义为primary key或定义为unique键。比如: 
create table ai (id int auto_increment not null primary key); 
create table ai(id int auto_increment not null, primary key(id)); 
create table ai(id int auto_increment not null, unique(id));

(1.2) 浮点数类型和定点数类型 
    定点数在mysql内部以字符串形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。浮点数和定点数都可以用类型名称后加"(M,D)"的形式来表示,M为整数加小数部分的总位数,D为小数部分的位置。float, double在不指定精度时,默认会按照实际的精度(由实际的硬件和操作系统来决定)来显示,decimal在不指定精度时,默认的整数为为10,默认的小数为为0. 
比如用默认的decimal来存放数据1.23, 则实际只会保留整数位1,小数位的.23被丢弃。

(1.3) BIT类型 
    bit位类型用于存放位字段值,BIT(M)可以用来存放多位二进制数,M范围从1到64,如果不写则默认为1位。对于位字段,直接使用SELECT命令将不会看到结果,可以用bin()(显示为二进制格式)或者hex()(显示为十六进制格式)函数进行读取。

2. 日期和时间类型

日期和时间类型 字节 最小值 最大值
DATE 4 1000-01-01 9999-12-31
DATETIME 8 1000-01-01 00:00:00 9999-12-31 23:59:59
TIMESTAMP 4 19700101080001 2038年的某个时刻
TIME 3 -838:59:59 838:59:59
YEAR 1 1901 2155

TIMESTAMP值返回后显示为 YYYY-MM-DD HH:MM:SS格式的字符串,显示宽度固定为19个字符;如果想要获得数字值,在TIMESTAMP列添加"+0"即可。如果需要经常插入或者更新日期为当前系统时间,则通常使用TIMESTAMP来表示;TIMESTAMP还和时区相关,插入日期时,会先转化为本地时区后存放,而从数据库取出时,也同样需要经日期转换为本地时区后显示。

3. 字符串类型 
    mysql包含CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, SET等多种字符串类型。 
(3.1) CAHR和VARCHAR类型 
    CHAR 长度为创建表时声明的长度,0-255;VARCHAR为可变长字符串。在检索时,CHAR列删除了尾部的空格,而VARCHAR保留这些空格。比如: 
create table vc(v varchar(4), c char(4)); 
insert into vc values(‘ab‘, ‘ab‘); 
select length(v), length(c) from vc;#结果为4, 2 
select concat(v, ‘+‘), concat(c, ‘+‘) from vc; #显示为 ab +和 ab+. 
即,char列最后的空格在做操作时都已经被删除,而varchar依然保留空格。

(3.2) BINARY和VARBINARY类型 
    BINARY和VARBINARY包含二进制字符串而不包含非二进制字符串。当保存BINARY值时,在值的最后通过填充"0x00"以达到指定的字段定义长度。对于一个BINARY(3)列,插入‘a‘时,变为‘a\0\0‘.

(3.3) ENUM类型 
    1~255个成员的枚举需要1个字节,255~65535个成员的枚举需要2个字节,最多允许65535个成员。枚举类型的成员为 字符串类型:1个或多个字符。比如: 
create table t(en enum(‘hello‘,‘world‘));

(3.4) SET类型 
    SET类型也是一个字符串对象,里面可以包含0~64个成员,每个成员对应一个比特位,即最多有8个比特位。 
    SET类型一次可以选取多个成员,而ENUM只能选一个。比如,在表t中插入多组不同的成员: 
create table t(col set(‘a‘,‘b‘,‘c‘,‘d‘)); 
insert into t values(‘a,b‘), (‘c,d‘), (‘a, c, d‘); #一次插入多个记录

时间: 2024-12-26 19:05:07

mysql使用笔记(三)的相关文章

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

数据表的操作 表与字段是密不可分的. 新增数据表 1 Create table [if not exists] 表名( 2 字段名 数据类型, 3 字段名 数据类型, 4 字段n 数据类型 --最后一行不需要加逗号 5 )[表选项]; If not exists:如果表名不存在,那么就创建,否则不执行创建代码,实现检查功能. 表选项:控制表的表现 1.字符集:charset/character 具体字符集:--保证表中数据存储的字符集. 2.校对集:collate 具体校对集: 3.存储引擎:e

MySQL学习笔记(三)—索引

一.概述 1.基本概念       在大型数据库中,一张表中要容纳几万.几十万,甚至几百万的的数据,而当这些表与其他表连接后,所得到的新的数据数目更是要大大超出原来的表.当用户检索这么大量的数据时,经常会感觉慢.这个时候要提高数据库的检索性能,就必须要用到索引.给表追加合适的索引能极大的改善数据检索的效率,提供数据库性能.      索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,而且每种存储引擎也不一定支持所有的索引类型.      所有存储引擎支持每个表至多16个索引,总索

MySQL学习笔记(三):常用函数

一:字符串函数 需要注意的几个细节: 1.cancat中有一个字符串为null,则结果为null. 2.left(str,x) 和 right(str,x)中x为null,则不返回任何字符串,不是null. 二:数值函数 注意的几个细节: 1.truncate(x,y) 和 round(x,y) 都能截断,只是round会四舍五入,而truncate不会. 三:日期和时间函数 四:流程函数 五:其他函数

MYSQL学习笔记三:日期和时间函数

1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ #CURDATE()与CURRENT_DATE()作用同样,返回同样的系统当前日期 #CURDATE()+0则将当前日期值转换成数值类型 SELECT CURDATE(), CURRENT_DATE(), CURDATE()+0; /* CURTIME()和CURRENT_TIME()作用同样.将当前时间以'HH:MM:SS'或者'HH

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

数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. 1 insert into 表名 values(值列表)[,(值列表)]: -- 可以一次性插入多条记录. 2.方案二,给部分字段插入数据,需要选定字段列表,字段列表出现的顺序与字段的顺序无关,但是值列表的顺序必须与选定字段的顺序一致. 1 insert into 表名 (字段列表) values (

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

SQL基本操作 基本操作:CRUD,增删改查 讲SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: 1 Create database 数据库名字[库选项]: 库选项:用来约束数据库,分为两个选项:1.字符集设定:charset/character set 具体字符集(数据存储的编码格式,中文常用字符集gbk和utf8.).2.校对集设定:collate 具体校对集(数据比较的规则). 例如: 其中:数据库名字不能

Mysql学习笔记(三)对表数据的增删改查。

写在前面:(一些牢骚,可以直接跳到分割线后) 太过敏感的人不会快乐,不幸的是我正是这种性格的人. 从培训机构毕业后,迫于经济方面的压力,和当时的班里的一个同学住在了一起,我们在一个公司上班.谁知道这都是不开心生活的源头,从每天早晨开始心情就很糟糕.他是个脾气很慢的人,我是个急脾气,特别是在早上上班的时候.由此种种吧,实在是不胜枚举.算了,还是不说了,太痛苦了,我不太喜欢说别人的坏话.我是学心理学的,已经用各种方法去安慰自己,但是都不太奏效. 回想以往和朋友的交往中,我虽然不算十分合群的人,但绝对

Mysql学习笔记(三)运算符和控制流函数

原文:Mysql学习笔记(三)运算符和控制流函数 本章学习内容: 1.操作符 2.控制流程函数 操作符: i.圆括号.. 简单的介绍一下圆括号,圆括号的使用的目的是规定计算表达式的顺序...这个想必大家都熟悉例如  mysql>select 1+(2*3) mysql>select (1+2)*3 ii.比较运算符. 比较运算符就比较多了,并且也很常用..比如 = 等于: mysql> SELECT 1 = 0; -> 0 mysql> SELECT '0' = 0; -&g

MySQL入门笔记(一)

MySQL入门笔记(二) 一.数据类型 1. 整型 2. 浮点型 3. 字符型 4. 日期时间型 二.数据库操作 1. 创建库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name; ??上述代码中DATABASE和SCHEMA完全相同,可任选一个(花括号内的参数为任选其一): ??添加IF NOT EXISTS的作用则是,若新建数据库的名称与已有数据库名称冲突,则产

MySql学习笔记(一)之DQL常用查询

MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前,我们先做一些准备工作. 需要安装的软件如下: 1.mysql,版本可以选择5.1或者5.5,安装过程可以参考博客:http://www.cnblogs.com/ixan/p/7341637.html 2.mysql图形化管理软件:Navicate,sqlyog(二选一,推荐使用sqlyog). 本文