数据库面试题--emp_employee、department

本文提供了一系列SQL实战案例,包括复杂查询、数据更新与删除、存储过程、函数及游标等高级特性,帮助读者深入理解并掌握SQL的应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、按部门名称查询出员工的人数大于等于100的语句.(员工:emp_employee, 部门名称: department,员工姓名chnalias.)
SELECT departrnent FROM emp_employee GROUP BY departrnent HAVING COUNT(*)>=100
二、把员工的姓名、性别和年龄显示出来。(员工表emp_employee, 员工姓名:chnalias,年龄age,性别:gender。性别表:pub_gendar_info,性别名称:smpalias,与员工表的性别关
SELECT e.chnalias,g.smpalias,e.age FROM emp_employee e INNERJOIN pub_gendar gONe.gendar = g.smpalias
三、当部门表的名称为空时,用0来代替。(部门表org_department名称smpalias)
SELECT (CASE WHEN smpalias=’null’ THEN ’0′ ELSE smpalias END) AS ‘部门名称’ FROM org_departmen
Select replace(smpalias,’null’,’0’) fromorg_department
四、删除员工表中的姓名重复的数据,只保留重复数据中的一条数据。(员工表emp_employee,员工姓名:chnalias)
DELETE FROM emp_employee WHERE id NOT IN ( SELECT MAX(id) AS id FROMemp_employee GROUP BY chnalias )
五、有三个部门:1人力资源部,2信息中心,3.安全监察部分别把这个三个部门的人员统计出来。要求用sql语句一行来实现(员工表 emp_employee,员工姓名:chnalias,员工表对应的部门id:department.。部门表:org_departmen。部门表的 字段:部门名称smpalias,部门主键:id)部门表的id=员工表的department
显示的结果应该是:
人力资源部 信息中心 安全监察部
10 20 30
SELECT SUM (f.s1) AS ‘人力资源部’,SUM (f.s2)AS ‘信息中心’, SUM (f.s3)AS ‘信息中心’
from
(
SELECT(CASE WHEN d.smpalias=’人力资源部’ THENSUM(e.Departid) END) AS s1,
(CASE WHEN d.smpalias=’信息中心’ THEN SUM(e.Departid) END)AS s2,
(CASE WHEN d.smpalias=’安全监察部’ THEN SUM(e.Departid) END)AS s3
FROM emp_employee e INNER JOIN org_departmen d ONe.departId=d.id
GROUP BY d.smpalias ) f
六、查询出差表中的每个员工最近的出差时间和员工姓名(出差表emp_travel,员工姓名chnalias,出差时间godate)
SELECT chnalias,godate FROM emp_travel ORDERBY godate DESC
七、请写一个存储过程,把emp_employee表中的chnalias这个字段的名称更新为’您好’。
CREATE PROC proc_updateemp
AS
UPDATE FROM emp_employee SET chnalias = ‘您好’
GO
EXEC proc_updateemp

八、请写一个函数,用来实现把一个字段的内容横向显示出来。(表pub_codeitem_inf,代码组字段groupcode,名称字段:smpalias.每行内容用逗号分开)
create function dbo.f_str(@id int) return varchar(100)
as
begin
declare @str varchar(1000)
set @str=”;
select @str=@str+’,'+cast(smpalias as varchar) frompub_codeitem_inf wheregroupcode=@id
set @str=right(@str,len(@str)-1)
return @str
end
go
–调用函数
select groupcode,smplias=dbo.f_str(groupcode) from pub_codeitem_inf groupbygroupcode
九、请写一个游标用来把表中的数据显示出来(表emp_employee,显示姓名chnalias和单位company)
Create proc employee
@company varchar(50)=’’
@chnalias varchar(50)=’’
as
declare @curList
set @curList= cursor for
select chnalias,company fromemp_employee
open @curList
fetch next from @curList into @chnalias,@company
while(@@fetch status=0)
begin
print @chnalias+@company
fetch next from @curList into @chnalias,@company
end
close @curList
deallocate @curList
十、请用sql语句写一个从1减到100的语句出来。
Declare @star int ,@sum int
Select @star =1,@sum=0
While(@star<=100)
Begin
Set @sum=@sum – @star
Set @star=@star + 1
End
Select @sum

1、图像统一用base64编码。2、不需要reset_daily_status,这个不需要前端参与是后端会每日自动进行的——根据这两点再修改前端的db_module:import requests import json import base64 from typing import Dict, List, Optional class EmployeeService: def __init__(self, base_url="http://127.0.0.1:5000"): """ 初始化员工服务 :param base_url: 后端API基础URL """ self.base_url = base_url self._last_employee_str = "" # 存储最后查询的员工信息字符串 self._last_employee_data = None # 存储最后查询的员工原始数据 def _request(self, endpoint, method="GET", payload=None, files=None): """ 通用HTTP请求方法 :return: 响应字典或二进制数据 """ url = f"{self.base_url}{endpoint}" headers = {'Content-Type': 'application/json'} try: if method == "GET": response = requests.get(url, params=payload, headers=headers) elif method == "POST": response = requests.post(url, json=payload, files=files, headers=headers) elif method == "DELETE": response = requests.delete(url, json=payload, headers=headers) else: return {"code": 400, "msg": f"不支持的HTTP方法: {method}", "data": None} # 处理二进制图像响应 if 'image' in endpoint: if response.status_code == 200: return response.content return None response.raise_for_status() return response.json() except requests.exceptions.HTTPError as e: error_msg = f"HTTP错误 ({e.response.status_code}): {e.response.text}" return {"code": e.response.status_code, "msg": error_msg, "data": None} except Exception as e: return {"code": 500, "msg": f"请求异常: {str(e)}", "data": None} # ------------------ 员工管理接口 ------------------ def add_employee(self, emp_id: str, name: str, image_base64: str = None) -> Dict: """ 添加新员工 :param emp_id: 8位数字工号 :param name: 员工姓名 :param image_base64: Base64编码图像 :return: 操作结果字典 """ payload = {"emp_id": emp_id, "name": name} if image_base64: payload["image"] = image_base64 return self._request("/employee/add", "POST", payload=payload) def delete_employee(self, emp_id: str) -> Dict: """ 删除员工 :param emp_id: 员工工号 :return: 操作结果字典 """ return self._request(f"/employee/delete/{emp_id}", "DELETE") def update_employee(self, emp_id: str, name: str = None, status: int = None, image_base64: str = None) -> Dict: """ 更新员工信息 :param emp_id: 员工工号 :param name: 新姓名 :param status: 打卡状态 (0/1) :param image_base64: Base64编码图像 :return: 操作结果字典 """ payload = {"emp_id": emp_id} if name: payload["name"] = name if status is not None: payload["status"] = status if image_base64: payload["image"] = image_base64 return self._request("/employee/update", "POST", payload=payload) # ------------------ 查询接口 ------------------ def get_employee(self, emp_id: str) -> Optional[Dict]: """ 获取员工详细信息 :param emp_id: 员工工号 :return: 员工信息字典或None """ response = self._request(f"/employee/{emp_id}", "GET") if response and response.get("code") == 200: # 存储原始数据和字符串示 self._last_employee_data = response["data"] self._last_employee_str = json.dumps(response["data"], ensure_ascii=False) return response["data"] return None def get_all_employees(self) -> List[Dict]: """ 获取所有员工 :return: 员工信息字典列 """ response = self._request("/employee/list", "GET") return response.get("data", []) if response and response.get("code") == 200 else [] # ------------------ 图像处理 ------------------ def get_employee_image(self, emp_id: str) -> Optional[bytes]: """ 获取员工头像原始二进制数据 :param emp_id: 员工工号 :return: 图像二进制数据或None """ return self._request(f"/employee/image/{emp_id}", "GET") def get_employee_image_base64(self, emp_id: str) -> Optional[str]: """ 获取员工头像的base64编码 :param emp_id: 员工工号 :return: base64编码字符串或None """ image_data = self.get_employee_image(emp_id) return base64.b64encode(image_data).decode('utf-8') if image_data else None # ------------------ 打卡管理 ------------------ def clock_in(self, emp_id: str) -> Dict: """ 员工打卡 :param emp_id: 员工工号 :return: 操作结果字典 """ return self._request("/employee/clock_in", "POST", payload={"emp_id": emp_id}) # ------------------ 实用功能 ------------------ def reset_daily_status(self) -> Dict: """ 重置所有员工打卡状态 :return: 操作结果字典 """ return self._request("/reset_daily_status", "POST") @property def last_employee_str(self) -> str: """ 获取最后查询的员工信息字符串 :return: JSON格式的员工信息字符串 """ return self._last_employee_str @property def last_employee_data(self) -> Optional[Dict]: """ 获取最后查询的员工原始数据 :return: 员工信息字典或None """ return self._last_employee_data def get_employee_status(self, emp_id: str) -> Optional[int]: """ 获取员工打卡状态 :param emp_id: 员工工号 :return: 状态值 (0/1) 或None """ employee = self.get_employee(emp_id) return employee.get("status") if employee else None def get_record_count(self, emp_id: str) -> Optional[int]: """ 获取员工打卡次数 :param emp_id: 员工工号 :return: 打卡次数或None """ employee = self.get_employee(emp_id) return employee.get("record_count") if employee else None # 单例模式 - 全局员工服务实例 emp_service = EmployeeService() ——并告诉我怎么加入图像进行测试
最新发布
08-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值