MYSQL必知必会读书笔记 第十九至二十一章 数据的插入、更新、删除

提高整体性能:数据库是一个经常被多个客户访问,对处理请求以及用什么次序处理进行管理。INSERT操作可能很耗时(特别是有很多索引需要更新时),而且它可能降低等待处理SELECT语句的性能。通常可以降低INSERT语句的优先级

INSERT LOW_PRIORITY  INTO

插入多组值,每组用一对圆括号括起来,用逗号分隔此技术可以提高数据库处理的性能,因为MySQL用单条INSERT语句处理多个插入比多条INSERT语句快。

插入检索出的数据

INSERT  SELECT中为了简单起见,在INSERT 和SELECT语句中使用相同的列名。但是不一定要求列名匹配。

INSERT INTO customers(cust_id,cust_constact,cust_email,cust_name)  SELECT   cust_id,cust_constact,cust_email,cust_name  FROM custnew;

在使用UPDATE的时候不要忽略WHERE子句。为了安全起见可以限制可控制UPDATE语句的使用

如果使用UPDATE语句更新多行,并且在更新这些行中的一行或多行时出现一个错误那么整个update操作将会被取消,可以使用IGNORE关键字,表示即使出现错误也继续进行更新。

UPDATE IGNORE  customers..

为删除某一列的值,可以设置为NULL

UPDATE  customers SET cust_email=NULL  WHERE  cust_id=10005;


DELETE语句从表中删除行,甚至是删除表中所有行。但是delete 不删除表本身。

如果想从表中删除所有行,不要使用DELETE,可以使用TRUNCATE  TABLE语句,完成相同的工作但是速度更快。(TRUNCATE 实际上是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)

确定AUTO_INCREMENT 值:主键自动增长的一个缺点是你不知道这些值都是谁。那么如何使用AUTO_INCREMENT列时获得这个值呢?可以使用last_insert_id()函数获得这个值;

SELECT last_insert_id();

此句返回最后一个AUTO_INCREMENT的值,然后将它用于后续的MYSQL语句中。

指定默认值:

quantity  int NOT NULL  DEFAULT  1//与大多数DBMS不一样,MYSQL不允许使用函数作为默认值,它支持常量。

更改表的结构:

ALERT TABLE

ALTER  TABLE  vendors  ADD  vend_phone  CHAR(20);

删除列

ALTER TABLE  vendors  DROP COLUMN  vend_phone;

定义外键:

ALTER  TABLE  orderitems  ADD  CONSTRAINT fk_orderitems_orders  FOREIGN KEY (order_num)  REFERENCES  orders(order_num);

复杂的表结构更改一般需要动手删除过程,它涉及以下步骤。

1.用新的列布局创建一个新表;

2.使用INSERT  SELECT 语句从旧表中复制数据到新表。如果有必要,可使用转换函数和计算字段。

3.检验包含所需数据的新表;

4.重命名旧表(如果确定可一删除它);

5.用旧表的名字重命名新表。

6.根据需要,重新创建触发器、存储过程、索引和外键。

重命名表:RENAME TABLE  旧表名  to  新表名




你可能感兴趣的:(MYSQL必知必会读书笔记 第十九至二十一章 数据的插入、更新、删除)