SQL 语言基础详解2

DQL 语言
1 编写基本 SELECT 语句
SELECT 语句的作用是从数据库中返回信息。

1.1SELECT 语句作用

1.1.1列选择(投影操作)
能够使用 SELECT 语句的列选择功能选择表中的列,这些列是我们想要用查询返回 的。当我们查询时,可在选择查询的表中指定的列。

1.1.2行选择(选择操作)
能够使用 SELECT 语句的行选择功能选择表中的行,这些行是我们想要用查询返回 的。能够使用不同的标准限制所看见的行。

1.1.3连接(多表操作)
能够使用 SELECT 语句的连接功能来集合数据,这些数据虽然被存储在不同的表中, 但是我们可以通过连接查询到该数据。

1.2SELECT 语句基本结构
SELECT*|{[DISTINCT]column|expression[alias],…}FROMtable; SELECT 确定哪些列。 FROM 确定哪张表。

1.2.1基本 SELECT 语句
在最简单的形式中,SELECT 语句必须包含下面的内容: 一个 SELECT 子句,指定被显示的列 一个 FROM 子句,指定表,该表包含 SELECT 子句中的字段列表

1.2.2在语法中

SELECT 是一个或多个字段的列表 * 选择所有的列 DISTINCT 关键字表示禁止重复 column|expression 选择指定的字段或表达式 alias 给所选择的列不同的标题 FROMtable 指定包含列的表

1.3选择操作(投影操作)
1.3.1选择所有列
SELECT*FROMtable;

1.3.2选择指定的列
SELECTcolumnName,columnName FROMtable;

1.4SQL 语句语法要求

•SQL 语句对大小写不敏感 •SQL 语句可以写成一行或多行 • 关键字不能简写或分开折行 • 子句通常放在不同的行 • 缩进用于增强可读性

1.5SELECT 语句中的算术表达式
用算术运算符创建数字和日期数据的表达式。(±*/) 注意:如果对日期进行计算,我们只能对 DATE 和 TIMESTAMP 数据类型使用加和 减操作。

1.5.1运算符的优先级
• 乘法和除法比加法和减法的优先级高 • 相同优先级的运算符从左到右计算 • 圆括号用于强制优先计算,并且使语句更清晰

1.5.2示例

计算 employees 表中的员工全年薪水加 100 以后的薪水是多少? select employee_id , first_name ,salary *12 +100 from employees;

计算 employees 表中的员工薪水加 100 以后的全年薪水是多少? select employee_id,first_name ,(salary+100)*12 from employees;

1.6定义空值
空值是一个未分配的、未知的,或不适用的值 空值不是 0,也不是空格

1.6.1空值
如果一行中的某个列缺少数据值,该值被置为空值。空值和 0 或者空格不相同。0 是 一个数字,而空格是一个字符。任何数据类型的列都可以包含空值。可是,某些约束,如, NOTNULL 和 PRIMARYKEY,防止在列中使用空。

1.6.2算术表达式中的空值

包含空值的算术表达式计算结果为空。

1.6.3示例

select last_name ,12salarycommission_pct from employees;

1.7定义列别名
列别名: • 改变列标题的名字 • 紧跟在列名后面 – 在列名和别名之间可以有选项 AS 关键字 • 如果别名中包含有空格、或者特殊字符、或者大小写敏感,要求用双引号

在 SELECT 列表中的列名后面指定别名,列名和别名之间用空格分开。默认情况下, 别名标题用大写字母显示。如果别名中包含空格或者特殊字符(例如 # 或 &),或者 大小写敏感,将别名放在双引号 (“”) 中。

1.7.1示例

查询 employees 表中的 last_name,commission_pct 并将佣金列名改为 comm。 方式一:select last_name ,commission_pct as comm from employees; 方式二:select last_name name ,commission_pct comm from employees;

计算所有员工的全年薪水,将列名修改”AnnualSalary”。 方 式 一:select last_name name ,12salary as “Annual Salary” from employees; 方式二: selectlast_namename,12salary"AnnualSalary"fromemployees;

1.8连字运算符
连字运算符: • 连接列或者字符串到其它的列 • 用两个竖线表示 (||) • 构造一个字符表达式的合成列

我们能够用连字运算符 (||) ,进行列与列之间、列与算术表达式之间或者列与常数值 之间的连接,来创建一个字符表达式。连字运算符两边的列被合并成一个单个的输出列。

1.8.1示例

将 employees 表中的 LAST_NAME 和 JOB_ID 合并到一个单个的输出列中,并且指定 列别名 Employees。 select last_name || job_id as “Employee” from employees;

1.9文字字符串
文字字符串是包含在 SELECT 列表中的一个字符串,一个数字或者一个日期 • 日期和字符的文字字符串值必须用单引号括起来 • 每个文字字符串在每行输出一次

文字字符串不是列名或别名。对每个返回行打印一次。任意格式文本的文字字符串能够 被包含在查询结果中,并且作为 SELECT 列表中的列处理。日期和字符文字 必须 放在单 但引号 (’’) 中;数字不需要。

1.9.1示例

显示所有雇员的名字和工作代码,使用 isa 链接查询结果。列标题用 Employee Details。 select last_name || ’ is a ’ || job_id as “Employee Details” from employees;

1.10去除重复行
在 SELECT 语句中用 DISTINCT 关键字除去相同的行。为了在结果中除去相同的行, 在 SELECT 子句中的 SELECT 关键字后面紧跟 DISTINCT 关键字。

1.10.1 示例

在 Employees 表中查询 department_id 并去除重复数据。 select distinct department_id from employees;

1.11基本 select 语句小节练习
1.11.1 在下面的语句中有 4 个编码错误,你能找出他们吗?

SELECTemployee_id,last_name salx12ANNUALSALARY FROMemployees;

答案:1 在 employees 表中没有 sal 列,应该是 salary。 2 乘法运算符是“*”而不是“x”。 3 如果别名中包含空格,则需要在别名两侧添加双引号。 4 在 last_name 后少一个逗号。

1.11.2 显示 DEPARTMENTS 表的结构。选择表中的所有数

据。

答案:显示表结构: desc departments; 查询所有数据:select * from departments;

1.11.3 创建一个查询,显示每个雇员的 last name, job code, hiredate, 和 employee 号,employee 号显示在第一列, 给 HIRE_DATE 列指定一个别名 STARTDATE 。

答案:selectemployee_id,last_name,job_id,hire_date startdatefrom employees;

1.11.4 创建一个查询从 EMPLOYEES 表中显示唯一的工作

代码。

答案:select distinct job_id from employees;

1.11.5 显示 last_name,用 job_ID 连接,用逗号和空格分开, 用 EmployeeandTitle 作为列名。

答案:select last_name || ', ’ ||job_id from employees;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值