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;
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341