Mysql之数据类型(胖胖老师)

like语句与通配符

insert into teacher_1 values(‘胖胖‘, ‘男‘, 18),
(‘小明‘, ‘男‘, 19),
(‘张三‘, ‘男‘, 30),
(‘李四‘, ‘男‘, 27),
(‘张成‘, ‘男‘, 21),
(‘三胖‘, ‘女‘, 31),
(‘张三丰‘, ‘男‘, 66),
(‘张‘, ‘男‘, 11),
(‘王_白‘, ‘男‘, 14),
(‘王大白‘, ‘男‘, 19);

需求一: 查询出姓张的人;
select * from teacher_1 where name like ‘张%‘;   --%表示配置0个或者多个任意字符

需求二: 查询出名字中第二个字符是‘胖‘的人;
select * from teacher_1 where name like ‘_胖%‘;
ps: %表示配置0个或者多个任意字符, _表示配置一个任意字符

需求三: 查询出 名字中第一个和第二个字符是 ‘王‘和‘_‘ 的那个人;
select * from teacher_1 where name like ‘王/_%‘ escape ‘/‘;
select * from teacher_1 where name like ‘王\_%‘;

***********************************************************************************************************************

数据类型
1: 数值类型
2: 日期类型
3: 字符串类型
***********************************************************************************************************************

1: 整形
tinyint类型
tinyint如果有符号范围则是(-128, 127), 如果无符号范围则是(0, 255);

可以使用unsigned标识来定义是否符号, 加上unsigned标识则表示无符号, 默认是有符号的

create table t_1(
    a tinyint,
    b tinyint unsigned
);
例: insert into t_1 values(-128, 127);
例: insert into t_1 values(-128, -1);    --报错
例: insert into t_1 values(255, 255);    --报错
例: insert into t_1 values(-128, 255);

定义数据的显示宽度
create table t_2(
    a tinyint(2)
);
ps: 类型(2), 比如tinyint(2), (2)并不是表示最大只能输入2位数字的值;
    而是表示显示的最小宽度是多少, 如果想要达到显示最小宽度的目的,还需要使用zerofill(前导零填充)来标识
例: insert into t_2 values(123);
例: insert into t_2 values(1);

alter table t_2 add b tinyint(2) zerofill;
例: insert into t_2(b) values(2);
例: insert into t_2(b) values(123);
例: insert into t_2(b) values(-1);    --报错, 标识了zerofill后 也会默认加上一个unsigned;

2: 小数型
浮点类型
float(单精度), double(双精度)
create table t_3(
    a float,
    b double
);
例: insert into t_3(a, b) values(1234567890.123456789,1234567890.123456789);
    +------------+--------------------+
    | a          | b                  |
    +------------+--------------------+
    | 1234570000 | 1234567890.1234567 |
    +------------+--------------------+
    ps: float与double类型虽然可以表示一个很大的小数, 但是如果值超过精度位数,这里则会损失精度
        float默认精度位数是6位左右, double默认的精度位数是17左右;

create table t_4(
    a float(4) zerofill
);
insert into t_4 values(12);
insert into t_4 values(12345);

create table t_5(
    a float(6, 2)
);
ps: 浮点型(M,D) 比如float(6, 2) 这里的6表示的是能够最大的所有位数(不包括符号和小数号), 2表示最大小数位数
例: insert into t_5 values(1234.56);
例: insert into t_5 values(123.56);
例: insert into t_5 values(123.5);
例: insert into t_5 values(12345.6);         --报错
例: insert into t_5 values(1234.128);        --不报错,但会把多余的小数以四舍五入的方式截取掉

定点数类型(decimal)
ps: decimal(M,D)定点数型依赖于M和D, M的默认值是10, D的默认值是0; M一样表示总数位, D表示小数位  总数

create table t_6(
    a decimal(21, 2) zerofill
);
例: insert into t_6 values(123456789123456789.12);
    +------------------------+
    | a                      |
    +------------------------+
    | 0123456789123456789.12 |
    +------------------------+
***********************************************************************************************************************

日期类型
datetime(年月日时分秒)与timestamp类型(时间戳)
create table t_7(
    a datetime,
    b timestamp
);
例: insert into t_7 values(‘2012-08-08 08:08:08‘, 54389867575365); --报错, 时间戳存储时是整形,但是表示是日期型
例: insert into t_7 values(‘2012-08-08 08:08:08‘, ‘2012-08-08 08:08:08‘);
例: select a+0, b+0 from t_7;   --在检索时如果列+0, 时间的格式会整形来显示
    +-----------------------+----------------+
    | a+0                   | b+0            |
    +-----------------------+----------------+
    | 20120808080808.000000 | 20120808080808 |
    +-----------------------+----------------+
例: insert into t_7 values(‘2012-08-08 08:08:08‘, ‘2038-01-20‘);   --报错
例: insert into t_7 values(‘2012-08-08 08:08:08‘, ‘2038-01-19‘);   --不报错
例: insert into t_7 values(‘2012*08*08‘, ‘2038*01*19‘);            --支持任意的分隔符日期
例: insert into t_7 values(‘20120808‘, ‘20380119‘);                --也可以不用写分隔符
例:insert into t_7 values(‘20128808‘, ‘20380119‘);                --报错

Date类型
create table t_t(
    a date,
    b datetime
);
例: insert into t_t values(‘2012-08-08 08:08:08‘, ‘2012-08-08 08:08:08‘);
ps: Date类型是以YYYY-MM-DD形式显示日期, datetime以年月日时分秒形式来显示日期

Time类型(D HH:MM:SS) D表示天
ps: Time表示的一天中的日间
create table t_8(
    a time
);
例: insert into t_8 values(‘2 08:08:08‘);
例: insert into t_8 values(‘99:08:08‘);
例: insert into t_8 values(‘990808‘);
例:insert into t_8 values(‘99-08-08‘);     --报错

year类型
create table t_9(
    a year
);
例: insert into t_9 values(‘1901‘);
例: insert into t_9 values(‘1900‘);
***********************************************************************************************************************

3: 字符串类型
char(M)     M表示严格限定的长度
varchar(M)  M表示允许的最大长度;
create table t_10(
    c char(4),
    v varchar(4)
);
例: insert into t_10 values(‘ab‘, ‘ab‘);
例: insert into t_10 values(‘ab‘, ‘abcde‘);   --报错
例: insert into t_10 values(‘abcde‘, ‘ab‘);   --报错

Text类型(长文本类型)--还有tinyText, longText
create table t_11(
    a text,
    b tinytext
);

enum枚举类型
create table t_12(
    sex enum(‘男‘,‘女‘,‘保密‘)
);
例: insert into t_12 values(‘不男不女‘);
例: insert into t_12 values(‘男‘);

set集合类型
create table t_13(
    hobby set(‘eat‘, ‘drink‘, ‘sleep‘)
);
例: insert into t_13 values(‘eat,sleep‘);
例:insert into t_13 values(‘eat,sleep,drink‘);
例:insert into t_13 values(‘eat,sleep, drink‘);    --报错 不要有空格
例:insert into t_13 values(‘eat,sleep,胖胖‘);      --胖胖

时间: 2024-10-31 15:10:38

Mysql之数据类型(胖胖老师)的相关文章

mysql之数据类型以及操作数据表

数据类型: 数据类型是指列.存储过程的参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. —————————————————————————————————————————————————————————— 在mysql当中数据类型大概有以下几类: ———————————————————————————————————————————— 1.整型: ———————————————————————————————————————————————————————————

mysql之数据类型

 所谓建表,就是声明列的过程: 数据是以文件的形式放在硬盘中(也有放在内存里的) 列:不同的列类型占的空间不一样 选列的原则:够用又不浪费: mysql的数据类型: 整形:Tinyint(1字节) Smallint(2个字节)  Mediumint(3个字节) int(4个字节) bigint(8个字节): Tinyint在mysql默认是有符号的(-128----127): Tinyint(M) unsigned zerofill unsigned : 是无符号,影响存储范围:M代表宽度,(必

2Python全栈之路系列之MysQl基本数据类型

Python全栈之路系列之MySQL基本数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类: 数字类型 日期和时间类型 字符串类型 数字类型 类型 大小 用途 BIT - 二进制 TINYINT 1字节 小整数值 INT or INTEGER 4字节 大整数值 BIGINT 8字节 极大整数值 DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 小数值 FLOAT 4字节 单精度浮点数值 DOUBLE 8字

MySQL:MySQL日期数据类型、MySQL时间类型使用总结

MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型        存储空间      日期格式                日期范围------------  ---------  --------------------- -----------------------------------------datetime      8 bytes  YYYY-MM-DD HH:MM:SS  1000-01-01 00:00:00 ~ 9999-12-31 23:59:5

MYSQL的数据类型详解

mysql的数据类型 在mysql数据库当中,每一个库都是有多张表来组成的,每一个表都是由行和列来组成的. 所谓建表就是声明列的过程,数据是以文件的形式保存在系统上的.因此,不同的列类型,占用的空间不一样. 选列的原则:够用又不浪费即可 在选择数据类型时考虑如下因素: 1.占据空间 2.储存范围 在声明列的时候,为什么要声明某个字段的数据类型? 数据类型有如下意义: 1.确定该字段的值的类型 2.可以确定该字段所占据的空间 3.可以确定该字段是定长还是变长的 4.该字段如何进行比较以及排序 5.

MySQL的数据类型和建库策略详解

无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构.充分利用空间是十分必要的.这就要求我们对数据库系统的常用数据类型有充分的认识.下面我就将我的一点心得写出来跟大家分享. 一.数字类型 数字类型按照我的分类方法分为三类:整数类.小数类和数字类. 我所谓的"数字类",就是指DECIMAL和NUMERIC,它们是同一种类型.它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的:他的值的每一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大.

MySQL datetime数据类型设置当前时间为默认值

环境:MySQL Sever 5.1 + MySQL命令行工具 问题:MySQL datetime数据类型设置当前时间为默认值 解决: 方法一: 由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的.代替的方案是使用TIMESTAMP类型代替DATETIME类型. TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作.如果有多个TIMESTAMP列,只有第一个自动更新. 自

centos mysql 实战 第三节课 MySQL里的对象 mysql体系结构 mysql日志 数据类型

centos mysql  实战  第三节课   MySQL里的对象  mysql体系结构  mysql日志   数据类型 上两节课1. MySQL的安装2. MySQL启动方式 MySQL里的对象 今天第一个: MySQL里的对象 查看当前有那些数据库:show databases; drop database test;truncate table mysql.db; mysql里view当成Table对待了,没有单独的命令能备份视图,只能备份表 information_schema 字典库

MySQL日期数据类型、时间类型使用总结

1.MySQL的五种日期和时间类型 MySQl中有多种表示日期和时间的数据类型.其中YEAR表示年份,DATE表示日期,TIME表示时间,DATETIME和TIMESTAMP表示日期和实践.它们的对比如下: TEAR ,字节数为1,取值范围为“1901——2155” DATE,字节数为4,取值范围为“1000-01-01——9999-12-31” TIME,字节数为3,取值范围为“-838:59:59——838:59:59” DATETIME,字节数为8,取值范围为“1000-01-01 00: