文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>sql常用语法

sql常用语法

时间:2010-10-13  来源:sq1990

1:    2个表的连接 1.select * from BJXXB, XSXXB where BJXXB.bh = XSXXB.xh;
BJXXB,XSXXB为2个表bh,xh分别为2个表的字段。
        1.一般的相等连接:
select * from a, b where a.id = b.id;
这个就属于内连接。
 
对于外连接:
Oracle中可以使用“(+) ”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN 
 
LEFT OUTER JOIN:左外关联 
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e 
LEFT OUTER JOIN departments d 
ON (e.department_id = d.department_id); 
等价于 
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e, departments d 
WHERE e.department_id=d.department_id(+) 
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。 
 
RIGHT OUTER JOIN:右外关联 
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e 
RIGHT OUTER JOIN departments d 
ON (e.department_id = d.department_id); 
等价于 
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e, departments d 
WHERE e.department_id(+)=d.department_id 
结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。 
 
FULL OUTER JOIN:全外关联 
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e 
FULL OUTER JOIN departments d 
ON (e.department_id = d.department_id); 
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。
 
2 查询语句
不在乎大小写
查询的话看第十讲
SELECT  查询字段,查询字段 (数据库名).FROM ‘表名’ WHERE 条件
SELECT *FROM  '表名' WHERE 【(字段id=2)】//条件
查询分组语句:
SELECT *FROM  '表名' group by ‘字段名’
排序查询:
(按照注册时间排序)
SELECT *FROM  '表名' order by '字段名' ASC//正序排序(desc倒序)
多重排序!!!
SELECT *FROM  '表名' limit m,n//列出从第m+1到n条
插入语句
insert into 表名 (字段…,…) values (‘值’…,…now())//            每一个字段必须一一对应每一个值,id因为自动累加所以可以不给它负值,now()函数自动获取电脑时间
update更新语句
UPDATE 表名 SET 字段 = ‘值’ WHERE (id=6)//条件 limit 
  prinr_r($变量名)      
/*= 等于 、<>不等于、in 包含 、 not in 不包含、 like 匹配
      BETWEEN  在范围  、 not BETWEEN  不在范围  < 、>
  3。 删除语句   delete from BJXXB where BH=5; 4 分页查询   1.SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM BJXXB) A WHERE ROWNUM <= 5)WHERE RN >= 1 2.SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM BJXXB) A )WHERE RN BETWEEN 1 AND 3
只需要改动  BJXXB为新表的名字即可。
2的执行效率明显没有1高所以一般都用1。
这是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,
以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE
ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一
旦超过了ROWNUM限制条件,就终止查询将结果返回了。
  而第二个查询语句,由于查询条件BETWEEN 21 AND 40是存在于查询的第三层
,而Oracle无法将第三层的查询条件推到最内层(即使推到最内层也没有意义,因为最内层查询不知道RN代表什么)
。因此,对于第二个查询语句,Oracle最内层返回给中间层的是所有满足条件的数据,
而中间层返回给最外层的也是所有数据。数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。
  5 更新数据   update bjxxb set bjmc='luo' where bh=1;
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载