MySQL

字符串类型

char 和 varchar
char :后面括号中必须有数值,来确认字符串的范围。 大小范围 :0-255.
char(10) ; 指定了一个长度为10的字符值。
binary 修饰符: 区分字符大小写
varchar : 字符串可变长
create table test6(aaa varchar(4));
insert into test6 values(“abcdd”);
超过长度报错
char和varchar区别
1、VARCHAR型字段比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要.
2、虽然VARCHAR使用起来较为灵活,但是从整个系统的性能角度来说,CHAR数据类型的处理速度更快,有时甚至可以超出VARCHAR处理速度的50%。
所以在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡。

int类型修饰符

unsigned 无符号整数,修饰符: 规定字段只能保存正的数据。它可以增大这个字段的正数支持的范围。
zerofill 修饰符: 规定0(不是空格 ) 填补输出的值。 使用这个值可以防止 mysql存储负值。
注意:
int(M) 在 integer 数据类型中,M 表示最大显示宽度。

M 的值跟 int(M) 所占多少存储空间并无任何关系。
create table azerofill (fi int(3), fiz int(3) zerofill,fiuz int(4) unsigned zerofill);
insert into azerofill values(123456,123456,123456);
发现位数不够用0补齐,超过设定值,正常显示。

浮点型数据类型

float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;
float:单精度浮点型,占字节数为4,用32位二进制描述,有符号是7个有效位,无符号是8个有效位
double:双精度浮点型,占字节数为8,用64位二进制描述,有符号是15个有效位,无符号是16个有效位
decimal:数字型,用128位二进制描述,不存在精度损失,常用于银行帐目计算。(28个有效位)
解释:单精度和双精度
精度是指计算机表达小数近似值的一种方式,单精度32位二进制,4个字节;双精度64位二进制,8个字节。

如float(7,4)表示总长度是7位,小数点后面的长度是4。小数点后超过4位,mysql自动给四舍五入。

float数值类型

例:create table test2(test float(3,1));
insert into test2 values(12.433); 显示:12.4

double和decimal数值类型

create table test1(test float(3,1),test1 double(3,1),test2
decimal(5,2));
insert into test1 values(12.3,12.3,12.3);
在这里插入图片描述

  1. 如果一个float型数据转成二进制后的第32位之后都是0,那么数据是准的
  2. 如果一个float型数据转成二进制后的第32位之后不全为0,则数据就会存在误差

日期和时间类型

date 日期

create table test7(a date);
insert into test7 values(‘2018-01-23’),(20210116);
自动区分日期

time时间

create tesst10(a time);
insert into tesst10 values(‘11:10:23’),(‘11:56’),(112233);
自动区分补齐时间

Year

year : 00-69自动转为: 2000-2069 , 70-99自动转为1970-1999
create table test10(a year);
insert into test10 values(2017),(04),(9),(69),(70);
在这里插入图片描述

datatime 或 timestamp

datetime类型能保存的最大范围的值为1001年到9999年,精度为秒,它把日期和时间封装到格式为YYYY-MM-DD HH:MM:SS的整数中,与时区无关,使用8个字节的存储空间。
timestamp类型保存了从1970年1月1日(格林尼治时间)以来的秒数,它和linux的时间戳相同,只是用了4个字节的存储空间,因此它的范围比datetime的范围小了很多,只能表示从1970年到2038年,我们可以使用它提高空间利用率。

create table data(a datetime,b timestamp);
insert into data values(‘1999-11-13 23:23:23’,19991112232323);
在这里插入图片描述

复合类型

enum(枚举):只能取一个,用于互斥。
set : 能取多个

enum

create table kdata16(sex enum(‘M’,‘F’));
insert into kdata16 values ( ‘M’),(‘m’),(‘F’),(‘yy’),(‘null’);
填写不是M,F的数据会报错
insert into kdata16 values ( ‘M’),(‘m’),(‘F’);
在这里插入图片描述

Set

create table test20(a set(‘a’,‘b’,‘c’,‘d’));
insert into test20 values(‘a,b’);
insert into test20 values(‘a,b,c’);
insert into test20 values(‘a’);
如果写不存在选项,直接报错
注意:set 类型: 最大包含64类项。在set中,相同的元素不能同时存在。

Msyql语句进阶

修改数据表

添加字段:

alter table 表名 add 字段名 列类型 [not null|null][primary key][unique][auto_increment][default value]

not null | null:非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。Null表示该列可以为空,用户在插入数据时如果没有指定值,该列用NULL填充。
default默认值:mysql默认值约束用来指定某列的默认值。如果某列设置了default默认值约束,用户在插入数据时如果没有指定值,则用默认值填充。
unique:唯一性约束,如果某列设置了unique唯一性约束,则该列的值是不能重复的。
auto_increment:设置数值型的列自动增长。AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。所谓自动增长字段,是指它们的值是系统指定,不需要插入。值从1开始,每增加一条记录,这个值就加1。
primary key:主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。通过它可以强制表的实体完整性(即表中没有重复的行)。

主键应该遵守下面的规则:
1.每个表只能定义一个主键。
2.主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在两行数据有相同的主键值。这是唯一性原则。
例:
create table t1(id int auto_increment primary key,name varchar(30) not null,sex enum(“男”,“女”)default “男”,phone_call char(11) default “11111111111”,id_card char(18) unique);
insert into t1 (name,sex,phone_call,id_card) values(‘zhangsan’,‘男’,‘12345678901’,‘123456789012345678’);

insert into t1 (name,phone_call,id_card) values(‘lisi’,‘123
45678901’,‘123456789012345679’);
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值