Mysql数据库数据类型数据表的数据列的属性 1.unsigned 无符号数值 2.zerofill 零填充 3.auto_increment 自增 4.null 建立字段默认为允许为空 5.not null 不允许为空 配合default来使用 6.default 默认值 如果建立字段 例子 create table t4( id smallint(7) unsigned zer作者王明昌发布时间2017-11-30文章目录数据表的数据列的属性数据类型整数类型浮点类型字符串数据表的数据列的属性复制1.unsigned 无符号数值 2.zerofill 零填充 3.auto_increment 自增 4.null 建立字段默认为允许为空 5.not null 不允许为空 配合default来使用 6.default 默认值 如果建立字段 复制例子 create table t4( id smallint(7) unsigned zerofill ); insert into t4(id)values(12345);##0012345 #自增 主键 #auto_increment 自增 主键 primary key create table t5( id tinyint unsigned not null primary key auto_increment , username varchar(20) )engine=innodb default charset=utf8; insert into t5(username)values('bb'); # not null 不能为null 不是 '' 0 false insert into t6(username)values(null);#错误 insert into t6(username)values('');#ok insert into t6(username)values(0);#ok #初始值default create table t7 ( id tinyint(4) not null primary key auto_increment , name varchar(20) not null default 'xx' )engine=innodb default charset=utf8; 数据类型整数类型复制# -----整数----- 整数类型 字节数 无符号范围 有符号的范围 TINYINT 1 0~255 -128~127 SMALLINT 2 0~65535 -32768~32767 MEDIUMINT 3 0~16777215 -8388608~8388607 INT 4 0~4294967295 -2147483648~2147483647 BIGINT 8 0~18446744073709551615 -9223372036854775808~9223372036854775808 TINYINT 4 SMALLINT 6 MEDIUMINT 9 INT 11 BIGINT 20 复制例子 create table t3( id tinyint (4), tel int (11), username varchar(20) )engine=innodb default charset=utf8; #加数据 insert into t3(tel)values(123456789); 浮点类型复制浮点类型 字节数 负数的取值范围 非负数的取值范围 FLOAT 4 -3.402823466E+38~-1.175494351E-38 0和-1.175494351E-38~3.402823466E+38 DOUBLE 8 -1.79E+308~-2.22E-308 0和-2.22E-308~1.79E+308 DECIMAL M+2 同DOUBLE 同DOUBLE DECIMAL(M,D) M - 精度 数据的总长度 D - 标度 小数点后的长度 DECIMAL(5,2) 10.15 复制例子 create table t8( name decimal(5,3) #99.999 )engine=innodb default charset=utf8; insert into t8(name)values(123456456.123); 字符串varchar(n) 定长char(n)变长复制CHAR(5)和VARCHAR(5)的区别 插入值 CHAR占用字节数 VARCHAR占用字节数 '' 5 1 '1' 5 2 '123' 5 4 '1234' 5 5 '12345' 5 6 text类型 复制类型 范围 占用空间 TINYTEXT 0~255 长度+2个字节 TEXT 0~65535 长度+2个字节 MEDIUMTEXT 0~167772150 长度+3个字节 LONGTEXT 0~4294967295 长度+4个字节 ENUM类型 复制又称枚举类型。 ENUM('值1','值2',...,'值n') n-代表参数列表中的第n个值,这些值末尾的空格会被系统直接删除。 ENUM类型的值只能取列表中的一个元素。 取值列表中最多能有65535成员。 列表中的每一个值都有一个顺序排列的编号,MySQL存入的是这个编号,而不是值。 复制例子 create table t9( id tinyint(4) not null primary key auto_increment, sex enum('男','女') )engine=innodb default charset=utf8; insert into t9(sex)values('man');#显示空 insert into t9(sex)values('男');#显示男 SET类型 复制 在创建表时,SET类型的取值范围就以列表的形式指定了。 SET('值1','值2',...,'值n') SET类型的值最多只以是有64个元素构成的组合。取值可以是其中的一个或多个。其它特性,与ENUM类似。 复制例子 #SET类型 多选 create table t10( id tinyint(4) not null primary key auto_increment, sex set('男','女','nanan') )engine=innodb default charset=utf8; insert into t10(sex)values('男,女');#显示(男,女) 以下 了解即可: 二进制类型 复制二进制类型是在数据库中存储二进制数据的数据类型。 类型 取值范围 BINARY(M) 字节数为M,允许长度为0~M的定长二进制字符串 VARBINARY(M) 允许长度为0~M的变长二进制字符串,字节数为值的长度加1 BIT(M) M位二进制数,M最大值为64 TINYBLOB 可变长二进制数据,最多255个字节 BLOB 可变长二进制数据,最多2e16-1个字节 MEDIUMBLOB 可变长二进制数据,最多2e24-1个字节 LONGBLOB 可变长二进制数据,最多2e32-1个字节 日期与时间类型 复制数据类型 字节数 取值范围 零值 YEAR 1 1901~2155 0000 DATE 4 1000-01-01~9999-12-31 0000:00:00 TIME 3 -838:59:59~838:59:59 00:00:00 DATETIME 8 1000-01-01 00:00:00~9999-12-31 23:59:59 0000-00-00 00:00:00 TIMESTAMP 4 19700101080001~20380119111417 00000000000000 YEAR: 超出范围就会插入0000 使用2位字符串表示,'00'~'69'转换为2000~2069,'70'~'99'转换为1970~1999 使用2位数字表示,00~69转换为2000~2069,70~99转换为1970~1999。 注意两位的数字和两位的字符串是不一样的:0-0000 '0''00'-2000 DATE: 4个字节来表示日期。以YYYY-MM-DD的形式来显示DATE类型的值。 1)'YYYY-MM-DD'或'YYYYMMDD'格式的字符串表示。 2)MySQL中还支持一些不严格的语法格式:'YYYYMMDD' 'YYYY@MM@DD' 'YYYY.MM.DD' 3)'YY-MM-DD'或'YYMMDD'格式的字符串表示。 4)YY取值同YEAR类型中的两位字符串的表示一致。 5)YYYYMMDD或YYMMDD格式的数字表示。YY取值同上。 虽然MySQL支持DATE类型的一些不严格的语法格式。但是,实际运用中,最好还是选择标准形式。日期中使用-做分隔符,时间用:做分隔符。如果有特殊需要也可以使用@、* 等特殊字符做分隔符。 使用CURRENT_DATE和NOW()转换为当前系统日期。 复制例子 create table date1( id int(11) unsigned not null primary key auto_increment, create_time TIMESTAMP not null default current_timestamp,#当前时间 #update_time TIMESTAMP not null default current_timestamp#更新的时间 ) 复制查看某个表的碎片大小: SHOW TABLE STATUS LIKE '表名'; // 结果中’Data_free’列的值就是碎片大小 清除表碎片: optimize table 表名 mysql -u root -p --tee D:/mysql.log(保存所有的指令) tee d:/wamp/www/mysql.log; 登录后使用命令将操作写入文件
2017-12-04案例-多表查询、子查询实例(有答案)1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20)
2017-12-10案例-多表查询、子查询实例03(有答案)一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2
2017-12-06案例-多表查询、子查询实例02(有答案)以下所有操作在查询管理器中手工书写sql语句完成 1、按下列步骤创建数据库和表 1.2、在这个数据库中创建一个名为[学生表]的表,由[学号]、[姓名]、[专业]、[班级] 字段组成。[学号] 字段为主
2018-01-18mysql数据表同时使用创建时间/更新时间字段原因:一张表同时只能使用一个current_timestamp 创表 1. 用createtime记录创建时间 2. 用updatetime记录更新时间 create table test1(a va
2018-07-09MySQL 中TEXT的使用TINYTEXT 256 bytes TEXT 65,535 bytes ~64kb MEDIUMTEXT 16,777,215 bytes ~16MB LONGTEXT 4,294,967,295
2018-12-11mysql错误 | Error writing file‘frm‘(Errcode: 28)Error writing file‘frm‘(Errcode: 28) 磁盘空间不足引起的,删除一些没用的东西吧