05_基本SQL SELECT语句
- 一、SQL语言概述
- 二、SQL分类
- 1.DML
- 2.DDL
- 3.DCL
- 4.SQL语句书写规范
- (了解)课堂表的结构
- 三、基本 SELECT 语句
- 1.选择全部列
- 2.查询特定的列
- 3.算术运算符
- 4.操作符优先级
- 5.定义空值
- 6.列的别名
- 7.连接符
- 8.字符串
- 9.重复行
- 10.统计
- 四、SQL 和 SQL*Plus
- 1.SQL 语句与 SQL*Plus 命令
- 2.SQL*Plus
- 3.显示表结构
- 总 结
Oracle的要求:
程序员 目标不是DBA
学习的核心:通过SQL去操作数据
Oracle的高级应用 :PLSQL
Oracle的操作的图形化界面客户端
PLSQL Developer
navcat链接oracle的配置
PLSQL的使用:
切换用户:
scott用户属于oracle所提供的默认用户 自带示例数据、
执行sql可以在sql窗口下 去执行
还可以在命令窗口去执行
一、SQL语言概述
①什么是SQL语言
结构化查询语言(Structured Query Language)(发音ˈes kjuːˈ)
SQL是最重要的关系数据库操作语言,是所有关系数据库管理系统的标准语言
许多数据库厂商在使用SQL的同时,都对SQL进行了扩展,比如ORACLE的PL/SQL语言,MS SQL-Server的T-SQL语言
SQL语言是一种非过程化语言,只需要提出”做什么”,而不需要指明“怎么做”
②SQL可以做什么
数据库数据的增删改查操作(CRUD)
数据库对象的创建,修改和删除操作
用户权限/角色的授予和取消
事务控制
二、SQL分类
SQL语句分为以下三种类型:
DML: Data Manipulation Language 数据操纵语言
DDL: Data Definition Language 数据定义语言
DCL: Data Control Language 数据控制语言
1.DML
DML用于查询与修改数据记录,包括如下SQL语句:
INSERT:添加数据到数据库中
UPDATE:修改数据库中的数据
DELETE:删除数据库中的数据
*SELECT:选择(查询)数据
(SELECT是SQL语言的基础,最为重要。)
2.DDL
DDL用于定义数据库的结构,比如创建、修改或删除数据库对象,包括如下SQL语句:
*CREATE TABLE:创建数据库表
*ALTER TABLE:更改表结构、添加、删除、修改列长度
*DROP TABLE:删除表
CREATE INDEX:在表上建立索引
DROP INDEX:删除索引
3.DCL
DCL用来控制数据库的访问,包括如下SQL语句:
GRANT:授予访问权限
REVOKE:撤销访问权限
*COMMIT:提交事务处理
*ROLLBACK:事务处理回退
*SAVEPOINT:设置保存点
LOCK:对数据库的特定部分进行锁定
4.SQL语句书写规范
1.使用大小写规范提高词义识别能力
a.在名称中仅使用字母,数字和下划线
b.列名,参数和变量等标量小写
c.模式对象名首字母大写
模式对象包括表,视图和存储过程等,在创建这些名称时,应当将首字母大写,表示为专有名称。
d.保留关键字大写 :SELECT、 UPDAGTE 、DELETE、 INSERT... INTO..、 FROM 、 WHERE 、ORDER BY、 GROUP BY、HAVING、 BETWEEN ... AND、 OR、 LIKE
2.使用空格提供更好的语言标记区分
a.等号两边使用空格
在书写赋值语句时,应当在等号两边使用空格分隔,如set @i = 1 比 set @i=1更容易阅读
b.逗号后面使用空格
3.使用缩进提高语句的逻辑层次表达能力
4. 使用垂直空白道提高关键字与参数的区分能力
5.使用分组进行语句的段落划分
存在多行SQL的情况下,相关语句之间可以直接换行书写,而对于两个步骤之间的语句应当间隔一个空行,需要的话 ,也可以加入一些适当的注释语句.:
注释:–
6.注释
单行注释: --
多行注释:/**/
注:MySQL注释:#
(了解)课堂表的结构
hr用户的表:
Scott用户的表:
三、基本 SELECT 语句
SELECT *|{[DISTINCT] column|expression [alias],...}FROM
•SELECT 标识 选择哪些列。
•FROM 标识从哪个表中选择。
1.选择全部列
-- 这是一条查询语句
/*
SELECT 表示这是一条查询语句
*表示查询所有的列 是一个通配符
FROM 表示数据来源 通常是表明(也有可能是一条查询语句)
Employees 数据源
每一条sql语句结束之后 必须加上分号
*/
SELECT * FROM Employees;
2.查询特定的列
--查询 特定的列 在select 之后 列出要查询的列的列明 列明之间使用逗号分隔
select first_name,
last_name ,
salary
from employees order by salary;
注 意:
①SQL 语言大小写不敏感。
②SQL 可以写在一行或者多行
③关键字不能被缩写也不能分行
④各子句一般要分行写。
⑤使用缩进提高语句的可读性。
3.算术运算符
数字和日期使用的算术运算符
使用数学运算符:
-- 使用算数运算符 对所有员工的工资 增加300
select first_name,last_name ,salary,salary+300 from employees ;
-- 计算每一个员工的年薪
select first_name,last_name ,salary,salary* 12 from employees;
4.操作符优先级
乘除的优先级高于加减。
同一优先级运算符从左向右执行。
括号内的运算先执行。
使用括号
-- 为每一个员工月薪增加100 之后计算每一个员工的年薪
select first_name,last_name ,salary,(salary+100)* 12 from employees;
5.定义空值
①空值是无效的,未指定的,未知的或不可预知的值
②空值不是空格或者0。
在进行四则运算时 对于空值的处理 null
-- 计算每一个员工的年薪 包括奖金
select first_name,last_name ,salary,commission_pct,(salary + salary * commission_pct)*12 from employees;
在一个运算中 如果有null值参与 则结果为null
-- 计算每一个员工的年薪 包括奖金
-- 当员工commission_pct为null的时候 则得到的计算结果也为null
--在一个运算中 如果有null值参与 则结果为null
--nvl函数 是进行空值处理 NVL(commission_pct,0) 表示对于该字段中的null在运算中使用0来替代
select first_name,last _name ,salary,commission_pct,(salary + salary * NVL(commission_pct,0))*12 from employees;
6.列的别名
重命名一个列。
便于计算。
紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
第一种方式 在需要命名别名的字段后 使用as 别名
select first_name as fname,last_name as lname,salary,commission_pct,(salary + salary * NVL(commission_pct,0))*12 as yearSalary from employees;
第二种方式 省略as
select first_name fname,last_name lname,salary,commission_pct,(salary + salary * NVL(commission_pct,0))*12 yearSalary from employees;
7.连接符
把列与列,列与字符连接在一起。
用 ‘||’表示。
可以用来‘合成’列。
-- 连接符的使用
-- 将frist_name 和last_name 拼接起来 形成fullname
select first_name ,last_name,first_name||' '||last_name fullname from employees;
在oracle中 没有双引号 字符串的表示采用是单引号
8.字符串
字符串可以是 SELECT 列表中的一个字符,数字,日期。
日期和字符只能在单引号中出现。
每当返回一行时,字符串被输出一次。
-- 将frist_name 和last_name 拼接起来 形成fullname
select first_name ,last_name,first_name||' '||last_name||'这是全名' fullname from employees;
9.重复行
在 SELECT 子句中使用关键字 ‘DISTINCT’ 删除重复行。(distinct)
--在employees表中来查询所有的部门编号 不允许重复出现
select distinct department_id from employees;
10.统计
-- 统计
--查询表中的记录数
-- 在统计的时候 如果选择根据某一个字段来统计 则如果该字段包含null值 则null不会被统计
--在统计的选择中 一般可以使用* 但是* 表示根据所有的字段进行统计 效率相对较低
--所以根据某一个字段统计 是一种比较好的选择 但是不能选择包含null值的列
--一般选择主键列来作为统计列
select count(*) from employees;
select count(employee_id) from employees;
select count(commission_pct) from employees;
四、SQL 和 SQL*Plus
1.SQL 语句与 SQL*Plus 命令
SQL
一种语言
ANSI 标准
关键字不能缩写
使用语句控制数据库中的表的定义信息和表中的数据
SQL*Plus
一种环境
Oracle 的特性之一
关键字可以缩写
命令不能改变数据库中的数据的值
集中运行
2.SQL*Plus
使用SQL*Plus可以:
描述表结构。
编辑 SQL 语句。
执行 SQL语句。
将 SQL 保存在文件中并将SQL语句执行结果保存在文件中。
在保存的文件中执行语句。
将文本文件装入 SQL*Plus编辑窗口。
3.显示表结构
使用 DESCRIBE 命令,表示表结构
DESC[RIBE] tablename
DESCRIBE employees
在sql窗口中 只能执行sql语句 不能执行oracle的命令
在命令窗口:
切换用户:
SQL> conn scott/tiger;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as scott@ORCL
显示当前登录用户:
在cmd窗口中来启动sql/plus:
总 结
通过本课,您应该可以完成:
①书写SELECT语句: SELECT … FROM…
返回表中的全部数据。
返回表中指定列的数据。
使用别名。
②使用 SQLPlus 环境,书写,保存和执行 SQL 语句和 SQLPlus 命令。
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;