sell脚本练习

这篇博客通过三个练习介绍了如何使用Bash脚本来检查用户权限、统计默认Shell为bash的用户数量、查找文件中的空白行以及验证用户UID与GID是否相同,帮助读者提升Linux运维技能。

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

写一个脚本,完成以下要求:
给定一个用户:
1、如果其UID为0,就显示此为管理员;
2、否则,就显示其为普通用户;

read -p "输入用户名:" username
id $username &> /dev/null
status_code3=$?
if [ $status_code3 -eq 1 ]
then
    echo "该用户不存在"
elif [ $status_code3 -eq 0 ]
then
    output_info='id $username'
    userid=$
### 关于数据库存储过程的练习题及答案 #### 选择题 1. **系统存储过程以什么作为前缀?** - A. @@ - B. @ - C. sp_ - D. up_ 正确答案是 `C`,因为系统存储过程通常以前缀 `sp_` 开始[^1]。 2. **系统存储过程主要存储在哪一个数据库中?** - A. Tempdb - B. Master - C. Model - D. Msdb 正确答案是 `B`,系统存储过程一般存放在 `Master` 数据库中[^1]。 3. **定义存储过程中的输出参数时,需要在参数后使用哪个关键字?** - A. DEFAULT - B. OUTPUT - C. INPUT - D. WITH 正确答案是 `B`,当定义存储过程中带有返回值的参数时,需指定 `OUTPUT` 关键字[^1]。 4. **系统存储过程 `sp_helptext` 的作用是什么?** - A. 查看帮助文档 - B. 查看权限设置 - C. 查看创建对象的定义 - D. 修改现有存储过程 正确答案是 `C`,该命令用于显示存储过程或其他数据库对象的具体 SQL 定义[^1]。 --- #### 编程实践题 **题目描述:** 假设有一个名为 `SALES` 的销售管理系统数据库,其中包含两个表: - 表 `COMMODITY`(商品信息) - 字段:`NO`(编号)、`NAME`(名称)、`CATEGORY`(类别) - 表 `SELL`(销售记录) - 字段:`NO`(商品编号)、`QUANTITY`(数量)、`PRICE`(单价)、`TIME`(时间戳) 请完成以下任务: 1. 创建一个存储过程 `p_TotalProfit`,接收一个字符串类型的输入参数 `@lb`,表示商品类别。查询并返回属于该类别的所有商品及其年度销售额。 2. 如果存储过程已存在,则先删除它再重新创建。 --- **解决方案:** 以下是实现上述功能的 T-SQL 脚本: ```sql USE SALES; IF EXISTS (SELECT name FROM sys.objects WHERE NAME = 'p_TotalProfit') DROP PROC p_TotalProfit; GO CREATE PROC p_TotalProfit @lb CHAR(10) AS BEGIN SELECT t2.NAME AS 商品名, ( SELECT SUM(t1.QUANTITY * t1.PRICE) FROM SELL t1 WHERE t1.NO = t2.NO AND YEAR(t1.TIME) = YEAR(GETDATE()) ) AS 销售总金额 FROM COMMODITY t2 WHERE t2.CATEGORY = @lb; END; GO ``` 此脚本的功能如下: - 首先检查是否存在同名的存储过程,如果存在则将其删除。 - 接着通过 `CREATE PROC` 命令新建存储过程 `p_TotalProfit`。 - 参数 `@lb` 是用来筛选特定类别的商品。 - 查询逻辑是从 `SELL` 和 `COMMODITY` 表中联结数据,并计算当前年份内的销售额[^3]。 --- #### 练习扩展 为了加深理解,还可以尝试解决以下几个问题: 1. 如何修改上面的存储过程使其支持多个分类的同时查询? 2. 将存储过程改为带分页功能的形式,允许传入起始位置和结束位置作为额外参数。 3. 添加异常处理机制到存储过程中,以便捕获可能发生的错误并提供友好的提示消息。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值