SQL的基础应用

SQL(structured query lanauage)
作为数据库的一种结构化查询语言,分为DDL(数据定义语言),DML(数据管理语言)和DCL(数据库控制语言)三部分
其中DML分为DQL(数据查询语言)和DML
表是其常用的查询的类型

查询关键字
select
SELECT * FROM 表名; 查询某个表中所有的记录的所有字段信息 SELECT 列名 FROM 表名; 查询某个表中所有的记录的指定字段信息

用select查询列的种类(eg.加载使用SCOTT表)

  1. 部分列 select ename from emp; 查询雇员中的雇员名字
  2. 所有列 select * from dept; 查询部门表中的所有数据
  3. 去除重复 select distinct deptno from emp; 加入distinct进行去重
  4. 别名 select ename “雇员名字” from emp; 改ename的名称
  5. 字符串 select ‘a’ Afrom emp; 重新再emp创建一列A标题的a列
  6. 伪列 构建虚拟的列,如上
  7. 虚表 select 1+1 from dual; 用于计算
  8. null select 1+null from dual;遇到数字参与运算的结果为 null,遇到字符串为空串

查询行
1.比较条件 =,>,<,>=,<=,!=,<>放于where后
eg.select * from emp where deptno=30;
2.且或非 and,or,not
eg.select * from emp where sal>800 and sal<2000;
3.null 空,无
eg.select * from emp where comm is( not )null;
4.集合操作
Union(并集,不包括重复行同时进行默认规则的排序),UnionAll(全集,包括重复行,不进行排序 ),Intersect(交集,不包括重复行,同时进行默认规 则的排序),Minus(差集,不包括重复行,同时进行默认规则的排序)
eg.select ename from emp where sal>800
union
select ename from emp where deptno=30;(类似and和between)
5.like模糊查询(使用%,_进行操作)
eg.select * from emp where ename like ‘%A%’;姓名中含有A的员工信息
select * from emp where ename like ‘_A%’; 姓名第二个字符为A的员工名字
5.in和exist
in相当于使用or的多个等值,定值集合 ,如果存在 子查询,确保 类型相同、字 段数为1,如果记录多,效率不高,用于 一些 少量定值判断上:
eg.select * from emp where sal in (800,2000);查询员工表中薪资为800和2000的员工信息

exists条件为true,存在记录则返回结果,后续不再继续 比较查询,与查询的字 段无关,与记录有关

排序
使用ORDER BY排序,排序不是真实改变存储结构的顺序,而是获取的集合的 顺序。使用asc(顺序,默认不写)和desc(倒叙)
select * from emp order by sal desc;对员工表按照薪资高低进行倒叙排序
select * from emp order by sal (asc);对员工表按照薪资进行顺序排序,asc可不写

–笛卡尔积
select * from dept,emp;

–等值连接 如果使用多个表相同的字段,注意指明字段的出处 ,等值连接的时候两个表中的字段类型必须相同,字段名可以不同

–外连接 主表:所有的数据都能显示,在连接条件上在主表对面的表上添加(+)
–左外连接 观察主表在from emp,dept在逗号的左边就是左外连接
–右外连接 观察主表在from emp,dept在逗号的左边就是右外连接
–所有部门及其员工信息
select * from emp,dept where dept.deptno=emp.deptno(+);

–rowid伪列,每一行记录的标识,在行记录插入表时就确定的,相当于对象的地址,不是真实的地址

–rownum 伪列 结果集的序号,从1开始
–rownum和排序顺序:
如果按照主键进行排序先排序后确定rownum
如果按照非主键字段排序,先确定rownum再排序

–真分页:每次真实去数据库中查询一条数据
–假分页:每次查出一批数据,按需求展示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值