视图索引函数
学生表:Student (Sno, Sname, Ssex , Sage, Sdept)
学号,姓名,性别,年龄,所在系 Sno为主键
课程表:Course (Cno, Cname,)
课程号,课程名 Cno为主键
学生选课表:SC (Sno, Cno, Score)
学号,课程号,成绩 Sno,Cno为主键
- 用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 '计算机'
-> );
- 修改student 表中年龄(age)字段属性,数据类型由int 改变为smallint。
mysql> ALTER TABLE student MODIFY Sage SMALLINT ;
- 为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
-> );
- 创建一视图 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 | 主键 是 | 外键 否 | 非空 是 | 唯一 是 | 自增 否 |
---|---|---|---|---|---|---|
name | VARCHAR(50) | 否 | 否 | 是 | 否 | 否 |
glass | VARCHAR(50) | 否 | 否 | 是 | 否 | 否 |
sch | 表内容 | |
---|---|---|
id | name | glass |
1 | xiaommg | glass 1 |
2 | xiaojun | glass 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;