1、insert语句
1):insert low_priority into ,指示降低insert 语句的优先级,在一定程度上能够提高整体的性能。
因为数据库经常被多个客户方法,此时相对重要的是select语句,当降低了insert等语句后,select自然优先了。
这种方式还适用与update和delete语句。
2):一个sql语句插入多条数据
insert into table(value1,value2)
values(
'myValue1',
'myValue2'
),
(
'myValue3'
'myValue4'
);
用单条insert语句处理多个插入比使用多条insert语句快,能够提高insert性能。
3):插入检索出来的数据
insert into table1(value1,value2)
select valuetemp1,valuetemp2 from table2;
2、update语句
update table1
set column='value1'
where id=100;
#使用update语句时记得使用where,否则会更改全部
#update语句中可以用子查询,使得能用select语句检索出的数据更新列数据。
#ignore关键字
正常情况,使用update时,如果更新多条数据,并且中间出错了,则所有出错前
更新完的数据都会恢复到它们原来的值。
可以通过设置ignore关键字设置成:即使是发生错误,也继续进行更新:
update ignore table1.......
3、delete语句
delete from table
where id=100;
#注意使用where,否则会删除所有行
#当要删除表所有行是,使用truncate table语句,更快。
4、创建表相关
#每个表只允许一个auto_increment列,而且它必须被索引
#当表中一个列设定为auto_increment时,还可以通过insert插入该值,只要该值是唯一的。
#可以通过select last_insert_id(),来获得最新的自增长(auto_increment)的值。
5、引擎类型
mysql支持多种引擎,它们具有各自不同的功能和特性,为不同的任务选择正确的引擎。
#InnoDB:一个可靠的事务处理引擎,它不支持全文本搜索;
#MEMORY:在功能上等同于MyISAM,但由于数据存储再内存(不是硬盘),所以速度很快,特别适合临时表。
#MyISAM:是一个性能极高的引擎,它支持全文本搜索,但是不支持事务处理。
不同的表之间引擎类型可以混用,不过值得注意的是:
外间不能跨引擎,即用一个引擎的表不能引用具有不同引擎的表的外键。
6、表的维护
#增加一个列
alter table table1
add volumn1 char(20);
#增加外键
alter table orderitems
add constraint fk_orderitems_orders
foreign key (order_num) references orders (order_id);
#删除表
drop table table1;
#重命名表
rename table table1 to table2;
7、视图相关
create view viewname as select * from table1;
1):视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
#利用视图可以保护数据,即授予用户部分表的访问权限而不是整张表的权限。
#性能问题:因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任一个检索。
如果你用多个联结和过滤创建了复杂的视图或者嵌套了视图,可能会使性能下降的非常厉害。
#order by可以用再视图中,但是如果该视图检索数据的select语句中也有order by,那么该视图的
order by将被覆盖。
#视图不能索引,也不能有关联的触发器或默认值。
#视图可以和表一起用。
2):维护视图相关操作
#使用show create view viewname;来查看创建视图的语句。
#删除视图:drop view viewname;
#更新视图方法
一:先drop再create;
二:直接create or replace view;如果没有的话,会新建一个。
8、最后一个小段,视图可以更新么?
上述讲的视图都是select语句使用的,然而是否可以更新么?
看情况,有些情况是可以的。通常,视图是可以更新的,即可以使用insert、update、和
delete,更新一个视图将更新至其基表。如果你对视图增加或者删除,实际上是作用与基表。
但是并不是所有视图都可以更新的,如果视图定义中有一下操作,则不能进行视图更新:
#分组(使用group by 和having)
#联结
#子查询
#并
#聚集函数
#distinct
从上面可以看出,现实中大部分视图都是不可以更新的,所以一般,应该将视图用于检索而不是更新!!