数据库(二)

简介: 数据查询教程包括单表查询操作,如Select语句用于选取属性,可指定列名、使用别名、计算表达式,并通过Distinct去除重复元组。条件查询(Where子句)支持比较运算,如Between、In、Like(支持模糊匹配)及空值判断。连接查询用于合并多表数据,如内连接、外连接和笛卡尔积。例如,通过连接emp和dept表,可获取员工姓名及其所在部门名称。


数据查询

单表查询

  1. 对属性操作

Select后可以写属性名、常数、函数以及他们组成的表达式,除此之外还可以给属性名重命名以及星号和distinct。

Select相当于关系代数的投影运算

  1. 查询表中所有属性

select * from emp

  1. 查询每个员工的编号和姓名

属性的显示顺序与select后的属性列表顺序一致

Select id, name from emp

  1. 查询每个员工的编号和姓名、年工资

Select id, name,salary * 12 from emp

修改查询结果中的列名:在属性后用空格隔开直接定义属性名或者用as隔开

Select id, name,salary * 12  as year_sal from emp

  1. 查询每个员工的编号和姓名、年工资以及年收入

年收入=年工资*(1+提成)

Select id, name, salary * 12  as year_sal , salary * 12 * (1+comm_pct*0.01)

from emp

凡是null参与的运算结果仍未null

空值函数(A,B):如果A为空则函数返回B值,否则返回A值

ifnull(A,B)    

Select id, name, salary * 12  as year_sal , salary * 12 * (1+ifnull(comm_pct,0)*0.01)

  1. 查询每个员工的职位

Select title From emp

  1. 查询员工的职位种类

Distinct:用于去除查询结果中的重复元组,写在select之后属性列表之前

Select distinct title from emp;

  1. 查询每个员工的编号和职位

Select distinct id, title from emp

Select distinct id, distinct title from emp;--错误

  1. 对行的操作(条件查询)

Where—相当于关系代数中选择运算

Where 条件表达式,写在from之后

Where不能使用属性别名

在查询条件中属性尽量不要写在表达式中

  1. 查询1号员工

Select * From emp

Where id = 1;

  1. 工资大于1000的员工

Select * From emp

Where salary > 1000;

  1. 年工资大于12000的员工

选择先做

Select id, name,salary * 12  as year_sal from emp

Where year_sal > 12000;

  1. 查询工资在1000到2000之间的

否定形式 not between and

属性名Between A and B ->

属性 >= A and 属性 <=B

Select * From emp

Where salary between 1000 and 2000;

  1. 在1,3,5,7部门工作的员工

属性名  In (A,B,C……)->

属性 = A or 属性 = B or 属性 = C ……

否定形式:not in

Select * From emp

Where dept_id in(1,3,5,7)

  1. 模糊查询

否定形式:Not like

Like 用于字符串比较

%:任意长度的任意字符

_:任意一个字符

Name = ‘张三’

姓张同学: 张%

姓张的三个字的同学: 张__

名字中有张的: %张%

带Escape的like

带带正则表达式的like

Select * From emp

Where name like ‘A%’

  1. 查询没有提成的员工

Select * From emp

Where comm_pct is null;

  1. 查询有提成的员工

Select * From emp

Where comm_pct is not null;

连接查询

1.每个员工姓名及其所在部门的名称

select name,name from emp,dept ×

select emp.name,dept.name from emp,dept ×

select emp.name,dept.name from emp,dept

where emp.dept_id = dept.id --表连接条件

连接条件至少是表的个数减1个


2.每个部门的名称及其所在区域的名称

select dept.name,region.name from dept,region

where dept.regio_id = region.id

3.每个员工名字及其所在的城市

select epm.name,region.city from emp,region,dept

where emp.dept.id = dept.id and dept.region_id = region_id


表的别名:在from子句中表名后空格隔开直接定义表的别名。当给表定义别名后再访问该表时必须使用其别名


select e.name,r.city from emp e,region e,dept d

where e.dept.id = d.id and d.region_id = region_id


4.不等值连接:

select e.id,e.name,s.grade

from emp e,salgrade s

where e.salary >= s.lowsal and s.salary <=s.higsal

5.自然连接 natural join

select * from A表 natural join B表

6.笛卡尔积

cross join



外连接: 用于显示悬浮元组

相关文章
|
8月前
|
关系型数据库 Linux BI
数据库的一些知识
数据库的一些知识
28 0
|
10天前
|
SQL BI 数据库
数据库视频(二)
数据库视频(二)
17 1
|
22天前
|
存储 传感器 监控
数据库的应用
数据库广泛应用于电子商务、物流、酒店管理、医疗、航空、教育、政府和物联网等领域,用于高效存储和管理商品信息、订单数据、医疗记录、航班详情等各类数据,提升效率和服务质量。随着技术进步,其应用场景将持续扩展。
12 1
|
1月前
|
SQL 数据库
数据库(五)
`UPDATE` SQL语句用于修改表中的数据。基本语法是:`UPDATE 表名 SET 属性名1=新值1,属性名2=新值2 WHERE 条件表达式`。例如,更新员工工资:`UPDATE emp SET salary=5000 WHERE id=1`。可以使用`+=`操作符增加值,如`UPDATE emp SET salary=salary+500 WHERE dept_id=2`。统计查询中,`COUNT`, `MAX`, `MIN`, `AVG`, `SUM`等函数用于数值、字符和日期的统计分析,注意`WHERE`子句不能直接使用聚集函数。
14 2
|
9月前
|
存储 SQL NoSQL
|
5月前
|
SQL NoSQL 关系型数据库
数据库
数据库
38 1
|
7月前
|
存储 缓存 关系型数据库
2、数据库相关
2、数据库相关
31 0
|
10月前
|
存储 安全 数据挖掘
数据库视频
数据库视频
76 0
|
11月前
|
SQL 数据库
数据库知识与技巧日常汇总
数据库知识与技巧日常汇总
77 0
|
11月前
|
Oracle 关系型数据库 数据库
初识数据库
初识数据库