-- 创建一个简单的表格
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;点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号