在创建数据库表时,最好是在编辑器中写好创建表的代码,然后粘贴到命令行中,这样如果有错修改起来方便。
现在来创建一个user表:
-- 打开数据库, --后面必须要有空格, 表示注释 USE mydb3; -- 创建表(user) -- 编号:id -- 用户名:username -- 年龄:age -- 性别: sex -- 邮箱:email -- 地址:addr -- 生日:birth -- 薪水:salary -- 电话:tel -- 是否结婚:married -- 当有中文的时候需要临时 转换客户端的编码方式,SET NAMES utf8, 对当前连接有效 -- 字段注释,通过comment 给字段添加注释 -- 使用反引号是为了防止表名与关键字重名 -- 可以指定表的存储引擎和编码方式 CREATE TABLE `user`( id SMALLINT, username VARCHAR(20), age TINYINT, sex ENUM(‘男‘, ‘女‘, ‘保密‘), email VARCHAR(50), addr VARCHAR(200), birth YEAR, salary FLOAT(8,2), tel INT, married TINYINT(1) COMMENT ‘0代表未结婚,非0代表结婚‘ )ENGINE=INNODB CHARSET=utf8;
查看数据库中的所有数据表:
mysql> SHOW TABLES; +-----------------+ | Tables_in_mydb3 | +-----------------+ | cms_cate | | cms_news | | course | | user | +-----------------+ 4 rows in set (0.01 sec)
查看表结构:
三种方法: DESC table_name; DESCRIBE table_name; SHOW COLUMNS FROM table_name;
mysql> DESC user; +----------+----------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------------+------+-----+---------+-------+ | id | smallint(6) | YES | | NULL | | | username | varchar(20) | YES | | NULL | | | age | tinyint(4) | YES | | NULL | | | sex | enum(‘男‘,‘女‘,‘保密‘) | YES | | NULL | | | email | varchar(50) | YES | | NULL | | | addr | varchar(200) | YES | | NULL | | | birth | year(4) | YES | | NULL | | | salary | float(8,2) | YES | | NULL | | | tel | int(11) | YES | | NULL | | | married | tinyint(1) | YES | | NULL | | +----------+----------------------------+------+-----+---------+-------+ 10 rows in set (0.01 sec)
再创建一个整型的表test1,测试一下字段类型:
CREATE TABLE test1( num1 TINYINT, num2 SMALLINT, num3 MEDIUMINT, num4 INT, num5 BIGINT );
向表中插入一条记录:
-- 向表中插入数据 INSERT test1 VALUES(-128,-32768,-8388608,-2147483648,-9223372036854775808);
查询一下,看看是否插入成功 :‘
mysql> select * from test1; +------+--------+----------+-------------+----------------------+ | num1 | num2 | num3 | num4 | num5 | +------+--------+----------+-------------+----------------------+ | -128 | -32768 | -8388608 | -2147483648 | -9223372036854775808 | +------+--------+----------+-------------+----------------------+ 1 row in set (0.00 sec)
修改一下,让num1超出范围,看是否能插入成功:
mysql> INSERT test1 VALUES(-129,-32768,-8388608,-2147483648,-9223372036854775808); ERROR 1264 (22003): Out of range value for column ‘num1‘ at row 1
创建一个具有无符号的字段的表:
-- 无符号 CREATE TABLE test2( num1 TINYINT UNSIGNED, num2 TINYINT );
插入数据
-- 插入 INSERT test2 VALUES(0,-12);
mysql> INSERT test2 VALUES(-10,-12); ERROR 1264 (22003): Out of range value for column ‘num1‘ at row 1
零填充ZEROFILL
-- 零填充ZEROFILL, 加上ZEROFILL后自动变成无符号的 -- 如果不指定显示长度,默认为最大长度 CREATE TABLE test3( num1 TINYINT(3) ZEROFILL, num2 INT ZEROFILL ); -- 插入数据 INSERT test3 VALUES(1,1);
看一下填充效果:
mysql> select * from test3; +------+------------+ | num1 | num2 | +------+------------+ | 001 | 0000000001 | +------+------------+ 1 row in set (0.01 sec)
时间: 2024-12-08 23:23:14