代码编织梦想

SQL触发器:删除学生数据

#创建触发器,删除学生数据时,将删除的数据备份到数据表student_bf,以备误删除时进行数据恢复。

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 成绩 SMALLINT

[注意:SQL表名请用小写]

delimiter $
CREATE TRIGGER TRG_DELE 
BEFORE DELETE ON student
for each row 
begin 
    insert into student_bf
    select * from student
    where sno=old.sno;
end $
delimiter;

SQL触发器:创建成绩表插入触发器

#创建触发器,插入学生成绩时,限制必须在0-100之间。如果不在0-100之间,设置为0.

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 成绩 SMALLINT

[注意:SQL表名请用小写]

delimiter $
create trigger ss
before insert on sc
for each row
begin
    if new.grade<0 or new.grade>100 then
        set new.grade=0;
    end if;
end $
delimiter;

SQL存储过程:建立存储过程,查询课程的成绩表

#建立存储过程show_grade:根据学号,课程名参数,返回学生的成绩。

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 成绩 SMALLINT

[注意:SQL表名请用小写]

delimiter $
create procedure show_grade(in ssno char(7),in scname varchar(20),out gg smallint)
begin
    select grade from sc,course
    where sno=ssno and sc.cno = course.cno and cname=scname
    into gg;
end $
DELIMITER;

存储过程:返回学生总数,男生人数,女生人数

#存储过程 tj_rs:根据系名,统计该系学生总数,男生人数,女生人数。

[注意:SQL表名请用小写]

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 绩 SMALLINT

delimiter $$
create procedure tj_rs(
in SDEPT_0 VARCHAR(20),out total int,out gender_M int,out gender_F int)
begin
    select count(*) into total
    from student
    where SDEPT_0= SDEPT;
    select count(*) into gender_M 
    from student
    where SDEPT_0=SDEPT and SSEX='男';
    select count(*) into gender_F
    from student
    where SDEPT_0=SDEPT and SSEX='女';
end
$$

创建触发器,当更改商品价格(price列)时,记录价格

创建触发器,当更改商品product表的价格(price列)时,要将老的价格记录在一个名为price_log的表中。

相关表结构:

1、商品表:product
2、商品价格记录表:price_log

delimiter $
CREATE TRIGGER BEFORE_update_price
BEFORE UPDATE
ON product
FOR EACH ROW
BEGIN
    if(old.price<>new.price) THEN
        INSERT price_log(product_id,price)
        VALUES(old.product_id,old.price);
    END IF;
END $
delimiter ;

SQL存储过程:建立存储过程,查询学生的平均分

#建立存储过程show_grade:根据学号,返回学生的平均成绩(保留整数)。

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:

1、student(学生表):

SNO学号CHAR(7)

SNAME姓名CHAR(10)

SSEX性别CHAR(2)

SAGE年龄SMALLINT

SDEPT所在系 VARCHAR(20)

2、course(课程表)

CNO课程号CHAR(10)

CNAME课程名VARCHAR(20)

CCREDIT学分SMALLINT

SEMSTER学期SMALLINT

PERIOD学时SMALLINT

3、sc(选课表)

SNO 学号CHAR(7)

CNO 课程号CHAR(10)

GRADE 成绩 SMALLINT

[注意:SQL表名请用小写]

CREATE PROCEDURE show_grade (
  IN SNO1 CHAR(7),
  OUT GRADE1 SMALLINT
) 
SELECT AVG(GRADE) INTO GRADE1 FROM sc
WHERE SNO = SNO1 
GROUP BY SNO;

SQL触发器:插入新员工时,同步更新部门表相应人数

创建触发器,插入新员工时,同步更新部门表相应人数。

相关表结构:

1、员工表:employee

2、部门表:department

delimiter $$
create TRIGGER t1
AFTER INSERT on  employee
FOR EACH ROW
BEGIN
  update department
    set emp_num = coalesce(emp_num,0)+1 where dept_id = new.dept_id;
END $$
delimiter;

存储过程:根据部门编号,返回该部门的员工总数,男员工数,女员工数

创建存储过程tj_rs:根据部门编号(int),返回该部门的员工总数,男员工数,女员工数(注意参数顺序必须与题目一致)。

相关表结构:

1、员工表:employee

2、部门表:department

delimiter $$
create procedure tj_rs(in deptid int,out count1 int,out count2 int,out count3 int)
begin
   select count(*)into count1 from employee where dept_id=deptid;
   select count(*) into count2 from employee where  dept_id=deptid and gender='男';
   select count(*) into count3 from employee where  dept_id=deptid and gender='女';
end
$$

SQL存储过程:查询订单

#创建存储过程:total_order(IN orderid INT , OUT totals NUMERIC(9,2), OUT cid INT)

要求:根据输入的订单编号(order_id),返回订单总金额(total_money),顾客编号(customer_id)。

订单表:orders

delimiter $
create procedure total_order(in orderid int,out totals numeric(9,2),out cid int)
begin
    select total_money,customer_id from orders 
    where order_id=orderid
    into totals,cid;
end $
delimiter ;
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Enduranc_e/article/details/131027145

常规sql语句练习题_李白有点憨的博客-爱代码爱编程

//1.创建表studentdrop table student CREATE TABLE student( Sno CHAR(6) PRIMARY KEY, Sname VARCHAR(8), Ssex CHAR(4), Sage SMALLINT, sdept VARCHAR(15) ) //2.创建表course CREATE TABLE co

面试常见sql练习题_骚年真骚的博客-爱代码爱编程

第一题 CREATE TABLE `table1` ( `name` VARCHAR(20) DEFAULT NULL, `kecheng` VARCHAR(20) DEFAULT NULL, `fenshu`

12、sql--控制用户权限(含练习)_行者@沉浮!的博客-爱代码爱编程_sql用户权限测试

  一、控制用户权限:   1、如果新建一个用户名,在用此用户名登录后,创建新表会权限不足,需要设置系统权限—CREATE ANY TABLE   将表一的select权限赋给表二,那么就可以在表二中进行查询表一的操作。   2、系统权限:   数据库管理员(DBA)。     二、使用命令行的方式实现在控制台中的操作:

关系数据库标准语言sql(练习题)-爱代码爱编程

学生选课数据库中表结构如下: 学生(学号,姓名,年龄,性别,所在系); 课程(课程号,课程名,学分,先行课); 选课(学号,课程号,成绩); 在学生选课数据库中运用SQL语言实现下面的数据查询操作。 求选修了高等数学的学生学号和姓名。求张三学生选修成绩在90~95之间的课程名。求其他系中比管理系某学生年龄小的学生信息。求没有选修C2课程的学生姓名。查询每

每日更新sql练习题之第一天_.孤独患者.的博客-爱代码爱编程

练习题(1) SELECT product_name,sale_price FROM PRODUCT AS P WHERE EXISTS (SELECT * FROM SHOPPRODUCT AS SP WHERE SP.shop_id = ‘00C’ AND SP.product_id = P.product_id); 其中PRODUCT表示商品

数据库sql习题练习day1_释槐鸟~的博客-爱代码爱编程

1.SQL查询中使用WHere子句指出的是 A. 查询目标 B. 查询结果 C. 查询视图 D. 查询条件 where后接的是用来筛选结果的查询条件 2.在SQL中用条件表示价格在在30至40之间,应该如何表达? A.

数据库sql习题练习day5_释槐鸟~的博客-爱代码爱编程

1.这里有一张user表包含如下信息: 现在要把name列的所有值都转换为大写,并将字段重命名为names,像下面这样: 下列语句正确的是: A. SELECT LCASE(name) AS names FROM use

sql语句练习题-爱代码爱编程

一、表结构 ---------------------- 创建数据库 school 脚本 --------------------------- --drop database school create database school --创建数据库 go /*CREATE DATABA

sqlsever练习题答案word文档填空题选择题_sql填空题-爱代码爱编程

一、填空题 1.用SELECT进行模糊查询时,可以使用( like或者not like )匹配符,但要在条件值中使用( %)或(_)等通配符来配合查询。并且,模糊查询只能针对字段类型是( 字符串 )的查询。 2.计算字段

数据库sql习题练习day4-爱代码爱编程

1.已知职员表employee(eno,ename,gender,birthday,salary),现有一张E表,表结构与职员表一致,要求将E表中没有在职员表中出现的女职员添加到职员表中。下列SQL语句正确的是() A. I

数据库sql习题练习day2_需查看stu表中索引信息时-爱代码爱编程

1.需查看stu表中索引的索引信息时,应使用的存储过程是() A. sp_helpindex B. sp_help C. sp_helpdb D. sp_helptext B选项,报告有关数据库对象的信息,语法及应用错误;

数据库sql习题练习day3_不属于触发事件的是-爱代码爱编程

1.下列不属于触发事件的是() A. AFTER B. UPDATE C. DELETE D. INSERT insert触发器: 表示将要或已经新增的数据 update触发器: 表示将要或已经修改后的数据 delete触

数据库sql习题练习day7_事务允许继续分割-爱代码爱编程

1.检索所有比“王华”年龄大的学生姓名、年龄和性别。正确的SELECT语句是() A. SELECT SN,AGE,SEX FROM S WHERE AGE>(SELECT AGE FROM S WHERE SN=“王华”)