Skr-Eric的Mysql课堂(二)——Mysql的数据类型

数据类型

 

整型

      1、int 大整型(4个字节)

 取值范围 :0 ~ (2**32 - 1) 42亿多

      2、tinyint 微小整型(1个字节)

        (1)、有符号(signed默认) : -128~127

        (2)、无符号(unsigned) : 0~255

   age tinyint unsigned,

      3、smallint 小整型(2个字节)

      4、bigint 极大整型(8个字节)

 

浮点型

      1、float(4个字节,最多显示7个有效位)

        字段名 float(m,n) m->总位数 n->小数位位数

 float(5,2) 取值范围:-999.99 ~ 999.99

 ## m的值最大为7

      2、double

        字段名 double(m,n)

      3、decimal(m,n)

        1、存储空间(整数部分、小数部分分开存储)

   规则:将9的倍数包装成4个字节

 

   余数     字节

     0        0

    1-2       1

    3-4       2

    5-6       3

    7-8       4

   例:decimal(19,9)

     整数部分:10/9=1余1  4字节+1字节=5

     小数部分:9/9=1余0   4字节+0字节=4

     总共 :9个字节

    3、练习

      1、新建库studb2,并在库中创建表stuinfo,要求:

        id : 大整型

        name : 字符类型,宽度为15

 age : 微小整型,不能为负数

 height : 浮点型,小数位为2位(float)

 money : 浮点型,小数位为4位(decimal)

        create database studb2;

 use studb2;

 create table stuinfo(

 id int,

 name char(15),

 age tinyint unsigned,

 height float(5,2),

 money decimal(20,4));

      2、查看表结构

        desc stuinfo;

      3、查看表字符集和存储引擎

        show create table stuinfo;

      4、在表中插入1条完整记录

        insert into stuinfo values

        (1,"小昭",26,165,8888.88);

      5、查询所有表记录

        select * from stuinfo;

      6、在表中id、name和money三个字段插入2条记录

        insert into stuinfo(id,name,money) values

        (2,"赵敏",200000),(3,"周芷若",18000.23);

      7、查询所有学生的 编号、姓名和money

        select id,name,money from stuinfo;

 

字符类型

    1、char :定长

      char(宽度) 宽度取值范围:1 - 255

    2、varchar :变长

      varchar(宽度) 宽度取值范围 :1 - 65535

    3、text / longtext(4G) /blob / longblob

    4、char 和 varchar的特点

      (1)、char :浪费存储空间,性能高

      (2)、varchar :节省存储空间,性能低

    5、字符类型的宽度和数值类型宽度的区别

      (1)、数值类型宽度为显示宽度,只用于select查询时显示,和占用存储无关,可用zerofill查看效果

      (2)、字符类型的宽度超过后无法存储

 

枚举类型

    1、单选enum

      sex enum(值1,值2,...)

    2、多选set

      likes set(值1,值2,...)

      ## 插入记录时 "study,python,mysql"

 

日期时间类型

    1、date :"YYYY-MM-DD"

    2、datetime :"YYYY-MM-DD HH:MM:SS"

    3、timestamp :"YYYY-MM-DD HH:MM:SS"

    4、time :"HH:MM:SS"

    5、注意

      datetime :不给值默认返回 NULL

      timestamp :不给值默认返回系统当前时间

    6、示例

      1、创建一张表,用户充值表

        create table t2(

 id int,

 username varchar(20),

 password varchar(20),

 money int,

 birthday date,

 cztime timestamp

 )character set utf8;

      2、插入记录

        insert into t2 values

        (1,"用户1","123456",500,"1995-05-20","2018-08-30 09:40:30");

        

 insert into t2 values

 (2,"用户2","123456",600,"1992-02-20",now());

 

日期时间函数

  1、now() 返回服务器当前时间

  2、curdate() 当前日期

  3、date("1999-09-09 09:09:09") 提取 年月日

  4、time("...") 提取 时分秒

  5、year("...") 提取 年

  6、练习

    1、查找2018年8月30日用户充值的详细信息

      select * from t2 where date(cztime)="2018-08-30";

    2、查找2018年8月份所有用户充值的信息

      select * from t2 where

      date(cztime)>="2018-07-01" and date(cztime)<="2018-07-31";

    3、查找2018年08月30日 08:00-10:00之间用户充值信息

      select * from t2 where

      cztime>="2018-08-30 08:00:00" and cztime<="2018-08-30 10:00:00";

 

日期时间运算

  1、语法格式

    select * from 表名

    where 字段名 运算符(now()-interval 时间间隔单位);

    时间间隔单位:

      2 day | 3 hour | 1 minute | 2 year | 3 month

  2、示例

    1、查询1天以内的充值记录

      select * from t2 where

      cztime>=(now()-interval 1 day);

    2、查询1年以前的充值记录

      select * from t2 where

      cztime<(now()-interval 1 year);

    3、查询1天以前、3天以内的充值记录

      select * from t2 where

      cztime>=(now()-interval 3 day) and

      cztime<=(now()-interval 1 day);

 

 

想要看更多的课程请微信关注SkrEric的编程课堂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL跨库关联可以使用dblink来实现。dblink是一种连接远程库的方式,在创建表时可以连接到远程库,并将本地新建的表数据映射到远程表的数据。你可以通过创建一个以FEDERATED为存储引擎的表来实现这一点。 首先,需要确保你的MySQL服务器支持FEDERATED引擎。你可以使用命令"show engines;"来查看FEDERATED引擎是否为YES。如果不是YES,你需要在MySQL的配置文件[mysqld]中加入一行"federated"并重启服务。 接下来,你可以创建一个本地表并在创建表时加上连接信息。例如,你可以使用以下命令创建一个名为sys_user_copy的表,并连接到远程库中的sys_user表: CREATE TABLE sys_user_copy ( -- 表字段定义 ) ENGINE = FEDERATED CONNECTION='mysql://username:password@hostname:port/database/sys_user'; 这样,你就可以通过关联查询直接在本地的sys_user_copy表中查询远程的sys_user表的数据了。任何对本地表的改动都会反映到远程的表中。 然而,需要注意的是,跨库关联有一些限制和缺点。首先,本地表的结构必须与远程表完全一样。其次,跨库关联不支持事务和表结构的修改。另外,删除本地表不会影响远程表,远程服务器必须是一个MySQL服务器。 总结一下,使用dblink和FEDERATED存储引擎可以实现MySQL的跨库关联。通过连接远程库并将本地表数据映射到远程表,你可以通过关联查询直接访问远程表的数据。然而,需要注意跨库关联的限制和缺点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值