首页 > 数据库 > MySQL > 正文

MySQL的增删查改语句用法示例总结

2024-07-24 13:07:05
字体:
来源:转载
供稿:网友

这篇文章主要介绍了MySQL的增删查改语句用法示例总结,是对MySQL学习的基本知识点的一个归纳,需要的朋友可以参考下

1.创建列

 

 
  1. alter table tablename add colname type not null default '0′; 

例:

 

 
  1. alter table mmanapp_mmanmedia add appid_id integer not null default 372; 

2.删除列

 

 
  1. alter table tablename drop column colname; 

例:

 

 
  1. alter table mmanapp_mmanmedia drop column appid_id; 

3.在已经存在的列上创建外键关联

 

 
  1. ALTER TABLE yourtablename ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, …) REFERENCES tbl_name (index_col_name, …) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}] 

例:

 

 
  1. ALTER TABLE mmanapp_mmanmedia ADD CONSTRAINT fk_mdappid FOREIGN KEY(appid_id) 

4.删除外键关联:

 

 
  1. ALTER TABLE yourtablename DROP FOREIGN KEY fk_symbol; 

例:

 

  
  1. ALTER TABLE mmanapp_mmanmedia DROP FOREIGN KEY fk_mdappid 

附文档两份:

一.mysql对列和表的相关操作

增加主键

 

 
  1. alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id); 

增加一个新列

 

 
  1. alter table infos add ex tinyint not null default '0′; 

删除列

 

 
  1. alter table t2 drop column c; 

重命名列/改变列类型

 

 
  1. alter table t1 change a b integer
  2. alter table t1 change b b bigint not null
  3. alter table infos change list list tinyint not null default '0′; 

重命名表

 

 
  1. alter table t1 rename t2; 

加索引

 

 
  1. mysql> alter table tablename change depno depno int(5) not null
  2. mysql> alter table tablename add index 索引名 (字段名1[,字段名2 …]); 
  3. mysql> alter table tablename add index emp_name (name); 

加主关键字的索引

 

 
  1. mysql> alter table tablename add primary key(id); 

加唯一限制条件的索引

 

 
  1. mysql> alter table tablename add unique emp_name2(cardnumber); 

删除某个索引

 

 
  1. mysql>alter table tablename drop index emp_name; 

二.对表增/删约束关系

InnoDB允许你用ALTER TABLE往一个表中添加一个新的 外键约束:

 

 
  1. ALTER TABLE yourtablename 
  2. ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, …) 
  3. REFERENCES tbl_name (index_col_name, …) 
  4. [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}] 
  5. [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}] 

记住先创建需要的索引。你也可以用ALTER TABLE往一个表添加一个自引用外键约束。

InnoDB也支持使用ALTER TABLE来移除 外键:

 

 
  1. ALTER TABLE yourtablename DROP FOREIGN KEY fk_symbol; 

当年创建一个外键之时,如果FOREIGN KEY子句包括一个CONSTRAINT名字,你可以引用那个名字来移除 外键。另外,当外键被创建之时,fk_symbol值被InnoDB内部保证。当你想要移除一个外键之时,要找出标记,请使用SHOW CREATE TABLE语句。例子如下:

 

 
  1. mysql> SHOW CREATE TABLE ibtest11c/G 
  2. *************************** 1. row *************************** 
  3. Table: ibtest11c 
  4. Create TableCREATE TABLE ibtest11c ( 
  5. int(11) NOT NULL auto_increment, 
  6. int(11) NOT NULL default '0′, 
  7. varchar(200) NOT NULL default ”, 
  8. varchar(175) default NULL
  9. PRIMARY KEY (A,D,B), 
  10. KEY B (B,C), 
  11. KEY C (C), 
  12. CONSTRAINT 0_38775 FOREIGN KEY (A, D) 
  13. REFERENCES ibtest11a (A, D) 
  14. ON DELETE CASCADE ON UPDATE CASCADE
  15. CONSTRAINT 0_38776 FOREIGN KEY (B, C) 
  16. REFERENCES ibtest11a (B, C) 
  17. ON DELETE CASCADE ON UPDATE CASCADE 
  18. ) ENGINE=INNODB CHARSET=latin1 
  19. 1 row in set (0.01 sec) 
  20.  
  21. mysql> ALTER TABLE ibtest11c DROP FOREIGN KEY 0_38775; 

InnoDB解析程序允许你在FOREIGN KEY … REFERENCES …子句中用`(backticks)把表和列名名字围起来。InnoDB解析程序也考虑到lower_case_table_names系统变量的设置。

InnoDB返回一个表的外键定义作为SHOW CREATE TABLE语句输出的一部分:

 

 
  1. SHOW CREATE TABLE tbl_name; 

从这个版本起,mysqldump也将表的正确定义生成到转储文件中,且并不忘记 外键。

你可以如下对一个表显示外键约束:

 

 
  1. SHOW TABLE STATUS FROM db_name LIKE ‘tbl_name'; 

外键约束被列在输出的Comment列。

当执行外键检查之时,InnoDB对它照看着的子或父记录设置共享的行级锁。InnoDB立即检查外键约束,检查不对事务提交延迟。

要使得对有外键关系的表重新载入转储文件变得更容易,mysqldump自动在转储输出中包括一个语句设置FOREIGN_KEY_CHECKS为0。这避免在转储被重新装载之时,与不得不被以特别顺序重新装载的表相关的问题。也可以手动设置这个变量:

 

 
  1. mysql> SET FOREIGN_KEY_CHECKS = 0; 
  2. mysql> SOURCE dump_file_name; 
  3. mysql> SET FOREIGN_KEY_CHECKS = 1; 

如果转储文件包含对外键是不正确顺序的表,这就以任何顺序导入该表。这样也加快导入操作。设置FOREIGN_KEY_CHECKS为0,对于在LOAD DATA和ALTER TABLE操作中忽略外键限制也是非常有用的。

InnoDB不允许你删除一个被FOREIGN KEY表约束 引用的表,除非你做设置SET FOREIGN_KEY_CHECKS=0。当你移除一个表的时候,在它的创建语句里定义的约束也被移除。

如果你重新创建一个被移除的表,它必须有一个遵从于也引用它的外键约束的定义。它必须有正确的列名和类型,并且如前所述,它必须对被 引用的键有索引。如果这些不被满足,MySQL返回错误号1005 并在错误信息字符串中指向errno 150。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表