提高整体性能:数据库是一个经常被多个客户访问,对处理请求以及用什么次序处理进行管理。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 新表名