SQL语言

一:SQL是什么:叫做结构化查询语言。是一种数 据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是 数据库脚本文件的扩展名。
二:SQL作用:SQL 面向数据库执行查询 SQL 可从数据库取回数据 SQL 可在数据库中插入新的记录 SQL 可更新数据库中的数据 SQL 可从数据库删除记录 SQL 可创建新数据库 SQL 可在数据库中创建新表 SQL 可在数据库中创建存储过程 SQL 可在数据库中创建视图 SQL 可以设置表、存储过程和视图的权限。
三:SQL语言结构:
1.数据查询语言(DQL:Data Query Language):从数据库查询数据。 select…from…where…查询数据
2.数据操作语言(DML:Data Manipulation Language):增,删,改数据库中数据。
insert…插入一条数据
update…更新一条数据
delete…删除一条数据
3.事务处理语言(TCL:Transaction Control Language):更新被DML所操作的数据。
commit…事物提交
rollback…事物回滚
savepoint…设置回滚点
4.数据控制语言(DCL:Data Control Language):它的语句通过 GRANT 或 REVOKE 获得许可,确定单个用户和用户组对数据库对象的 访问。
grant…授予用户权限
revork…撤销用户权限
5.数据定义语言(DDL:Data Definition Language):定义数据库对象语言。
create…创建数据库对象
drop…删除数据库对象
alter…修改数据库对象
rename…修改数据库对象名称

四:DQL语言
select语句作用:从数据库返回信息。主要两个部分,列选择和行选择
列子:select name from user where id=1; select后的name是列信息,where后的id是行信息。(user是一个表,表有列,行组成)
SQL 语句语法要求:SQL 语句对大小写不敏感,关键字不能简写或分开折行

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

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

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

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

示例:计算所有员工的全年薪水,将列名修改”Annual Salary”。
select last_name name ,12salary as “Annual Salary” from employees;
select last_name name ,12
salary “Annual Salary” from employees;

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

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

5.文字字符串:文字字符串是包含在 SELECT 列表中的一个字符串,一个数字或者一个日期 , 日期和字符的文字字符串值必须用单引号括起来

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

6.去除重复行:在 SELECT 语句中用 DISTINCT 关键字除去相同的行。为了在结果中除去相同的行, 在 SELECT 子句中的 SELECT 关键字后面紧跟 DISTINCT 关键字。(只能出现在select后)

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

7.字符串和日期:字符串和日期的值放在单引号中 ,字符值区分大小写,日期值是格式敏感的 。日期的默认格式是 DD-MON-RR 。中文版 Oracle 与英文版 Oracle 对于日期的月份格式有区别。中文版的用 1 月 英文版 为月份的简写如:January Jan.

示例 查询员工表中名字为 King 的员工的工作编号。
select job_id from employees where last_name = ‘King’;
查询 2006 年 1 月 24 日入职的员工的姓名、部门编号以及工作 ID。
select last_name,department_id,job_id from employees where hire_date = ‘24-1 月-06’;

8.使用 BETWEEN 条件:可以用 BETWEEN 范围条件显示基于一个值范围的行

示例 查询薪水在$2,500 和$3,500(包含 2500 与 3500) 之间的那些雇员的姓名以及薪水。 select last_name,salary from employees where salary between 2500 and 3500;

9.使用 IN 条件:用 IN 条件在指定的一组值中进行选择。
示例 查询所有经理号为 100、101 或 201 的雇员的 employee numbers, last names, salary。
select employee_id,last_name,salary from employees where manager_id in(100,101,201);

10.使用 LIKE 条件:使用 LIKE 条件执行有效搜索串值的通配符搜索,% 表示零个或多个字符 _ 表示一个占位符
查询 EMPLOYEES 表中名字以一个大写字母 S 开始的雇员的名字。
select last_name from employees where last_name like ‘S%’;
3 查询员工表中工作 ID 中包含 SA_的员工姓名以及工作 ID。 select last_name,job_id from employees where job_id like ‘SA_%’ escape ‘’;

11.使用 NULL 条件:NULL 条件中包括 IS NULL 条件和 IS NOT NULL 条件。
示例 查询所有没有佣金的雇员的 last name, job ID 和 commission。
select last_name,job_id,commission_pct from employees where commission_pct is null;

12.AND:AND 要求两个条件同时为真。
示例 查询工作岗位包含字符串 MAN 并且收入大于等于$10,000 的那些雇员的编号、工作 ID、名字以及薪水。
select employee_id,job_id,last_name,salary from employees where job_id like ‘%MAN%’ and salary >= 10000;

13.or:OR 操作要求两者之一为真即可。
示例 查询任何 job ID 中包含 MAN 或者收入大于等于$10,000 的雇员编号、工作 ID、名字 以及薪水。
select employee_id,job_id,last_name,salary from employees where job_id like ‘%MAN%’ or salary >= 10000;

14.NOT:取反。NOT 运算符也可以用于另一个 SQL 运算符,例如,BETWEEN、LIKE、 IN 和 NULL。
示例 查询那些工作岗位不是 IT_PROG、ST_CLERK 或 SA_REP 的雇员的名字和工作岗 位。
select last_name,job_id from employees where job_id not in(‘IT_PROG’,‘ST_CLERK’,‘SA_REP’);

15.用 ORDER BY 子句排序 ASC: 升序排序,默认 DESC: 降序排序
升序规则 :对于数字值,小的值在前面显示—例如,1–999。
对于日期,早的日期在前面显示—例如,01-1-92 在 01-1-95 前面 。
对于字符值,依字母顺序显示—例如,A 第一,Z 最后。
对于空值,升序排序时显示在最后,降序排序时显示在最前面

select语句示例:
显示受雇日期在 2002 年 2 月 20 日 和 2007 年 5 月 1 日 之间的雇员的名字、岗位和受雇日期。按受雇日期 顺序排序查询结果。
select last_name,job_id, hire_date from employees where hire_date between ‘22-2 月-02’ and ‘01-5 月-07’ order by hire_date;

列出收入在 $5,000 和 $12,000 之间,并且在部门 20 或 50 工作的雇员的名字和薪水。将列标题分别显示为 Employee 和 Monthly Salary。
select last_name “Employee”,salary “Monthly Salary” from employees where salary between 5000 and 12000 and department_id in (20,50);

显示每一个在 2004 年受雇的雇员的名字和受雇日期。
select last_name ,hire_date from employees where hire_date like ‘%04’;

显示所有工作是销售代表(SA_REP)或者普通职员 (ST_CLERK),并 且薪水不 等于 $2,500、$3,500 或 $7,000 的雇员的名字、工作和薪水。
select last_name,job_id,salary from employees where job_id in (‘SA_REP’,‘ST_CLERK’) and salary not in (2500,3500,7000);

显示所有佣金总计为 20% 的雇员的名字、薪水和佣 金。
法一:select last_name,salary,commission_pct from employees where commission_pct = 0.2;
法二:select last_name,salary,commission_pct from employees where commission_pct = .20;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值