数据库(二)

简介: 数据查询教程包括单表查询操作,如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



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

相关文章
|
1月前
|
存储 数据管理 数据库
数据库三部分
数据库:用于存储数据的地方 数据库管理系统(DataBase Management System,DBMS):用于管理数据库的软件。是用户创建,管理和维护数据库时所使用的软件,位于用户和操作系统之间,对数据库进行统一管理。DBMS能定义数据存储结构,提供数据的操作机制,维护数据库的安全性,完整性和可靠性。 数据库应用程序:为了提高数据库系统的处理能力所使用的的管理数据库的软件补充。大多情况下,DBMS无法满足对数据管理的要求。数据库应用程序的使用可以满足对数据管理的更高要求,还可以使数据管理过程更加直观和友好。数据库应用程序负责与DBMS进行通信,访问和管理DBMS中存
|
7月前
|
存储 SQL 关系型数据库
我们应该要知道的数据库知识
我们常常谈到数据库可能就会想到Oracle数据库、ACCESS数据库、SQL数据库、MySQL等等,
38 1
|
7月前
|
SQL BI 数据库
数据库视频(二)
数据库视频(二)
42 1
|
7月前
|
存储 关系型数据库 MySQL
数据库(一)
登录MySQL数据库的命令是`mysql -u用户名 -p密码`,其中`-u`后面接用户名,`-p`后面接密码。如果服务器不在本地,还需指定`-h`参数加上IP地址或域名,以及可选的`-P`参数指定端口号。创建数据库使用`create database 数据库名`,查看数据库用`show databases;`。数据类型包括整数类型(如int)、字符串(如char、varchar、text)、日期时间类型(如date、time、datetime)等。数据库操作还包括创建表、修改表结构、删除表以及数据的增删改查操作。数据恢复和备份涉及mysqldump工具及source命令来导入导出数据。
26 1
|
7月前
|
XML SQL 数据库
数据库视频(三)
数据库视频(三)
32 0
|
7月前
|
存储 数据库 数据安全/隐私保护
数据库特点
数据库特点
86 9
|
存储 缓存 关系型数据库
2、数据库相关
2、数据库相关
50 0
|
SQL Java 数据库连接
H2数据库相关知识
H2数据库是一个嵌入式关系数据库管理系统(RDBMS),它以纯Java编写,支持SQL和JDBC标准。H2数据库具有高性能、轻量级、易于使用和部署的特点。它可以作为内存数据库或持久化数据库使用,并且支持多种模式,包括嵌入式模式、服务器模式和混合模式。H2数据库还提供了一些高级功能,如触发器、存储过程和内置函数,使开发者能够更灵活地操作数据。
135 1
|
SQL 安全 数据库
【数据库视频】总结
【数据库视频】总结
|
存储 SQL 安全
一、如何快速掌握数据库
一、如何快速掌握数据库
122 0