mysql 表操作
Posted 人生何必久睡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 表操作相关的知识,希望对你有一定的参考价值。
一、表介绍
表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段
二 、创建表
1、基本语法
# 语法:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
# 解释:
类型:使用限制字段必须以什么样的数据类型传值
约束条件:约束条件是在类型之外添加一种额外的限制
# 注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选
3. 字段名和类型是必须的
4. 表中的最后一个字段不能加逗号 ’,‘
2、数据表操作
查看表之前先选择数据库
use db1;
查看当前库下所有的表
show tables;
单独查看一个表的信息
show create tables t1;
查看表的结构
desc t1;
创建表
create table t1 (字段名 数据类型 [完整性约束条件]);
修改表名
alter table t1 rename t2;
删除表
drop table t1;
清空表
delete from t1; (清除表里的所有记录,不会表的id重置为0)
truncate t1;(将整张表重置,包括数据,和自增长的id)
3、查看表结构
mysql> desc t2
三、数据类型
1、整形类型(一般常用 int )
1、作用:id号,各种号码,年龄,等级 2、分类: tinyint----tinyint[(m)] [unsigned] [zerofill]
有符号:-128 ~ 127
无符号:0 ~ 255
int--------int[(m)][unsigned][zerofill]
有符号:-2147483648 ~ 2147483647
无符号: 0 ~ 4294967295
bigint-----[(m)][unsigned][zerofill]
有符号:-9223372036854775808 ~ 9223372036854775807
无符号:0 ~ 184467440737095516153、测试:默认整型都是有符号的 create table t1(x tinyint); insert into t1 values(128),(-129); create table t2(x tinyint unsigned); insert into t2 values(-1),(256); create table t3(x int unsigned); #4294967295 insert into t3 values(4294967296); create table t4(x int(12) unsigned); insert into t4 values(4294967296123); 4、强调:对于整型来说,数据类型后的宽度并不是存储限制,而是显示限制 所以在创建表示,如果字段采用的是整型类型,完全无需指定显示宽度, 默认的显示宽度,足够显示完整当初存放的数据 # 显示时,不够8位用0填充,如果超出8位则正常显示 create table t5(x int(8) unsigned zerofill); insert into t5 values(4294967296123); insert into t5 values(1);
2、浮点型(一般常用 float )
作用:存储身高、体重、薪资 分类: float (*****) double (**) decimal (**) 测试: #相同点 #1、对于三者来说,都能存放30位小数, #不同点: 1、精度的排序从低到高:float,double,decimal 2、float与double类型能存放的整数位比decimal更多 create table t9(x float(255,30)); create table t10(x double(255,30)); create table t11(x decimal(65,30)); insert into t9 values(1.111111111111111111111111111111); insert into t10 values(1.111111111111111111111111111111); insert into t11 values(1.111111111111111111111111111111); mysql> select * from t9; +----------------------------------+ | x | +----------------------------------+ | 1.111111164093017600000000000000 | +----------------------------------+ 1 row in set (0.00 sec) mysql> select * from t10; +----------------------------------+ | x | +----------------------------------+ | 1.111111111111111200000000000000 | +----------------------------------+ 1 row in set (0.00 sec) mysql> select * from t11; +----------------------------------+ | x | +----------------------------------+ | 1.111111111111111111111111111111 | +----------------------------------+ 1 row in set (0.00 sec)
3、字符类型
1、作用:姓名,地址,描述类的信息 2、分类: char 定长 varchar 变长 char # 缺点:浪费空间 # 优点:存取速度都快 varchar # 缺点:存取速度都慢 # 优点:节省空间
3、测试:字符的宽度限制单位是字符个数 create table t12(x char(4)); # 超出4个字符则报错,不够4个字符则用空格补全成4个字符 create table t13(y varchar(4));# 超出4个字符则报错,不够4个字符那么字符有几个就存几个 insert into t12 values(\'hello\'); insert into t13 values(\'hello\'); insert into t12 values(\'a\'); #\'a \' insert into t13 values(\'a\'); #\'a\' set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH"; select char_length(x) from t12; #4 select char_length(y) from t13; #1 # 注意: 针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中 但会在读出结果时自动去掉末尾的空格,因为末尾的空格在以下场景中是无用 mysql> select * from t14 where name="lxx"; # name字段明确地等于一个值,该值后填充空格是没有用 mysql> select * from t14 where name like "lxx"; # name字段模糊匹配一个值,该值后填充空格是有用的
4、日期类型
1、作用:时间相关 2、分类: date:1999-01-27 time: 11:11:11 datetime:1999-01-27 11:11:11 year:1999 3、测试 create table student( id int, name char(16), born_year year, birth date, class_time time, reg_time datetime ); insert into student values(1,\'egon\',\'2000\',\'2000-01-27\',\'08:30:00\',\'2013-11-11 11:11:11\');
5、枚举和集合类型
作用与分类: 枚举enum,多选一个 集合set,多选多 测试 create table teacher( id int, name char(16), sex enum(\'male\',\'female\',\'others\'), hobbies set(\'play\',\'read\',\'music\',\'piao\') );
四、约束条件
http://www.cnblogs.com/fixdq/p/9009263.html
五、修改表
语法: 1. 修改表名 ALTER TABLE 表名 RENAME 新表名; 2. 增加字段 ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…], ADD 字段名 数据类型 [完整性约束条件…]; ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] FIRST; ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名; 3. 删除字段 ALTER TABLE 表名 DROP 字段名; 4. 修改字段 ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…]; ALTER TABLE 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…]; ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
六、复制表
1、复制表结构+记录 (key不会复制: 主键、外键和索引) mysql> create table new_service select * from service; 2、只复制表结构(就是复制表的时候 给定一个为假的条件 ) mysql> select * from service where 1=2; //条件为假,查不到任何记录 Empty set (0.00 sec)
mysql> create table new1_service select * from service where 1=2; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> create table t4 like employees;
以上是关于mysql 表操作的主要内容,如果未能解决你的问题,请参考以下文章