sql第1天 简单查询

简单查询和别名

    • 简单查询
    • sql中的数学运算
    • 拼接符:||
    • 起别名——列别名
    • 起别名——表别名

简单查询

结构(语法):

SELECT	COLUMN1,COLUMN2...	FROM	TABLE_NAME ;

说明:数据是以表的方式存储的,一行描述一个整体的信息
每一列都有属于自己的定义,所以每一列都有一个属于自己的列名

说明:SELECT指明所要查询的东西
FROM指明从哪里查询,FROM后面跟的也叫数据源

应用:

SELECT  ENAME,EMPNO,JOB  FROM  EMP;


sql第1天 简单查询_第1张图片

说明
必须以英文分号结尾
sql中逗号不区别中英文,但是尽量使用英文逗号
逗号前后的含义是一样的,他们属于同一属性

说明
EMP、 DEPT 、SALGRADE 表是PL/SQL Developer中用于教学的几个表,在未来的几天学习中需熟知

DUAL表是任何用户都可读取,只有一条数据”X”,常用于没有明确指出目标表(用作运算、验算)的语句中使用

*:通配符:全部的

比如

SELECT * FROM EMP;

思考
为什么运行

SELECT 123 FROM EMP;


在这里插入图片描述

有14条数据?

因为表中一共就14行
查询常量就会返回 值为本身、列名为本身(如上图)

SELECT ABC FROM EMP;

——报错——
因为ABC标识符无效
需加单引号来声明其为字符串

SELECT 'ABC' FROM EMP;

特别地,因为ENAME作为列名已在表中定义,定义之后就不需要加单引号
所以我们可以直接

SELECT ENAME FROM EMP;


在这里插入图片描述

sql中的数学运算

-+*/
TRUNC()截位
ROUND()四舍五入
·
·
·

SELECT 10+5  FROM DUAL;


在这里插入图片描述
注意:什么时候可以用数学运算?
如果执行下列语句:

SELECT SAL,SAL+100 FROM EMP;

——显示每个人的工资和加100之后的每个人的工资

SELECT ENAME,ENAME+100 FROM EMP;

——报错,无效数字,为什么呢?因为ENAME列的数据类型是字符串,不能加减数字

SELECT ENAME,ENAME+JOB FROM EMP;

——报错,无效数字,为什么呢?因为他们同属于字符串,不能互相加减

拼接符:||

语法:

SELECT VALUE1||VALUE2||VALUE3 FROM TABLE_NAME;

用途:将不同的字符拼接到一起

1.常量+常量

SELECT 123||’ABC’ FROM DUAL;

→123ABC

SELECT ‘SMITH’||‘的名字第一个字母为’||‘A’ FROM DUAL;

→SMITH的名字第一个字母为A

SELECT ‘SMITH的名字第一个字母为A’ FROM DUAL;

→SMITH的名字第一个字母为A

2.常量+字段名
将EMP表中的数据显示为:’XXX的工资为XXX,部门编号为XXX’

SELECT ENAME||‘的工资为’||SAL||,部门编号为’||DEPTNO FROM EMP;

3.字段名+列名

4.字符串在这里视为常量,字符串的标志用’标记

起别名——列别名

语法:

SELECT COLUMN_1 AS 别名,COLUMN_2 AS 别名 FROM TABLE_NAME;

或者

SELECT COLUMN_1  别名,COLUMN_2  别名 FROM TABLE_NAME;

应用:
给EMPNO赋值1001

SECELT 1001 AS EMPNO FROM DUAL;

注意:
1.能不能以关键字作为别名?
有时能,有时不能

SELECT EMPNO,EMPNO AS NAME FROM EMP;

——可以的

SELECT EMPNO,EMPNO AS NUMBER FROM EMP;

——不可以,报错

SELECT EMPNO,EMPNO AS “NUMBER” FROM EMP;

——可以的

2.能不能包含数字或者特殊符号?
有时能,为了减少出错,我们每次都加双引号

SELECT EMPNO AS 1 FROM EMP;

——不可以

SELECT EMPNO AS E1A FROM  EMP;

——可以

SELECT EMPNO AS E_A FROM  EMP;

——可以

SELECT EMPNO AS 1EA FROM  EMP;

——不可以

SELECT EMPNO AS _EA FROM  EMP;

——不可以

SELECT EMPNO AS1EA” FROM  EMP;

——可以

SELECT EMPNO AS “_EA” FROM  EMP;

——可以

SELECT EMPNO,EMPNO E*A FROM EMP;

——不可以

SELECT EMPNO,EMPNO “E*A” FROM EMP;

——可以的

3.能不能以汉字起别名?
能。

SELECT EMPNO,EMPNO AS 员工编号 FROM EMP;

SELECT ENAME AS 员工姓名 FROM EMP;

4.别名只在当前查询语句中起效

5.双引号只用于起别名

起别名——表别名

语法:

SELECT T.COLUMN_NAME FROM TABLE_NAME T;

最规范:

SELECT TABLE_NAME.COLUMN_NAME FROM TABLE_NAME T;

思考
我们已经学习过了SELECT * FROM DEPT;这种语句
思考一下如果执行

SELECT * FROM EMP,DEPT;

会出现什么?

列数:两者相加
行数:两者各自行数相乘

sql第1天 简单查询_第2张图片·
·
·

那么如果执行以下语句,会出现什么?

SELECT EMPNO,ENAME,JOB,DEPTNO FROM EMP,DEPT;

——报错
为什么?
因为DEPTNO这一列在EMP和DEPT表中均存在,所以我们需要指明是哪一个表中的DEPTNO这一列
也即

SELECT EMPNO,ENAME,JOB,EMP.DEPTNO FROM EMP,DEPT;

表别名就是用在这个地方,因为有时候表名会很长,且需要在语句中多次声明,所以我们会用表别名去代替表名,来达到减少工作量的目的
也即

SELECT EMPNO,ENAME,JOB,E.DEPTNO FROM EMP E,DEPTNO;

注意
1.表别名的中间不需要用AS隔开,否则报错
2.便于书写,减少SQL语句的长度

你可能感兴趣的:(oracle,sql)