2-SQL基础.

1.SQL语言的构成.

结构化查询语言包含以下6个部分:

  1. 数据查询语言(DQL):也称为"数据检索语句"。常用关键字: select,where,order by,group by 和 having。

  2. 数据操作语言(DML):该语句包括动词 insert、update 和 delete。它们分别用于添加、修改和删除。

  3. 事务控制语言(TCL):该语句能确保被 DML 语句影响的表的所有行及时得以更新。包括 commit提交)命令、save point(保存点)命令、rollback(回滚)命令。

  4. 数据控制语言(DCL):它的语句通过 grant 或 revoke 实现权限控制,确定单个用户和用户组对数据库对象的访问。

  5. 数据定义语言(DDL):其语句包括动词 cteate,alert 和 drop。在数据库中创建新表或修改、删除表(create table 或 drop table)。

  6. 指针控制语言(CCL):它的语句,像 declare cursor,fetch info 和 update where 用于对一个或多个表单独行的操作。

2.Oracle中支持的数据类型.

2.1字符数据类型

  • char固变,长度范围:1-2000字节;
  • varchar2:可变,长度范围:1-4000字节;
  • ong可变:可变,长度范围:2GB;

固变:就是中文在记事本中占用2个字节如果该记事本里面有两个中文字母则是4字节,char类型的话它保存的字节数还是你设置的那个字节数是固定不变的

可变:就是中文在记事本中占用2个字节如果该记事本里面有两个中文字母则是4字节,varchar2加入你设置了20字节则它保存下来的字节数是文本中保存的字节数是可以根据实际数据进行改变的(切记不能大于设置的字节个数

2.2数值数据类型

  1. number:整型和非整型都是number,使用number时可指定number的精确度,最高精确到38位。

  2. 整型表示:sid number(5);//位数

  3. 非整型表示:sid number(5,3);5代表整数位和小数位的总长度是5,3表示小数位的最大长度是3,整数位的最大长度则是:5-3=2。 99.999

2.3日期数据类型

  1. date:它可以精确到秒,比如:1小时1分1秒。

  2. imestamp:可以把秒值精确到小数点后6位,比如:1小时1分1.111111秒。

3.Oracle中支持的SQL操作符

3.1算术操作符

  1. 算术操作符用于执行数值计算。

  2. 可以在SQL语句中使用算术表达式,算术表达式由数值数据类型的列名、具体的数值和连接它们的算术操作符组成;

  3. 算术操作符包括加(+)、减(-)、乘(*)、除(/)。

3.2比较操作符

  1. 比较操作符用于比较两个表达式的值。

  2. 比较操作符包括 =、!=、<、>、<=、>=、between…and、in、not in、like 和 is null等。

  3. is null 的使用:
    作用:is null 使用来判断某列是否为空

  4. nvl() 函数的使用:
    作用:判断某列的数据是否为空,如果为空,则赋指定的值

3.3逻辑操作符

逻辑操作符包括与(AND)、或(OR)和非(NOT)

3.4集合操作符

  1. 集合操作符将两个查询的结果组合成一个结果。
  2. 集合操作符有:union、union all;
  3. union:如果要组合的查询结果相同,则只会显示一个;
  4. union all:显示所有要组成查询结果

3.5连接操作符 - ||

连接操作符用于将多个字符串或数据值合并成一个字符串

4.伪列

4.1伪列概述

伪列:顾名思义,伪装起来的列,隐藏起来的列。隐式存在,可以显式调用。

4.2伪列-rowid

	oracle数据库的表中的每一行数据都有一个唯一的标识符,或者称为rowid,在oracle内部通常就是使用它来访问数据的。
	
	rowid需要 10个字节的存储空间,并用18个字符来显示。该值表明了该行数据在oracle数据库中的具体物理位置。
	
	显示伪列rowid:select a.rowid,a.* from emp a;

4.3伪列-rownum

		在Oracle里面执行 insert 操作的时候,oracle会按照 insert 的先后顺序,将 rownum 分配给每一行数据,且是固定不变的。
		
	oracle里面的伪列 rownum 和 sqlserver里面的标识列有点相似。
		
	伪列 rownum只能作用于小于号和等于号以及小于等于号,不能作用于大于号。
		
	显示伪列rownum:select rownum,b.* from emp b;

5.分页

	在Oracle里面使用伪列 rownum 实现分页的效果。

6. 伪表

	伪表:顾名思义。伪装的表。隐式存在,可以显式调用。
	
	Oracle中的伪表是:dual;
	
	因为在Oracle里面 select 后面必须接 from 关键字,当 select和from
	单独存在的时候会报语法错误,伪表可以解决这个问题。

7.约束

--约束:主键、检查、唯一、非空、默认值、外键。
create table tb_g2103(
sid number primary key,--主键约束
sname varchar2(10) unique,--唯一约束
sex varchar2(10) check(sex='男' or sex='女'),--检查约束
age number(2) check(age>=18 and age<=100) not null,--非空约束
saddress varchar2(10) default '长沙'--默认值约束)

案例代码


--1、查询出两个结果集'a'以及'b',分别进行列合并以及行合并

--1.1列合并
  select 'a'||'b' from dual
  
--1.2行合并
  select 'a' from dual
  
  union all
  select 'b' from dual;
  
--2、取前几条数据
     select a.*,rownum from emp a where rownum<4
     
--3、先根据部门编号升序,再根据薪水降序
     select * from emp order by deptno asc,sal desc;
     
--4、查询出雇员表(emp)中comm为null的记录
     select * from emp where comm is null;
     
--5、查询出雇员表(emp)中员工的姓名,将名字中的'A'换为'1','B'换为'2'
select repalce(b,'B',2)from(
select replace(enam,'A',1) b from emp
)

--6、查询出每个部门的平均薪水,并显示出部门详细信息
select deptno,avg(sal) from emp group by deptno;

--7、查询出部门人员中薪水大于2000的人在2个以上的部门 
     select deptno,count(*) from emp where sal>2000
     group by deptno
     having count(*)>=2
     
--8、求出每个部门中薪水最高的员工
     select deptno,max(sal) from emp group by deptno
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值