浮点型+字符(串)类型+时间类型+枚举与集合类型+约束条件

浮点型

  • 分类:FLOAT DOUBLE decimal
  • 应用场景:身高,体重,薪资

字段限制特点(5,3)前一位表示所有的位数,后一位表示小数个数

三者最大整数位和小数位对比:

# 存储限制float(255,30)double(255,30)decimal(255,30)?# 精确度验证create table t9(x float(255,30));create table t10(x double(255,30));create table t11(x decimal(65,30));?insert into t9 values(1.111111111111111111111111111111);insert into t10 values(1.111111111111111111111111111111);insert into t11 values(1.111111111111111111111111111111);##三者区别:    精度不同    精度由低到高        float         double        decimal         

字符类型

  • 分类

    • char(定长)
    • varchar(变长)
  • 作用:姓名,地址,描述类信息
create table t10(name char(4))  #name固定存储4个长度, #超出四个字符报错,不够四个字符空格补全create table t11(name varchar(4)) # 超出四个字符报错,不够四个有几个就存几个?# 验证存储限制insert into t12 values(‘hello‘);insert into t13 values(‘hello‘);# 验证存储长度insert into t12 values(‘a‘); #‘a    ‘insert into t13 values(‘a‘); #‘a‘select * from t12select * from t13  # 无法查看真正的结果?##统计字段值所对应的长度 select char_length(name) from t12select char_length(name) from t13  # 仍然无法查看到真正的结果?"""首先应该肯定的是在硬盘上存的绝对是真正的数据,但显示的时候mysql会自动将末尾的空格取掉"""# 如果不想让mysql帮你做自动去除末尾空格的操作,需要再添加一个模式set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";# 退出客户端重新登陆select char_length(x) from t12; #4select char_length(y) from t13; #1?# 针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中。但是会在读出结果的时候自动取掉末尾的空格??"""char与varchar的使用区别"""name char(5)# 缺点:浪费空间# 优点:存取速度都快egon alex lxx  jxx  txx  ?name varchar(5)varcahar()  变长给varchar 类型的数据自动加上报头来标识数据的长度报头通常占据1-2bytes # 缺点:存取速度慢# 优点:节省空间1bytes+egon 1bytes+alex 1bytes+lxx  1bytes+jxx  1bytes+txx###空间和时间  空间换时间  时间换空间   ??

时间类型

  • 分类

    • date:2019-05-01 年月日
    • time:11:11:11 时分秒
    • Datetime: 2019-01-02 11:11:11 年月日 时分秒
    • Year:2019 年
  • 测试
    create table student(  id         int,  name       char(16),  born_year  year,  birth      date,  study_time time,  reg_time   datetime);insert into student values(1,‘egon‘,‘2019‘,‘2019-05-09‘,‘11:11:00‘,‘2019-11-11 11:11:11‘);

枚举与集合类型

  • 分类

    • 枚举:enum 多选一
    • 集合:set 多选多,也可以只选一个
  • 测试
    create table user(    id int,  name char(16),  gender enum(‘male‘,‘female‘,‘others‘));insert into user values(1,‘jason‘,‘xxx‘)  # 报错insert into user values(2,‘egon‘,‘female‘)  # 正确!??create table teacher(    id int,  name char(16),  gender enum(‘male‘,‘female‘,‘others‘),  hobby set(‘read‘,‘sleep‘,‘sanna‘,‘dbj‘));insert into teacher values(1,‘egon‘,‘male‘,‘read,sleep,dbj‘)  # 集合也可以只存一个

约束条件

not null+default

通常情况下,not null 和default 是配合使用的

create table user(    id int,  name char(16));insert into user values(1,null)  # 可以修改?alter table user modify name char(16) not null;insert into user(name,id) values(null,2); # 报错 插入数据可以在表名后面指定插入数据对应的字段?create table student(    id int,  name char(16) not null,  gender enum(‘male‘,‘female‘,‘others‘) default ‘male‘)insert into student(id,name) values(1,‘jason‘)  # 成功

unique:字段唯一

某个字段对应的值在当前表中是唯一的

# 单列唯一create table user1(    id int unique,   name char(16));insert into user1 values(1,‘jason‘),(1,‘egon‘)  # 报错insert into user1 values(1,‘jason‘),(2,‘egon‘)  # 成功?# 联合唯一##意思就是IP和port不能同时相同 ,不能插入两列IP和端口号都相同的数据###单个可以重复,不能两个同时重复 create table server(    id int,  ip char(16),  port int,  unique(ip,port))insert into server values(1,‘127.0.0.1‘,8080);insert into server values(2,‘127.0.0.1‘,8080);  # 报错insert into server values(1,‘127.0.0.1‘,8081);

primary key+auto_increment

主键

# 单从约束角度来说primary key就等价于not null + unique### 非空且唯一# innodb引擎中,所有的表必须有且只有一个主键# 除了约束之外,主键它还是innodb引擎组织数据的依据,提升查询效率?create table t11(id int primary key);desc t11;insert into t11 values(1),(1);  # 报错insert into t11 values(1),(2);??"""强调:(******)1.一张表中必须有且只有一个主键,如果你没有设置主键,那么会从上到下搜索直到遇到一个非空且唯一的字段自动将其设置为主键"""create table t12(    id int,  name char(16),  age int not null unique,  addr char(16) not null unique)engine=innodb;desc t12;"""2.如果表里面没有指定任何的可以设置为主键的字段,那么innodb会采用自己默认的一个隐藏字段作为主键,隐藏意味着你在查询的时候无法根据这个主键字段加速查询了索引:类似于书的目录,没有主键就相当于一页一页翻着查?3.一张表中通常都应该有一个id字段,并且通常将改id字段作成主键"""?auto_increment:自增# 主键id作为数据的编号,每次最好能自动递增create table t13(     int primary key auto_increment,     name char(16));insert into t13(‘jason‘),(‘jason‘),(‘jason‘);  # id字段自动从1开始递增# 注意:auto_increment通常都是加在主键上,并且只能给设置为key的字段加##这样 id 在每次插入的时候就不必传了 会自动将上一条数据的ID加一作为本条数据的ID添加??# 联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键create table t18(    ip char(16),  port int,  primary key(ip,port));desc t18;??

补充:

delete from tb1;强调:上面的这条命令确实可以将表里的所有记录都删掉,但不会将id重置为0,所以收该条命令根本不是用来清空表的,delete是用来删除表中某一些符合条件的记录delete from tb1 where id > 10;?如果要清空表,使用truncate tb1;作用:将整张表重置,id重新从0开始记录

原文地址:https://www.cnblogs.com/1832921tongjieducn/p/11067395.html

时间: 2024-11-09 00:30:43

浮点型+字符(串)类型+时间类型+枚举与集合类型+约束条件的相关文章

MySQL数据类型--------枚举与集合类型实战

1. 背景 * MySQL数据库提供针对字符串存储的两种特殊数据类型:枚举类型ENUM和集合类型SET,集合类型数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧. 2. 枚举与集合类型所属空间与最大成员数量 类型 占用字节 最大成员数量 ENUM 1 or 2, 取决于枚举成员的数量 65535 SET 1|2|3|4|8,取决于集合成员的数量 64 3. 枚举与集合约束检查应用 * 创建表 e_s mysql> CREATE TABLE e_s(     -> uid 

枚举与集合类型 约束条件

枚举与集合类型 枚举(enum) 限制某个字段能够存储的数据内容 集合(set) 限制某个字段能够存储的数据内容 create table user( id int, name char(16), gender enum('male','female','others') ); insert into user values(1,'jason','xxx') # 报错 insert into user values(2,'egon','female') # 正确! create table te

Swift中的集合类型

一.引子: 在2014年10月TIOBE编程语言排行榜中,Swift位居第18位,从2014WWDC发布会首次公布至今不到半年时间,swift一直受到编程人员的追捧,其热衷程度并不亚于当红巨星Taylor Swift.相信在不远的将来,swift能够平稳发展,并逐步取代Objective-C. 二.swift的集合类型 下面回归主题.作为一名iOS开发者,我们已经非常熟悉诸如NSArray,NSDictionary,NSSet等常见集合类型,以及它们的可变同类NSMutableArray,NSM

Swift的基础,操作符,字符串和集合类型

这篇文章主要讲解苹果Swift官方指南的第二章前四节的要点内容,如果想看完整的英文文档可以去苹果开发者页面下载. Basic 声明常量let 声明变量var 注释依旧使用"//" "/**/", 注意这里"/**/"在Swift可以嵌套使用 表达式结尾不再有分号 整数 你可以声明为Int或者UInt,他们本身适应不同平台(64位, 32位),类似于NSInteger,NSUInteger 也可以直接声明为指定字节数的Int,如: Int8, In

Swift3.0P1 语法指南——集合类型

原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html#//apple_ref/doc/uid/TP40014097-CH8-ID105 Swift提供三种原始的集合类型:数组.集合.字典,这三种类型在使用时key和value的类型都是确定的,意味着只有类型对应的元素才能保存到相应的集合中

07 映射和集合类型 - 《Python 核心编程》

?? 映射类型: 字典 ?? 操作符 ?? 内建函数 ?? 内建方法 ?? 字典的键 ?? 集合类型 ?? 操作符 ?? 内建函数 ?? 内建方法 ?? 相关模块 7.1 映射类型:字典 字典是Python 语言中唯一的映射类型. 映射类型对象里哈希值(键) 和指向的对象(值)是一对多的关系. 字典类型和序列类型容器类(列表.元组)的区别是存储和访问数据的方式不同. 序列类型只 用数字类型的键(从序列的开始起按数值顺序索引). 映射类型可以用其他对象类型做键:一般最常 见的是用字符串做键(key

C#集合类型

求职笔试遇到一道题: 列举C#中的集合类型___; 列举C#中的并发集合类型__; 我认识不深,查找的答案,希望大家指正: 集合类型是数据集合的常见变体,例如哈希表.队列.堆栈.字典和列表.集合基于ICollection 接口.IList 接口.IDictionary 接口,或其泛型集合中的相应接口. 1.数组集合类型:描述允许将数组视为集合处理的数组功能. 2.ArrayList 和List 集合类型:描述泛型和非泛型列表(最常用的集合类型)的功能. 3.Hashtable 和Dictiona

3 日期类型/字符类型/枚举类型/集合类型/约束条件

create table student( id int, name char(6), born_year year, birth_date date, class_time time, reg_time datetime ); insert into student values (1,'eddie',now(),now(),now(),now()); 字符类型 1 char: 定长 2 varchar: 变长 #宽度指的是字符的个数 create table t1(name char(5))

jdbc执行Oracle数据库(oracle10g)Insert操作时 日期类型时间部分丢失的问题.

用ibatis执行一个Insert语句时,日期类型时间部分丢失,对应的java类型是java.util.Date.数据库对应的类型是DATE 解决办法:把java.util.Date转换成java.sql.TimeStamp 时间戳类型..