SQL数据库之二
l INNER JOIN
内连接是最常见的一种连接,它页被称为普通连接,而E.FCodd最早称之为自然连接。
下面是ANSI SQL-92标准
select * from t_institution i
inner join t_teller t
on i.inst_no = t.inst_no //说两个表之间的关系用ON
where i.inst_no = "5801"
其中inner可以省略。等价于早期的连接语法
select * from t_institution i, t_teller t
where i.inst_no = t.inst_no
and i.inst_no = "5801"
SELECT *
from 明日工资表 AS a INNER JOIN 部门表 AS b
ON a.部门名称=b.部门名称
WHERE 工资月份='3'
l LEFT OUTER JOIN---1
select * from t_institution i //表在from中的定义别名不需要AS
left outer join t_teller t
on i.inst_no = t.inst_no
其中outer可以省略。
SELECT a.部门编号,a.部门名称,a.负责人,
b.人员编号,b.人员姓名,b.部门名称,
b.学历,b.技术职称
from 明日部门表 a LEFT OUTER JOIN 明日人员表 b
ON a.部门名称=b.部门名称
l LEFT OUTER JOIN---2
USE pubs //定义要使用的数据库
SELECT a.au_fname, a.au_lname, p.pub_name
from authors a LEFT OUTER JOIN publishers p
ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
l RIGHT OUTER JOIN
select * from t_institution i
right outer join t_teller t
on i.inst_no = t.inst_no
SELECT *
from 部门表 a RIGHT OUTER JOIN 明日工资表 b
ON a.部门名称=b.部门名称
WHERE b.工资月份='10'
l FULL OUTER
全外连接返回参与连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行。在功能上,它等价于对这两个数据集
相关文档:
方法一、尽量使用复杂的SQL来代替简单的一堆 SQL.
同样的事务,一个复杂的SQL完成的效率高于一堆简单SQL完成的效率。有多个查询时,要善于使用JOIN。
oRs=oConn.Execute("SELECT * from Books")
while not oRs.Eof
strSQL = "SELECT * from Authors WHERE AuthorID="&oRs("AuthorID") oRs2=oConn.Execute(strSQ ......
一、字符转换函数
1、ASCII()
返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。
2、CHAR()
将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。
3、LO ......
在学习SQL时看到的一片很好的文章,特贴出来和大家一起分享!
我们要做到不但会写SQL,还要做到写出性能优良的SQL语句。
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):
Oracle的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处 ......
thunder:
1.MYSQL实现
mysql> select * from user;
+----+----------+----------+-----------------+
| ID | username | password | email |
+----+----------+----------+-----------------+
| 1 | admin | admin &nb ......