首页 > 数据库 >重学数据库4

重学数据库4

时间:2024-02-07 22:11:20浏览次数:29  
标签:数据库 查询 dept emp tb id select

多表查询

表用逗号隔开,查询结果相当于笛卡尔积,可以通过增加条件来消除无效的结果

select * from tb_emp,tb_dept where tb_emp.dept_id=tb_dept.id;

连接查询

内连接:相当于查询交集部分的数据

外连接:

​ 左外链接:查询左表数据

​ 右外链接:查询右表数据

内连接

语法

//隐式内链接
select 字段列表 from 表一,表二 where 条件;
//显式内连接
select 字段列表 from 表一 [inner] join 表二 on 连接条件;

例子

# 查询员工姓名及其所属部门,隐式(经常)
select tb_emp.name,tb_dept.name
from tb_dept,tb_emp where tb_emp.dept_id=tb_dept.id;

# 查询员工姓名及其所属部门,显式
select tb_emp.name,tb_dept.name
from tb_emp inner join tb_dept on tb_emp.dept_id=tb_dept.id;

外连接

左外连接:
select 字段列表 from 表一 left [outer] join 表二 on 连接条件;
右外连接:
select 字段列表 from 表一 right [outer] join 表二 on 连接条件;
select tb_emp.name,tb_dept.name
from tb_emp left join tb_dept on tb_emp.dept_id=tb_dept.id;


select tb_emp.name,tb_dept.name
from tb_dept right join tb_emp on tb_emp.dept_id=tb_dept.id;

子查询

SQL语句中嵌套select语句,称为嵌套查询或者子查询,其外部语句可以是select/delete/insert/update等,最常用的外部语句是select

分类

标量子查询 子查询返回的结果为单个值
列子查询 子查询返回的值为一列
行子查询 子查询返回的值为一行
表子查询 子查询返回的值为多行多列

标量子查询

# 标量子查询
# 查询教研部的所有员工信息
select * from tb_emp where dept_id=(select id from tb_dept where name ='教研部');
# 查询在方东白入职之后的员工信息
select *
from tb_emp where entrydate > (select entrydate from tb_emp where name ='方东白');

列子查询

#列子查询
# 查询教研部和咨询部的所有员工信息
select *
from tb_emp where dept_id in (select id from tb_dept where name='教研部' or name='咨询部');

行子查询

#行子查询
#常见的操作符:=,<>,in,not in
# 查询与韦一笑的入职日期及职位都相同的员工信息
select *
from tb_emp where (entrydate,job)=(select entrydate,job from tb_emp where name='韦一笑');

表子查询

# 表子查询
# 查询入职日期是2006-01-01之后的员工信息,及部门名称
# 1.查询入职日期2006-01-01之后的员工信息
select * from tb_emp where entrydate >'2006-01-01';
# 2.查询这部分员工信息和部门
select e.*,d.name from (select * from tb_emp where entrydate >'2006-01-01') e,tb_dept d where e.dept_id=d.id;

事务

开启事务:start transaction; / begin;

提交事务:commit;

回滚事务:rollback;

索引

索引****是帮助数据库高校获取数据数据结构**

语法:

#创建索引
create [unique] index 索引名 on 表名(字段名,...)
#查看索引
show index from 表名;
#删除索引
drop index 索引名 on 表名;

注意事项:

主键字段,在建表的时候,会自动创建主键索引

添加唯一约束时,数据库实际上会添加唯一索引

标签:数据库,查询,dept,emp,tb,id,select
From: https://www.cnblogs.com/gyg1222/p/17973200

相关文章

  • 第5章 用数据库存储数据
    第5章用数据库存储数据5.1MySQL数据库用CSV和Excel存储数据有两个优点:非开发人员也能看到数据,不需要额外的学习成本。使用方便,数据存储在文件里,复制到其他设备上可以直接查看。这种表格存储文件的形式适用于少量数据的情况,当记录很多、字段很多时,打开文件会非常慢,而......
  • 【转帖】数据库传奇:MySQL创世之父的两千金My、Maria
    https://zhuanlan.zhihu.com/p/672142719 1人赞同了该文章《数据库传奇:MySQL创世之父的两千金My、Maria》一、前言  MySQL是一款备受欢迎的关系型数据库管理系统(RDBMS),最初由瑞典公司MySQLAB开发,目前隶属于OracleCorporation。在DB-Engines的排名中,MySQL稳......
  • 产品经理的春天 - DuckDB 数据库,了解一下
    产品经理的春天-DuckDB数据库http://duckdb.org/-无需安装,再也不用大数据那边的平台了。-零基础,会SQL就能玩。映射MySQL数据库,直接在本地查询MySQL数据支持跨库Join跟DBA要个账号就完了。#启动DUCKDB./duckdbme.duckdb映射MySQL数据库:ATTACH'host=127.0.0.1user=adminpass......
  • 使用IDEA直接连接数据库报错:Server returns invalid timezone. Go to 'Advanced' tab
    错误详情:使用IDEA直接连接数据库报错:Serverreturnsinvalidtimezone.Goto'Advanced'tabandset'serverTimezone'propertymanually.错误原因:MySQL驱动中默认时区是UTC,与本地时间有时差。解决方案:点开最右侧导航栏Advanced,找到serverTimezone,在value处填写GMT保存再......
  • Flink CDC实时同步PG数据库到Kafka
    一、安装规划操作系统服务器IP主机名硬件配置CentOS7.6192.168.80.131hadoop01内存:2GB,CPU:2核,硬盘:100GBCentOS7.6192.168.80.132hadoop02内存:2GB,CPU:2核,硬盘:100GBCentOS7.6192.168.80.133hadoop03内存:2GB,CPU:2核,硬盘:100GB......
  • Ubuntu18.04定时备份MySQL、PostgreSQL数据库
    1、备份MySQL数据库脚本LOG_DATE=`date+'%Y-%m-%d%H:%M:%S'`LOG_PATH=/home/dbserver/script_data/backup.logecho"$LOG_DATE=======>开始备份以下mysql数据库:">>${LOG_PATH}DUMP=/usr/bin/mysqldumpOUT_DIR=/home/dbserver/backup/mysql_backupLINU......
  • 数据库之隔离级别,脏读幻读,事务特性
    目录1事务隔离级别1.1默认隔离级别1.2读未提交1.3读已提交1.4可重复读1.5序列化2事务关键词2.1定义(脏读,不可重复读,虚读)2.2不可重复读与幻读的区别3事务的四个特性3.1原子性3.2一致性3.3隔离性3.4持久性1事务隔离级别1.1默认隔离级别ISOLATION_DEFAULT:默认......
  • x64dbg 防止丢失数据库的插件 DbGit
    我跟了一晚上,说丢就丢了,真的无语~找到个使用git的方式备份数据库的插件DbGit 试了下,使用很简单!在手动保存或退出x64dbg时会自动执行 git add -A git commit -m命令。数据库似乎必须得在软件目录下的db目录才行,在被调试程序目录,似乎不行! 从此不会丢数据了,也算......
  • SQL数据库入门04:数据查询操作
      本文介绍基于MicrosoftSQLServer软件,实现数据库表中多种数据查询方法的具体操作。(数据库基础(四):数据查询)  系列文章中示例数据来源于《SQLServer实验指导(2005版)》一书。依据本系列文章的思想与对操作步骤、代码的详细解释,大家用自己手头的数据,可以将相关操作与分析过程......
  • java实现导出mysql数据库表信息
    java实现导出mysql数据库表信息,导出信息包含:数据库用户名,表英文名,表中文名,表业务描述,字段数量等等packagesrc.main.biz.ucenter.utils;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.ss.usermodel.Workbook;impor......