视图函数索引题

视图索引函数

学生表:Student (Sno, Sname, Ssex , Sage, Sdept)

学号,姓名,性别,年龄,所在系 Sno为主键

课程表:Course (Cno, Cname,)

课程号,课程名 Cno为主键

学生选课表:SC (Sno, Cno, Score)

学号,课程号,成绩 Sno,Cno为主键

  1. 用SQL语句创建学生表student,定义主键,姓名不能重名,性别只能输入男或女,所在系的默认值是 “计算机”。
mysql> create table student(
    -> Sno INT PRIMARY KEY,
    -> Sname VARCHAR(10) UNIQUE,
    -> Ssex CHAR(2) CHECK (Ssex='男' OR Ssex='女'),
    -> Sage INT,
    -> Sdept VARCHAR(10) DEFAULT '计算机'
    -> );

  1. 修改student 表中年龄(age)字段属性,数据类型由int 改变为smallint。
mysql> ALTER TABLE student MODIFY Sage SMALLINT ;
  1. 为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引,索引名为SC_INDEX 。
mysql> CREATE TABLE SC(
    -> Sno INT,
    -> Cno INT,
    -> Score INT,
    -> PRIMARY KEY(Sno,Cno)
    -> );

mysql> CREATE INDEX SC_INDEX ON SC(Sno,Cno) asc;
mysql> CREATE TABLE SC(
    -> Sno INT,
    -> Cno INT,
    -> Score INT,
    -> PRIMARY KEY(Sno,Cno),
    -> SC_INDEX(Sno,Cno) asc
    -> );

  1. 创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。
mysql> CREATE VIEW stu_info(
    -> name,sex,cname,score)
    -> AS SELECT student.Sname,student.Ssex,Coutse.Cname,SC.Score
    -> FROM student,Coutse,SC
    -> WHERE student.Sno=SC.Sno AND Coutse.Cno=SC.Cno
    -> WITH LOCAL CHECK OPTION;

创建表并插入数据

字段名 id数据类型 INT主键 是外键 否非空 是唯一 是自增 否
nameVARCHAR(50)
glassVARCHAR(50)
sch表内容
idnameglass
1xiaommgglass 1
2xiaojunglass 2

1、创建一个可以统计表格内记录条数的存储函数 ,函数名为count_sch()

mysql> CREATE TABLE SCH(
    -> id INT PRIMARY KEY,
    -> name VARCHAR(50) NOT NULL,
    -> glass VARCHAR(50) NOT NULL
    -> );
mysql> INSERT INTO SCH VALUES(1,'xiaommg','glass1'),(2,'xiaojun','glass2');
mysql> \d $$
mysql> create procedure count_sch()
    -> begin
    -> select count(*) from school.SCH;
    -> end$$

2、创建一个存储过程avg_sai,有3个参数,分别是deptno,job,接收平均工资, 功能查询emp表dept为30,job为销售员的平均工资。

mysql> \d $$
mysql> create procedure avg_sai1(in dept int(10),in job_a varchar(50),out avgmgr int)
    -> begin
    -> select avg(sai) into avgmgr from emp where deptno=dept and job=job_a;
    -> end$$
mysql> call avg_sai1(30,'文员',@a);
mysql> select @a;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值