标签:
m1)插入完整的行;m2)插入行的一部分;m3)插入多行;m4)插入某些查询的结果;
2.1)对于属于 auto_increment 的列,我们用插入null 来替代;2.2)编写插入行的安全方法:要指定插入列名,后面更values 的各个value,而不仅仅是插入values;如 insert into product(id,vendor,price) values(null,1,1.1);2.3)省略列: 如果表的定义允许,则可以在 insert 操作中省略某些列。省略列必须满足以下某个条件(conditions)
c1)该列定义为允许null值;c2)在表定义中给出 default值,这表示如果不给出值,则使用该默认值;
2.4)提高整体性能:数据库经常被多个客户访问,对处理什么请求以及用什么次序处理进行管理是MySQL的任务。如果数据检索是重要的,则你可以通过在 insert 和 into 之间添加关键字 low_priority,指示MySQL 降低 insert语句的优先级;(如 insert low_priority into);
4.1)intro:将select出的数据作为insert 插入的原始数据;
1.0)update语句由3部分组成:要更新的表, 列名和他们的新值, 确定要更新行的过滤条件;1.1)更新单个列和更新多个列
1.2)ignore关键字:如果用update语句更新多个行,并且在更新这些行中的一行或多行时出现一个错误,则这个update操作被取消。即使是发生错误,也继续进行更新,可使用 ignore 关键字(update ignore product)
1.3)为了删除某个列的值,可以设置它为null(假设表允许null值);(图片t85)
r1)除非确实打算更新和删除每一行,否则绝对不要使用不带 where 子句的update 和 delete语句;r2)保证每个表都有主键;r3)在对update 和 delete 语句使用 where子句前,应该先用 select 进行测试,保证它过滤的是正确记录,以防编写的where子句不正确;r4)使用强制实施引用完整性的数据库,这样MySQL将不允许删除具有与其他表相关联的数据的行;
1.1)如果你想在一个表不存在时创建它,应该在表明前给出 if not exists语句;
1.2)使用NULL值
Attention)理解NULL: 不要把null值 与 空串相混淆,NULL 值是没有值,它不是空串。如果指定‘’(两个单引号,其间没有字符),这在not null 列中是允许的;空串是一个有效值,它不是无值;1.3)主键再介绍:单个主键 和 复合主键;
1.4)使用auto_increment:自动递增;Attention)
A1)确定auto_increment的值:让MySQL 生成主键的一个缺点是你不知道这些值都是谁;A2)如何在使用 auto_increment 列时获得这个值呢? select last_insert_id() 来获得;
1.5)指定默认值:如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用 create table 的列定义中的 default 关键字指定;
1.6)引擎类型:
1.6.1)intro to engine:MySQL 有一个具体管理和处理数据的 内部引擎。在你使用 create table 语句时,该引擎具体创建表,而在你使用select 语句或进行其他db 处理时,该引擎在内部处理你的请求;1.6.2)如果省略engine 语句, 则默认的引擎是MyISAM;(干货——这里强烈建议添加engine关键字指定数据库表的引擎)1.6.3)需要知道以下几个MySQL 的engines:
engine1)InnoDB:是一个可靠的事务处理引擎,它不支持全文本搜索;engine2)MEMORY: 在功能上等同于 MyISAM,但由于数据存储在内存中,速度很快;engine3)MyISAM:MyISAM是一个性能很高的引擎,它支持全文本搜索,但不支持事务处理;
Attention)外键不能跨引擎,即使用一个引擎的表不能引用具有使用不同引擎的表的外键;
2)下面内容讨论的是更新表,删除表和重命名表的内容
以下内容转自: http://blog.163.com/zhangjie_0303/blog/static/99082706201191911653778/
ALTER TABLE:添加,修改,删除表的列,约束等表的定义。
查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 删除列:alter table 表名 drop column 列名; 修改列名MySQL: alter table bbb change nnnnn hh int; 修改列名SQLServer:exec sp_rename't_student.name','nn','column'; 修改列名Oracle:lter table bbb rename column nnnnn to hh int; 修改列属性:alter table t_book modify name varchar(22);
for spec relative info, please visit MySQL 添加列+修改列+删除列
1.1)假如吧整个查询包装为一个名为 product_vendor的虚拟表,则可以如下轻松地检索出相同的数据;
1.2)这就是视图的作用:product_vendor 是一个视图,作为视图,它不包含表中应该有的任何列或数据,它包含的是一个SQL查询;(干货——视图包含的是一个SQL查询)
r1)重用SQL 语句;r2)简化复杂的SQL操作;r3)使用表的组成部分而不是整个表;r4)保护数据;r5)在创建视图后,可以用与表基本相同的方式利用它们。可以对视图执行select操作,过滤和排序操作,将视图联结到其他视图或表,甚至能添加和更新数据;
r1)对于可创建的视图数目没有限制;r2)为了创建视图,必须要有足够的访问权限;r3)视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图;r4)order by 可以用在视图中,但如果从该视图检索数据的 select语句中也含有 order by,那么该视图中的 order by 将被覆盖;r5)视图不能索引,也不能有关联的触发器或默认值;r6)视图可以和表一起使用;
4.1)视图用 create view 语句来创建;4.2)使用show create view viewname来查看创建视图的语句;4.3)使用drop 删除视图,其语法为 drop view viewname;4.4)更新视图时,可以先用 drop 再用 create,也可以直接用 create or replace view。如果要更新的视图不存在,则第2条更新语句会创建一个视图;如果要更新的视图存在,则第2条语句会替换原有视图;
o1)分组(使用 group by 和 having);o2)联结;o3)子查询;o4)并;o5)聚集函数(min()函数, count()函数,sum() 函数等);o6)distinct;o7)导出(计算)列;
标签:
原文地址:http://blog.csdn.net/pacosonswjtu/article/details/51429234