学习大数据DAY01 SQL基础语法

目录

员工表 emp

部门表 dept

SQL 语句书写规范

注释

简单过滤查询

select 查询语句

“*”代表所有的列

过滤查询

别名

去重

 连接符号“||”

单引号:

双引号:

dual

伪列

作业


员工表 emp

部门表 dept

SQL 语句书写规范

SQL可以写成一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进,关键字

不能被缩写也不能分行,句子以分号(;)结尾;

大小写不敏感,不区分关键字的大小写;【注意】插入到表中的数据是区分大小写的,

如“HI”、“Hi”和“hi”都不同。

单词使用半角空格或换行符隔开

常数的书写方式:

字符串、日期:用单引号括起来(''),如'Hello','yyyy-mm-dd'。

数字:直接书写,不用加单引号,如:5。

☆必须保证所有的()、单引号、双引号成对结束

☆必须使用英文状态下的半角输入方式 

注释

单行注释:--注释文字

多行注释:/* 注释文字*/

(注释是为了便于维护和管理,一般用中文对语句进行说明,用了注释符号的标注不

会对语句有任何影响)

简单过滤查询
select 查询语句

SELECT 子句用于指定需要查询的字段,可以包含表达式、函数值等

SELECT语句是SQL语言从数据库中获取信息的一个基本语句。

该语句可以实现从一个或多个数据库中的一个或多个表中查询信息,并将结果显示为另

外一个二维表的形式,称之为结果集(result set)。

select col_name1,col_name2.... from tablename;

select:搜索的关键字

from:后面跟表名

col_name:列名

tablename:表名

“*”代表所有的列

select * from emp; *使用要慎重,实际工作中数据量大的时候禁用

查询表中的指定列

select empno,ename from emp; 查询出来的列数决定于select后面跟的列

select empno,ename from emp where ename='SMITH';

--查询员工编号、员工姓名,员工的部门编号,在后面加上一列9999

select empno,ename,deptno,9999 from emp;

过滤查询

select col_name1,col_name2 ..... from tablename where (case)

where :过滤的关键字

case:加的过滤条件

别名

为列取别名

为查询显示的每个输出字段或表达式取一个别名,以增加结果集的可读性,易于理解列

的含义!相当于起个外号一样,别名的效果范围仅在该SQL语句范围内,别名并不会改

变本名

--别名

select empno as 员工编号,ename as 员工姓名,sal as 员工工资 from emp;

select empno 员工编号,ename 员工姓名,sal 员工工资 from emp;

---表起别名

select * from emp;

select * from dept;

select d.* ,rownum from dept d;

select ename,dname,dept.deptno from emp,dept where emp.deptno=dept.deptno;

select e.ename,e.deptno, d.dname from emp e,dept d where e.deptno=d.deptno;

select empno 员工编号,ename 员工姓名,job 工作,mgr 上级领导编号,hiredate 入职日期,

sal 工资,comm 提成,deptno 部门编号 from emp;

去重

关键字:distinct

如果希望一个列表没有重复值,可以利用distinct子句从结果集中除去重复的行。

格式:SELECT DISTINCT 列名称 FROM 表名;

distinct 它只能放在所有列的最前面(它的前面不能写任何列)

distinct 单列:对单列进行去重

distinct 多列:当且仅当所有列的值同时相等时,才是重复数据

select distinct deptno from emp

 连接符号“||”

1.将两个字段的字符串连接在一起

2.还可以在结果集中加入字符串

select * from emp;

select empno||ename,ename from emp;

select '员工编号是'||empno||',员工姓名是'||ename||9999 from emp;

--查询员工的姓名和工资,按这种格式显示:SMITH的工资是800块

select ename||'的工资是'||sal||'块' 工资信息 from emp ;

单引号:

在ORACLE中,单引号有两个作用:

1:字符串是由单引号引用

2:转义:单引号的使用是就近配对,即就近原则

--单引号

select 3,'haha', 'hello''' result from dual;

双引号:

1.包含特定字符或者空格或数字的列别名用双引号括起来(””),比如”a b”,”0~1000”

2.一般来说,字符串中的双引号仅仅被当作一个普通字符进行处理。

3.当出现在to_char的格式字符串中时,去掉双引号和其包含的字符后,剩下的应该是一

个合法的格式串。

select 'hello""' results from dual;

select sysdate "88" from dual;

select sysdate,'24"小时"30"分"7"秒"' results from dual;

select to_char(sysdate,'hh"小时"mi"分"ss"秒"') results from dual;

dual

dual是个虚拟表,只有一行一列,基本上oracle引入dual为的就是符合语法!

因为在oracle当中查询语句必须要有关键字 select ....from tablename; 只有这样语句才完

整,要是没有表名就无法查询,而时间,日期等不存在于任何表,这个时候就引入了

dual 虚表的概念。

select * from dual;

Select 1+2 from dual;

select sysdate from dual;

select 1 from dual where 1=0;

伪列

rownum:不是在物理上真实存在的列,它是对查询结果给了一个从一开始的排列数据,

获取到结果集之后再加上去的一个列

select * from emp;

select ename,sal,deptno,rownum,rowid from emp;

select ename,sal,deptno,rownum from emp where rownum<3;

select ename from emp where rownum>=3; ---伪列不能大于等于一个比一大的正整数

ROWNUM与ROWID不同,ROWID是插入记录时生成,ROWNUM是查询数据时生成。

ROWID标识的是行的物理地址。ROWNUM标识的是查询结果中的行的次序。

通过ROWNUM伪列可以限制查询结果集中返回的行数

作业

-

--为了方便查看而获取一份emp总表
select * from emp;
--1. 查询emp表中员工的名字和工资
select ename,sal from emp;
--2. 查询emp表中员工的编号,名字,奖金
select empno,ename,comm from emp;
--为了方便查看而获取一份dept总表
select * from dept;
--3. 查询部门编号和部门名称
select deptno from dept;
--4. 查询员工名字和入职日期(列名中文显示 名字, 入职日期)
select ename as 姓名,hiredate as 入职日期 from emp;
--5. 查询员工编号,名字,经理编号
select empno,ename,mgr from emp;
--6. 查询公司里的所有部门的部门编号(去重)
select distinct deptno from dept;
--7. 查询员工的姓名和工资,按这种格式显示:simth的工资是800块
select ename || '的工资是' || sal || '块' from emp;
--8. 使用虚拟表来查看系统日期
select sysdate from dual;
--9. 查看员工表的前五条数据
select rownum,emp.* from emp where rownum<='5';
--10. 查看员工表的rowid
select emp.*,rowid from emp;

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值