从0到1学数据库:简单查询语句

点击上方“罗晓胜”,马上关注,您的支持对我帮助很大

上期文章

 

 

 

/   前言   /

 

有了数据库和数据,下面我们肯定是要查询数据库,编写第一条查询语句。

 

/   正文   /

 

本章要点

• SQL语言简介

• 基本查询语句

• SQL语句的书写规则

• 算术表达式的使用

• 空值(NULL)的应用

• 列别名的使用

• 连接运算符的使用

• DISTINCT关键字的用法

• SQLPLUS/iSQLPLUS命令的介绍

案例

• EMPLOYEES(员工信息表)

– 主要有employee_id(员工编号)、last_name(姓)、 job_id(职位)、salary(工资)等。

• JOBS(职位信息表)

– 主要有job_id(职位)、job_title(职位全称)等。

• JOB_GRADES(工资级别表)

– 主要有grade_level(工资级别)、lowest_salary(最低 工资)、highest_salary(最高工资)等。

• departments(部门信息表)

– 主要包括department_id(部门编号)、 department_name(部门名称)、location_id(位置编号)等。

• locations(位置信息表)

– 主要包括location_id(位置编号)、street_adress(地址)、 city(城市)等。

SQL语言简介

• SQL称结构化查询语言 (Structured Query Language)

• SQL 是操作和检索关系型数据库的标准语言。已在Oracle、 Mysql等数据库管理系统上得到了广泛应用。

• 使用SQL语句,程序员和数据库管理员可以完成如下的任务:

– 改变数据库的结构

– 更改系统的安全设置

– 增加用户对数据库或表的许可权限

– 在数据库中检索需要的信息

– 对数据库的信息进行更新

SQL语句分类

– DQL语句(数据查询语言) Select

– DML语句(数据操作语言) Insert / Update / Delete / Merge

– DDL语句(数据定义语言) Create / Alter / Drop / Truncate

– DCL语句(数据控制语言) Grant / Revoke

– TCL语句事务控制语句 Commit / Rollback / Savepoint

基本SELECT语句

• 基本查询语句语法:

SELECT *|{[DISTINCT] 列名|表达式 [别名] [,...]} FROM 表名;

– “*”号的使用

– 在查询语句中查找特定的列

例:

• 查询公司所有部门的信息。

SELECT * FROM departments;

• 查询公司所有部门的信息。

SELECT department_id, department_name,manager_id,location_id FROM departments;

试比较哪条语句执行效率更高?

在查询语句中查找特定的列

SELECT department_name, location_id FROM departments;

SQL语句的书写规则

• SQL语句相关概念:

– 关键字(Keyword) :SQL语言保留的字符串,在自己的 语法使用。例如,SELECT 和FROM 是关键字。

– 语句(statement):一条完整的SQL命令。例如, SELECT * FROM departments;是一条语句。

– 子句(clause):部分的SQL语句,通常是由关键字加上 其他语法元素构成。例如,SELECT *是子句,FROM departments也是子句。

• 不区分大小写。也就是说SELECT,select,Select,执行时效 果是一样的。

• 可以单行来书写,也可以书写多行,建议分多行书写,增强代码 可读性。通常以子句分行。

• 关键字不可以缩写、分开以及跨行书写。如SELECT不可以写 成SEL或SELE CT等形式。

• 每条语句需要以分号(;)结尾。

• 关键字大写,其他语法元素(如列名、表名等)小写。

• 代码适当缩进。

算术表达式的使用

• 算术运算符:+,-,*,/

• 算术表达式中优先级规则:

– 先算乘除,后算加减。

– 同级操作符由左到右依次计算。

– 括号中的运算优先于其他运算符。

• 对NUMBER型数据可以使用算数操作符创建表达式(+ - * /)

• 对DATE型数据可以使用部分算数操作符创建表达式 (+ -)

优先级示例:

SELECT employee_id, last_name, salary, salary+400 FROM employees;

SELECT employee_id, last_name, salary, 400+salary*12 FROM employees;

SELECT employee_id, last_name, salary, (400+salary)*12 FROM employees;

空值(NULL)的应用

• NULL:表示未定义的,未知的。空值不等于零或空格。任意 类型都可以支持空值。

• 空值(NULL)在算术表达式中的使用

– 包括空值的任何算术表达式都等于空

– 包括空值的连接表达式(||)等于与空字符串连接,也就是原 来的字符串

SELECT last_name, salary, (400+salary)*12+(400+salary) 12commission_pct FROM employees;

列标题的显示规则

• Sql*plus的默认显示

– Date和character 型数据左对齐

– Numeric 型数据右对齐

– 列标题默认显示为大写

• iSql*plus的默认显示

– 列标题缺省居中对齐

– 列标题默认显示为大写

使用列别名的方法

• 列别名基本书写方法有两种方式:

– 第一种方式:列名 列别名

– 第二种方式:列名 AS 列别名

• 以下三种情况,列别名两侧需要添加双引号(""):

– 列别名中包含有空格

– 列别名中要求区分大小写

– 列别名中包含有特殊字符

示例:SELECT employee_id id, last_name as employee_name, salary "Salary", (400+salary)*12 "Annual Salary" FROM employees;

连接运算符的使用

• 采用双竖线(||)来做连接运算符 ,更清楚地表达实际意思。

SELECT first_name||' '||last_name||'''s phone number is '||phone_number "employee Phone number" FROM employees;

DISTINCT关键字的用法

• DISTINCT取消重复行

SELECT DISTINCT department_id FROM employees;

SELECT DISTINCT department_id, job_id FROM employees;

DESC[RIBE]命令和SET命令

• DESC[RIBE]命令:显示表结构

– DESC employees

• SET命令 :设置环境变量

– 语法:SET 系统变量 值

– SET HEADING {ON|OFF} :控制是否显示列标题。默认是 ON

• 设置列的显示长度:

– 对于字符字段,使用col HIREDATE format a100;

– 对于数字字段,使用col DEPTNO format 999; 表示显示3位 数字

SET HEADING OFF col EMAIL format a20 select EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL from employees; SET HEADING ON

 

/   总结   /

 

本文主要讲了编写一条简单的查询语句是什么样的流程,下面我们会介绍更复杂的查询,道理是通用的,但用法却大不相同。

 

往期推荐:

如何入门做软件开发

为什么我不推荐入行程序员

做全栈开发很难吗

关注我的公众号,学习技术或投稿

长按上图,识别图中二维码即可关注

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值