-- 创建一个简单的表格 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;
点击 "运行实例" 按钮查看在线实例