首页 > 学院 > 开发设计 > 正文

常用SQL语句的整理

2019-11-08 20:31:59
字体:
来源:转载
供稿:网友

普通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;


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表