MySQL表的操作(二)

创建表test3,主键有id和name,id字段自动增长,

Name字段不为空,且具有唯一属性,

Password为字符串,字段不为空。

create table test3(id int auto_increment,
name varchar(20) not null unique,
password varchar(20) not null,
primary key(id,name)
);

创建表test4,id字段自动增长,

Name字段不为空,且具有唯一属性,

Password为字符串,字段不为空

Nameid和othername为外键,关联父表为test3,对应关联属性为父表中的id和name;

create table test4(id int auto_increment,
name varchar(20) not null unique,
password varchar(20) not null,
nameid int ,
othername varchar(20),
constraint testf foreign key(id,name)references test3(id,name)
);

现在数据库中所有表如图:

1,修改表名:

语法:alter table 旧表名rename 新表名;

例如,修改test2表名为test5;

alter table test2 rename test5;

如图,可以看到test2没有了,test5取代了它:

2,修改字段的数据类型:

语法:alter table 表名 modify 属性名数据类型;

例如,修改test5表中的password字段数据类型,原password数据类型为varchar(20),现在要修改为varchar(40);

alter table test5 modify passwordvarchar(40);

password数据类型已经变为varchar(40),如图:

3,修改字段名:

语法:alter table 表名 change 旧属性名新属性名 新数据类型;

例如修改test5中的password字段为sex 数据类型为boolean;

Password字段被sex字段所取代,数据类型也变为布尔型,如图:

4,增加字段:

语法:alter table 表名 add 属性1 数据类型[完整性约束条件] [first|after 属性名2];

例如为test5增加一个address字段,数据类型为varchar(20),位置放在name后面,sex前面,约束条件是不为空;

alter table test5 add address varchar(20)not null  after name;

执行之后test5表的详细结构如图:

5,删除字段:

语法:alter table 表名drop 属性名;

例如,把test5中的sex字段删除;

alter table test5 drop sex;

命令执行结果:

6,修改字段在表中位置:

语法:alter table 表名 modify 属性名数据类型 first|after 属性名2;

例如,修改test5中的address字段位置,使address放到name之前,id之后;

Alter table test5 modify addressvarchar(20) after id;

命令执行结果:

7,更改表的存储引擎:

语法:alter table 表名 engine=存储引擎名;

例如,修改test5表的存储引擎,修改为myisam;

alter table test5 engine=myisam;

命令执行结果:

8,删除表的外键约束:

语法:alter table 表名 drop foreign key 外键别名;

Test4表具有一个外键约束,外键别名为testf,父表为test3,test4表的详细结构如图所示:

删除test4的外键约束alter table test4 drop foreign key testf;

命令执行结果:

9,删除表:

Drop table 表名;

今天先学到这儿了~

时间: 2024-11-10 11:22:22

MySQL表的操作(二)的相关文章

MySQL表的操作(一)

在创建表之前,首先要指明表在哪个数据库中创建,也就是要指明命令所要操作的数据库 用use语句选择数据库,一般格式:use 数据库名; 创建表的语法格式如下: 例如选择在linda数据库中创建一个use1表: use linda; create table use1(id int, name varchar(20), password varchar(20), sex boolean ); 代码运行之后,就会成功创建一个use1表,use1表中有四个字段,id为int型,name,password

MySQL表更新操作

1.  使用insert语句向表插入一条新记录,语法是:insert into 表名 [(字段列表)] values(值列表). 2.  使用set 语句更新操作与字符集,例如set character_set_client =latin1\gbk\utf8; 3.  使用delete语句删除表记录,例如 delete from 表名 where 条件表达式: 4.  使用insert语句可以一次性地向表中批量插入多条记录,语句是:insert  into 表名 [(字段名)]values (值

mysql 触发器 对 触发器所在表进行操作的问题

问题描述 如题 报错为图片中所示是不是触发器从设计上就根本不能进行对所在表进行操作呢?有没办法解决的说? 问题补充:manasky 写道 解决方案 "如果触发器无法操作所在表,那么我想通过使用一个过渡表上的触发器也可以勉强"正如你所说,如果hibernate在实现save或者批量插入时确实没法对ccc重新赋值,那我会像你说的那样,用另外一个临时表来协助完成这个操作.是不是主流,我还真不能判断. 但我有个感觉,hibernate应该是可以实现你这种需求的,如果这种需求都实现不了,那我估计

MySQL复制表数据操作sql语句

MySQL复制表数据操作相信大家都不会太陌生,下面就为您详细介绍MySQL复制表数据到新表的步骤,希望对您会有所启迪.  1.MySQL复制表结构及数据到新表   代码如下 复制代码    CREATE TABLE 新表  SELECT * FROM 旧表      2.只复制表结构到新表   代码如下 复制代码    CREATE TABLE 新表  SELECT * FROM 旧表 WHERE 1=2  即:让WHERE条件不成立.  方法二:(低版本的mysql不支持,mysql4.0.2

mysql表的基础操作汇总(三)_Mysql

针对mysql表进行的基础操作,具体内容如下 1.创建表: 创建表的语法形式: CREATE TABLE table_name( 属性名 数据类型, 属性名 数据类型, ... 属性名 数据类型 ) 示例: CREATE TABLE t_dept( deptno int, dname varchar(20), loc varchar(20) 备注:在创建表之前,通常你需要使用 USE 库名:这样一条语句来选择一个库,在所选择的库中创建表.对于表名标识符,不能是mysql的关键字,如 CREATE

在MySQL中删除表的操作教程_Mysql

丢弃现有MySQL的表是很容易的.但是需要非常小心,删除任何现有的一个表后将无法恢复,因为数据丢失.语法: 下面是通用的SQL语法丢弃(删除)MySQL表: DROP TABLE table_name ; 从命令提示符删除表: 只需要在mysql>提示符下执行DROP TABLE SQL命令. 例子: 下面是一个例子,它删除表 tutorials_tbl: root@host# mysql -u root -p Enter password:******* mysql> use TUTORIA

mysql表的清空、删除和修改操作详解_Mysql

一.清除mysql表中数据 delete from 表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容. 效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据. delete的效果有点像将mysql表中所有记录一条一条删除到删完, 而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表.

教你实现MySQL表数据迁移自动化

一.背景 之前我写过关于SQL Server的数据迁移自动化的文章:SQL Server 数据库迁移偏方,在上篇文章中设计了一张临时表,这个临时表记录搬迁的配置信息,用一个存储过程读取这张表进行数据的迁移,再由一个Job进行迭代调用这个存储过程. 在这次MySQL的实战中,我的数据库已经做了4个分片,分布在不同的4台机器上,每台机器上的数据量有1.7亿(1.7*4=6.8亿),占用空间260G(260*4=1040G),这次迁移的目的就是删除掉一些历史记录,减轻数据库压力,有人说这为什么不使用表

mysql-QT连MySQL数据库插入操作问题

问题描述 QT连MySQL数据库插入操作问题 版本:QT5.2.1 MySQL5.0代码如下: 代码一:query.exec(""insert into text1(idnamesex) values(1'1''1')""); 给数据库中text1表中插入数据,成功! 代码二:query.prepare(""insert into text1(idnamesex)""""values(:id:name:se