zoukankan      html  css  js  c++  java
  • Mysql的一些纪要

    unsigned

      整型的每一种都分无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。

    tinyint

    decimal(P,D)

      MySQL DECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。

    • P是表示有效数字数的精度。 P范围为1〜65
    • D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P

    enum

      ENUM是枚举类型,它虽然只能保存一个值,却能够处理多达65535个预定义的值。下面是我写的一个mysql语句

    CREATE TABLE student(
    id INT(11) PRIMARY key auto_increment,
    name VARCHAR(10) not null,
    sex ENUM('boy','girl','secret') DEFAULT 'secret'
    )ENGINE=INNODB

      如果sex列中插入了除bor,girl,secret之外的其它字符,则视为空字符串

      1、每个枚举值都有一个索引:

    • 列出的元素被分配从1开始的索引值。
    • 空字符串作为错误值的索引值为0。可以使用select语句找出那些被指定无效枚举值的数据行。
    SELECT * FROM tbl_name WHERE enum_col=0;
    • NULL的索引为NULL。
    • 这里的索引只是指出枚举表里该元素的位置,和表索引不同。

      2、最多可以有65535个不同的元素值(实际限制小于3000)。 
      3、枚举值不能是0或空字符串(虽然存在特殊情况) 

      4、enum在底层的存储方式是以整型进行存储的,比如这样的字段sex enum('male' , 'female' , 'both' , 'unknow')在查询时where sex='male'和where sex=1是等效的

    bit

      bit类似多用于存储状态,如bit(1) 直接对应Java语言的布尔类型true和false,用做状态保存时一个字段可以保存多至64个状态。如我开发的某个系统需要保存对用户发送短信的状态,有10几种不同类型的短信,每种都要标记发过没有,这时候用bit类型就很方便,当然用int也能实现,但用bit更符合语义,查询或更新某个状态时按位操作即可。

    末尾写一些会用到的命令:

      ①查看创建表的sql语句:show create table students; 

      ②多表查询-内连接 inner join(交集):select s.name,c.name from students as s inner join classes as c on s.cls_id=c.id;

      ③左连接(以left左方命令为基准):select * from students as s left join classes as c on s.cls_id=c.id;

      ④修改表字段值(交集):update goods inner join goods_cates on goods.cate_name=goods_cates.name set goods.cate_name=goods_cates.id;

      ⑤修改字段名及属性:alter table goods change cate_name cate_id int unsigned not null;

      ⑥添加外键(goods.cate_id与goods_cates.id关联):alter table goods add foreign key (cate_id) references goods_cates(id);

      ⑦删除外键(外键名通过show create table goods查看):alter table goods drop foreign key goods_ibfk_2;

  • 相关阅读:
    帝国cms在任意位置调用指定id的栏目名称和链接
    Sublime Text 2中前端必备的常用插件
    sublime text 2代码片段(Snippet)功能的使用
    写好PPT的四大要点
    解码郭台铭语录,50句你应该知道的“郭台铭语录”
    java.sql.SQLSyntaxErrorException: Table 'demo.hibernate_sequence' doesn't exist
    Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.example.demo.domain.DeptInfo
    com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别
    Spring Boot引入Lombok
    Spring Boot(二)jpa操作数据库
  • 原文地址:https://www.cnblogs.com/cpw6/p/11081304.html
Copyright © 2011-2022 走看看