您的位置:首页 > 数据库 > MySQL

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

2016-05-11 16:34 447 查看
提高整体性能:数据库是一个经常被多个客户访问,对处理请求以及用什么次序处理进行管理。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 新表名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: