04、MySql表的操纵(上)
表是数据库存储数据的基本单位,由若干个字段组成,主要用来存储数据记录。
对表的操纵有创建表、查看表、修改表、删除表、向表中插入数据、修改表中的数据
1、创建表
create table table_name (column_name column_type 约束条件)[存储引擎 字符集];
或者:create table if not exists table_name (column_name column_type[宽度]约束条件)[存储引擎 字符集];
注意:宽度和条件可选。
约束条件:
-
- 如果你不想字段为 null 可以设置字段的属性为 not null, 在操作数据库时如果输入该字段的数据为null ,就会报错。
- auto_increment定义列为自增的属性,一般用于主键,数值会自动加1。
- primary key关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
- engine 设置存储引擎,charset 设置编码。
2、查看表
show tables; --查看当前数据库中的所有表
desc table_name; --查看表的结构
show create table haha; --查看表详细结构语句
show table status like 'haha' \g --列比较多,想看的清楚一点,可以以\g结尾
3、修改表名
1、修改表名
rename table table_name to new_name;
alter table table_name rename new_name;
2、修改字段的数据类型
alter table t1 modify gender char(11); --只能改属性不能改名字
alter table t1 change gender age int(12); --既可以改名也可改属性(把gender改为age)
3、修改字段gender顺序
alter table t1 change gender gender int(12) first; --把gender方在第一列
alter table t1 change gender gender int(12) after id; --把gender方在id后面
4、添加新字段
alter table t1 add age int(10);
alter table t1 add (chinese int(10),english int(10));
5、删除字段
alter table table_name drop 字段名; --删除列
6、插入数据
insert into t1(id,name,math,china) values(1,"wing",80,90); insert into t1(id,name,math,china) values(2,"king",70,100),(3,"tom",50,70); insert into t1 set id=6,math=65; insert into t1 values(4,"xiaosan",50,100); insert into t1(id,math) values(5,70);
7、更新表中数据
update table_name set name="mysql" where id=5; --把表中id=5的记录名字改为mysql
delete from table_name where id=5; --删除id=5 的一条记录
delete from table_name; --删除表中所有数据
8、复制表1、复制表结构及数据到新表
1、create table 新表 select * from 旧表
这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable来删除。
不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、extra(auto_increment)等属性。需要自己添加,而且容易搞错。
2、只复制表结构到新表
create table 新表 select * from 旧表
或create table 新表 like 旧表
3、复制旧表的数据到新表(假设两个表结构一样)
insert into 新表 select * from 旧表
4、复制旧表的数据到新表(假设两个表结构不一样)
insert into 新表(字段1,字段2,.......) select 字段1,字段2,...... from 旧表
5、show create table 旧表;
这样会将旧表的创建命令列出。我们只需要将该命令拷贝出来,更改table的名字,就可以建立一个完全一样的表
9、删除表
drop table table_name;