博客列表 >mysql 数据类型

mysql 数据类型

梁凯达的博客
梁凯达的博客原创
2019年01月03日 21:58:10846浏览


实例

-- 创建一个简单的表格
CREATE TABLE IF NOT EXISTS test(
	sn INT,
	name VARCHAR(255)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- 创建一个数据表 测试整型内容

CREATE TABLE IF NOT EXISTS text2(
	n1 TINYINT,
	n2 SMALLINT,
	n3 MEDIUMINT,
	n4 INT,
	n5 BIGINT
)ENGINE =MyISAM DEFAULT CHARSET=utf8;

-- 查看表结构
-- DESC 表名
tinyint(4) -128 127     0-255
smallint(6)
mediumint(9)
int(11)  -2147483648   2147483647
bigint(20)

-- 创建test3 无符号测试
CREATE TABLE IF NOT EXISTS test3(
	n1 TINYINT,
	n2 TINYINT UNSIGNED
)ENGINE = MyISAM DEFAULT CHARSET=utf8;
INSERT INTO test3(n1) VALUES(-128);
INSERT INTO test3(n1) VALUES(-129);
INSERT INTO test3(n1) VALUES(127);
INSERT INTO test3(n1) VALUES(128);
-- ERROR 1264 (22003): Out of range value for column 'n1' at row 1
INSERT INTO test3(n2) VALUES(-128);
INSERT INTO test3(n2) VALUES(300);
INSERT INTO test3(n2) VALUES(0);
INSERT INTO test3(n2) VALUES(255);

-- 创建test4表测试零填充
CREATE TABLE IF NOT EXISTS test4(
	n1 INT ZEROFILL
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO test4 VALUES(4);

CREATE TABLE IF NOT EXISTS test5(
	n1 INT(5) ZEROFILL
)ENGINE =MyISAM DEFAULT  CHARSET=utf8;
INSERT INTO test5 VALUES(1);
INSERT INTO test5 VALUES(123456);


-- 浮点数  就是小数

CREATE TABLE IF NOT EXISTS test7(
	n1 DECIMAL(10,2)
)ENGINE =MyISAM DEFAULT CHARSET=utf8;

INSERT INTO test7 VALUES(999999999);
INSERT INTO test7 VALUES(99999999.44);
INSERT INTO test7 VALUES(99999999.445);
INSERT INTO test7 VALUES(99999999.444);

CREATE TABLE IF NOT EXISTS test8(
	n1 DECIMAL(3,3)
)ENGINE = MyISAM DEFAULT CHARSET=utf8;
INSERT INTO test8 VALUES(1);

CREATE TABLE IF NOT EXISTS test9(
	n1 DECIMAL(2,3)
)ENGINE = MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS test10(
	f FLOAT(9,2),
	d DECIMAL(9,2)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO test10 VALUES(1234567.23,1234567.23);

-- 字符串类型
-- CHAR(255) 定长类型  分配多少占用多少
-- VARCHAR(255) 变长类型  分配多少使用多少 占用多少

CREATE TABLE IF NOT EXISTS test11(
	str1 CHAR(5),
	str2 VARCHAR(5)
)ENGINE = MyISAM DEFAULT CHARSET=utf8;

INSERT INTO test11(str1,str2) VALUES('12345','12345');
INSERT INTO test11(str1,str2) VALUES('胃你好吗?!','胃你好吗?');
INSERT INTO test11(str1,str2) VALUES('1','1');
-- ERROR 1406 (22001): Data too long for column 'str1' at row 1

-- name      varchar()
-- password  char(32)

CREATE TABLE IF NOT EXISTS test12(
	str TEXT
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- 添加 数据测试
INSERT INTO test12(str) VALUES('昨天晚上狗哥,去网吧,看见坐在隔壁的有个小孩在和他妈打电话说在学校,狗哥一看这不行 狗哥就喊 网管换机器,狗哥心里想回家挨打吧,狗哥老婆给他打电话问狗哥你在哪,狗哥说我在网吧呀 打游戏呢,这个时候隔壁小孩喊了一句 402号退房用了三个毕云涛!!');

-- 测试 enum 类型

CREATE TABLE IF NOT EXISTS test13(
	sex ENUM('man','woman','girl','boy','gay','less')
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO  test13(sex) VALUES('man');
INSERT INTO  test13(sex) VALUES('man','gay');
INSERT INTO  test13(sex) VALUES('man,gay');

-- ERROR 1265 (01000): Data truncated for column 'sex' at row 1
-- 添加不存在的枚举范围则显示上面内容

-- 测试set类型
CREATE TABLE IF NOT EXISTS test14(
	hobby SET('oldwoman','oldman','皮鞭','蜡烛','快乐球','手铐','富婆','小鲜肉')
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- 
INSERT INTO test14 VALUES('oldwoman');
INSERT INTO test14 VALUES('皮鞭,蜡烛,快乐球');
INSERT INTO test14 VALUES('抽烟,喝酒,烫头,玩');

CREATE TABLE IF NOT EXISTS test15(
	time INT
)ENGINE = MyISAM DEFAULT CHARSET=utf8;
INSERT INTO test15 VALUES(1546397570);

-- test16 not null default
CREATE TABLE IF NOT EXISTS test16(
	name VARCHAR(255) NOT NULL DEFAULT ''
)ENGINE=MyISAM DEFAULT CHARSET=UTF8;
INSERT INTO test16 VALUES(NULL);
-- ERROR 1048 (23000): Column 'name' cannot be null

-- test17 测试 auto_increment
CREATE TABLE IF NOT  EXISTS test17(
	id INT AUTO_INCREMENT PRIMARY KEY
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
--ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
-- PRIMARY KEY  主键
INSERT INTO test17 VALUES(null);

-- 创建一个表用户表  myuser
-- id    编号
-- name  用户名
-- password 密码
-- age   年龄
-- sex   性别
-- reg_time 注册时间
-- sign    简介
CREATE TABLE IF NOT EXISTS myuser(
	id INT UNSIGNED AUTO_INCREMENT PRIMARY kEY,
	name VARCHAR(255) NOT NULL UNIQUE, -- 唯一索引
	password CHAR(32) NOT NULL DEFAULT '',
	age TINYINT UNSIGNED NOT NULL DEFAULT 0,
	sex TINYINT NOT NULL DEFAULT 0,
	reg_time INT NOT NULL DEFAULT 0,
	sign TEXT
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO myuser(id,name,password,age,sex,reg_time,sign) VALUES(null,'user1',md5('123456'),18,1,1546397570,'让学习成为一种习惯');
INSERT INTO myuser(id,name,password,age,sex,reg_time,sign) VALUES(null,'user2',md5('123456'),18,1,1546397570,'让学习成为一种习惯');

-- ERROR 1062 (23000): Duplicate entry 'user1' for key 'name'

-- 修改表名
-- ALTER TABLE 旧表名 RENAME TO 新表名
ALTER TABLE myuser RENAME TO user1;
ALTER TABLE user1 RENAME TO myuser;

-- 修改字段名
-- ALTER TABLE 表名 CHANGE 老字段名 新字段名  数据类型  属性 索引
ALTER TABLE myuser CHANGE name username  VARCHAR(255) NOT NULL UNIQUE;
ALTER TABLE myuser CHANGE username name  VARCHAR(255) NOT NULL UNIQUE;

-- 修改数据类型
-- ALTER TABLE 表名 MODIFY 字段名  数据类型 属性 索引
ALTER TABLE myuser MODIFY sex INT NOT NULL DEFAULT 0;
ALTER TABLE myuser MODIFY sex TINYINT NOT NULL DEFAULT 0;

-- ERROR 1366 (HY000): Incorrect integer value: 'user1' for column 'name' at row 1
-- 不可以将原来是varcahr里面只有的字段改为int 因为转换不了
-- ALTER TABLE myuser MODIFY name INT NOT NULL DEFAULT 0;

-- 添加字段
-- ALTER TABLE 表名 ADD 新字段名 数据类型 属性 索引 [FIRST|AFTER 字段名]
ALTER TABLE myuser ADD email VARCHAR(255) NOT NULL;
ALTER TABLE myuser ADD tel  CHAR(11) NOT NULL FIRST;
ALTER TABLE myuser ADD idcard CHAR(18) NOT NULL AFTER name;

-- 删除字段
-- ALTER TABLE  表名  DROP  字段名
ALTER TABLE  myuser DROP tel;
ALTER TABLE  myuser DROP email;
ALTER TABLE  myuser DROP idcard;

运行实例 »

点击 "运行实例" 按钮查看在线实例

上一条:mysql 查询语句下一条:关于HTTP
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议