-- 游标练习 -- 根据部门名称,查询部门中工资大于平均工资的员工姓名。 -- 索引练习 -- 新建学生表student(sno,sname,birthday,smajar), sno为主键,定义sname为普通或唯一索引,用三种方式。创建之后再做删除。
时间: 2024-10-13 16:08:23 浏览: 34
对于游标练习,如果你需要查询某个部门中工资高于该部门平均工资的员工姓名,可以先计算每个部门的平均工资,然后使用游标遍历这个部门的员工数据。这里以SQL为例:
```sql
DECLARE @dept_name VARCHAR(50)
DECLARE @dept_avg_sal DECIMAL(10, 2)
-- 获取指定部门的平均工资
EXEC sp_helpstats your_table_name -- 请替换为实际表名
WHERE name LIKE '%部门名称%'
FETCH NEXT FROM sysindexes INTO @dept_name, @dept_avg_sal
DECLARE cursor CURSOR FOR
SELECT sname
FROM your_table_name
WHERE department = @dept_name AND salary > @dept_avg_sal
OPEN cursor
FETCH NEXT FROM cursor INTO @employee_name
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @employee_name
FETCH NEXT FROM cursor INTO @employee_name
END
CLOSE cursor
DEALLOCATE cursor
```
你需要将`your_table_name`、`部门名称`以及列名替换为你实际的数据。
对于索引练习,在`student`表上创建索引有三种常见方式:普通索引、唯一索引(主键)和全文索引。首先,创建普通索引:
```sql
CREATE INDEX idx_sname ON student (sname);
```
创建唯一索引(即主键约束),如果`sno`已经存在并且是自动增长的整数,可以直接设置为主键:
```sql
ALTER TABLE student ADD CONSTRAINT PK_student PRIMARY KEY (sno);
```
最后,如果想创建全文索引,适合于全文搜索,例如对`sname`字段:
```sql
CREATE FULLTEXT INDEX idx_fts_sname ON student (sname);
```
删除索引时对应上面的三个命令分别使用DROP INDEX:
```sql
DROP INDEX idx_sname ON student;
DROP INDEX PK_student ON student; -- 如果是主键
DROP FULLTEXT INDEX idx_fts_sname ON student;
```
记得替换实际的表名和索引名称。
阅读全文