sql易忘知识点

1、delete、update语句结构如下

delete from Channel where id=99999
update Channel set ParentId=1000 where id=909

上面代码如果没有找到匹配项的话(即没有99999这个id),也不会报错

 

2、使表的id从1开始

TRUNCATE  TABLE 表名

 

3、以后拷贝sql 数据库的时候一定要使用sql中的收缩功能,它能减少很多占用的空间,如刚才试验了一个进行了很多增删改查的数据库和日志文件,从270+M直接精简到了4.25M,真的很节省空间,而且我们拷贝的时候速度也加快了不少。

4、大数据我们应该如何操作,如10W条数据的表,第一我们我们应该采用索引在常用字段上面建立索引,如搜索经常检索的是标题,那么我们就应该在标题这一列上建一个索引;同时我们应该在sql操作中应用更多的存储过程,减少使用sql文直接操作;我们可以在程序端使用缓存技术,尽量避免经常的使用数据库的CRUD操作。

5、记住了在程序中使用sql进行delete、update、add复杂操作的时候(如一条语句对多个表进行操作),别忘了使用事务,如果发生错误会发生回滚操作。

6、inner join、left join、right join、join的区别

a、什么情况下必须使用inner join,需求如下

有两个数据表,一个有学生表(学号、姓名 );一个分数表表(学号,分数)(60分以下不及格)
,需求:查找不及格学生的学号、姓名、分数

学生表:
ID Name
1 张三
2 李四
3 王五
4 马六

分数表
ID Score
1 59
2 43
3 65

1 select name,Score.score,Score.id from Student,Score where Student.id = Score.id and score.score<60
2 select name,Score.score,Score.id from Student inner join Score on Student.id = Score.id and Score.score<60

上面两句一个使用inner join 一个是使用从两个表里面添加条件筛选,据说底层实现的效果都是一样的(未验证),join就是inner join。

b、left join、right join区别

right join

select * from Student right join Score on Score.id=Student.id and Score.score<60

结果

left join

select * from Student left join Score on Score.id=Student.id and Score.score<60

结果

下面说一下left join 和 right join,left join是把left join这个关键字 左面的表的内容全取出来然后再搭配右面表(符合内容部分);相反的,right join就是把right join 这个关键字的右面的表的所有内容都取出来,然后搭配符合内容的左面表的内容。

posted @ 2015-04-29 13:40  我的___爱  阅读(176)  评论(0)    收藏  举报