常用SQL语句的整理
2017-02-11 16:35
344 查看
普通sql语句
创建普通用户:crete user 用户名identified by 用户密码;
删除用户:drop user 用户名 cascade;
授权:grant resource,connect to 用户名;
查询日期:select sysdate from dual;
修改列宽:col 列名 format a8;
Col 列名 format 9999,999;
创建表: create table stu(id number(4)constraint pk_stu primary key,name varchar2(8),age number(2));
断开连接:exit,quit,disconn
查询用户的所有表: select table_name from user_tables;
以明口令方式连接到用户:connect 用户名/账号密码;
以隐藏口令方式连接到用户:connect system;
退出数据库方式:exit,quit
列出表结构信息:desc 表名;
多表查询
用户操作的功能所涉及的数据往往不在一张表中;
通过Join(连接)可将多张表连接起来查询数据;
通常通过表的主键和外键进行表之间的连接;
表的join方式
等价连接,不等价连接,外链接(包括左外连接和右外连接),内连接和全连接,自连接,集合运算符union,minus,union all,intersect
笛卡尔积的避免
采用连接查询;
SELECT table.column, tble.column FROM table1, table2 WHERE table1.column1=table2.column;
通常采用主键和外键进行表的连接;
有重复的列名一定要通过表名分隔,建议重不重复都加上表名,可以大幅度地提高性能;
可以为表名提供别名,操作更加方便;
表的连接方式
等价连接:
俩个表间的连接方式是通过“=”建立;
别名:
列的别名在SELECT语句中定义,表的别名在FROM子句中定义;
别名只在该语句中有用;
一旦给表创建了别名,标识列时只能通过表的别名,而不能是表的真名;
例子1:
SELECT e.last_name,e.dept_id,d.id,d.name
FROM s_emp e,s_dept d
WHERE e.dept_id=d.id
AND e.dept_id=42;
不等价连接:
俩个表间的连接条件不是通过“=”号建立,可以是“<”,“BETWEEN AND”,以及“LIKE”等,总之不是“=”号;
例子:
SELECT e.ename,e.job,e.sal,s.grade
FROM emp e,salgrade s
WHERE e.sal BETWEEN s.losal AND s.hisal;
外链接:
左外连接等同于在“=”右边加“+”,将“=”右边表中未匹配的记录也查找出来;
右外连接等同于在“=”左边加“+”,将“=”左边表中未匹配的记录也查找出来;
外链接只能出现在表达式的一边;
包含外链接的条件不允许(使用in操作符,使用Or操作符连接到另外一个条件)
内连接:inner join
内连接:查询出匹配的记录,未匹配的记录无法查询出;
例子:
SELECT e.last_name,e.id,c.name
FROM s_custtomer c inner join s_emp e
ON e.id=c.sales_rep_id
ORDER BY e.id;
全连接:full outer join
全连接:查询俩侧表所有记录包括未匹配的记录
例子:
SELECT e.last_name ,e.id,c.name
FROM s_emp e full outer join s_customer c
ON e.id=c.sales_rep_id
ORDER BY e.id;
自连接:
例子:
SELECT worker.last_name||’works for’||manager.last_name
FROM s_emp worker,s_emp manager
WHERE worker.manager_id=manager.id;
例子:从s_emp表中找出所有员工信息(包括未分配进部门的员工);
SELECT emp.id,emp.last_name,emp.manager_id,mgr.id
FROM s_emp emp, s_emp mgr
WHERE emp.manager_id=mgr.id(+);
集合运算符:
Union
Union在进行表连接后会筛选掉重复的记录,所以在表连接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果;
Select * from 表1 union select *from 表2;
Union all
Union all 将俩个结果合并后就返回且不进行排序,这样,如果返回的俩个结果集中有重复的数据,那么返回的结果集就会包含重复的数据;
Minus(减)
第一个结果集减去第二个结果集中的记录(在第一个结果集也存在的公共记录);
Select * from A
minus
select * from B;
创建普通用户:crete user 用户名identified by 用户密码;
删除用户:drop user 用户名 cascade;
授权:grant resource,connect to 用户名;
查询日期:select sysdate from dual;
修改列宽:col 列名 format a8;
Col 列名 format 9999,999;
创建表: create table stu(id number(4)constraint pk_stu primary key,name varchar2(8),age number(2));
断开连接:exit,quit,disconn
查询用户的所有表: select table_name from user_tables;
以明口令方式连接到用户:connect 用户名/账号密码;
以隐藏口令方式连接到用户:connect system;
退出数据库方式:exit,quit
列出表结构信息:desc 表名;
多表查询
用户操作的功能所涉及的数据往往不在一张表中;
通过Join(连接)可将多张表连接起来查询数据;
通常通过表的主键和外键进行表之间的连接;
表的join方式
等价连接,不等价连接,外链接(包括左外连接和右外连接),内连接和全连接,自连接,集合运算符union,minus,union all,intersect
笛卡尔积的避免
采用连接查询;
SELECT table.column, tble.column FROM table1, table2 WHERE table1.column1=table2.column;
通常采用主键和外键进行表的连接;
有重复的列名一定要通过表名分隔,建议重不重复都加上表名,可以大幅度地提高性能;
可以为表名提供别名,操作更加方便;
表的连接方式
等价连接:
俩个表间的连接方式是通过“=”建立;
别名:
列的别名在SELECT语句中定义,表的别名在FROM子句中定义;
别名只在该语句中有用;
一旦给表创建了别名,标识列时只能通过表的别名,而不能是表的真名;
例子1:
SELECT e.last_name,e.dept_id,d.id,d.name
FROM s_emp e,s_dept d
WHERE e.dept_id=d.id
AND e.dept_id=42;
不等价连接:
俩个表间的连接条件不是通过“=”号建立,可以是“<”,“BETWEEN AND”,以及“LIKE”等,总之不是“=”号;
例子:
SELECT e.ename,e.job,e.sal,s.grade
FROM emp e,salgrade s
WHERE e.sal BETWEEN s.losal AND s.hisal;
外链接:
左外连接等同于在“=”右边加“+”,将“=”右边表中未匹配的记录也查找出来;
右外连接等同于在“=”左边加“+”,将“=”左边表中未匹配的记录也查找出来;
外链接只能出现在表达式的一边;
包含外链接的条件不允许(使用in操作符,使用Or操作符连接到另外一个条件)
内连接:inner join
内连接:查询出匹配的记录,未匹配的记录无法查询出;
例子:
SELECT e.last_name,e.id,c.name
FROM s_custtomer c inner join s_emp e
ON e.id=c.sales_rep_id
ORDER BY e.id;
全连接:full outer join
全连接:查询俩侧表所有记录包括未匹配的记录
例子:
SELECT e.last_name ,e.id,c.name
FROM s_emp e full outer join s_customer c
ON e.id=c.sales_rep_id
ORDER BY e.id;
自连接:
例子:
SELECT worker.last_name||’works for’||manager.last_name
FROM s_emp worker,s_emp manager
WHERE worker.manager_id=manager.id;
例子:从s_emp表中找出所有员工信息(包括未分配进部门的员工);
SELECT emp.id,emp.last_name,emp.manager_id,mgr.id
FROM s_emp emp, s_emp mgr
WHERE emp.manager_id=mgr.id(+);
集合运算符:
Union
Union在进行表连接后会筛选掉重复的记录,所以在表连接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果;
Select * from 表1 union select *from 表2;
Union all
Union all 将俩个结果合并后就返回且不进行排序,这样,如果返回的俩个结果集中有重复的数据,那么返回的结果集就会包含重复的数据;
Minus(减)
第一个结果集减去第二个结果集中的记录(在第一个结果集也存在的公共记录);
Select * from A
minus
select * from B;
相关文章推荐
- Android面试整理之SQLite数据库——sql语句和常用函数(二)
- sql常用语句整理(包括增删改查)
- MySQL的一些常用的SQL语句整理
- SQL常用语句整理
- MyBatis常用SQL语句整理笔记
- QSQLITE使用整理,sql常用语句
- SQL Server常用SQL语句整理
- 『管理调优』Oracle维护常用SQL语句整理一
- Oracle常用sql语句整理
- SQL常用语句整理
- discuz6.0常用sql语句整理
- 常用SQL语句自整理(不定时补全)
- 工作中常用的sql语句以及知识整理
- 『管理调优』Oracle维护常用SQL语句整理四
- 常用SQL语句整理中,欢迎大家补充....
- SQL常用语句整理
- SQL常用语句,子查询整理
- Oracle常用sql语句整理
- EBS系统管理常用SQL语句整理汇总(参考网上资料&其他人博客)
- 常用SQL语句整理(一)