1.做一下powerdesigner的画图
2.所有的创建表格
网上书店数据库
uid + uname + email + tnum + score
会员表user结构
列名 + 数据类型 + 允许null + 约束 +备注
uid char(4)
uname varchar(20)
email varchar(20)
tnum varchar(15)
score int
书book信息
bid int
bname varchar(50)
author char(8)
price float
publisher varchar(50)
discount float
cid int
b_order订购表数据
uid int
bid char(4)
ordernum int
orderdate datetime
delivery datedatetime
category图书类别表
cid int
cname varchar(16)
1
MySQL配置、启动、登录操作
操作要求:
1.在windows服务对话框中,手动启动或者关闭mysql 服务。
#windows+R --> services.msc 回车
#找到mysql 右键启动;
2.使用net命令启动或者关闭mysql 服务。
3.配置系统变量path ,确保mysql安装路径下的bin文件夹包含在path变量中。
#在系统的高级环境变量中path配置。
#文件在C:\Program Files\MySQL\MySQL Server 5.7\bin
4.分别用 navicat 工具和命令行方式登录mysql服务器。在命令行如何退出?
#use database stu;
#mysql -h127.0.0.1 -uroot -proot
#quit;
#exit;
5.在命令行修改登录密码,并重新登录。
方法1: 用SET PASSWORD命令
首先登录MySQL。#mysql -uroot -proot
格式:mysql> set password for 用户名@localhost = password('新密码');
#set password for root@localhost = password('123456'); // 将密码root改为123456
方法2:用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码、#mysqladmin -uroot -proot password 123456;
6.在命令行查看mysql版本信息。
status /select version();#status;
#select version();
7.在命令行查看mysql帮助信息。
help#help;
8.在命令行查看mysql状态信息。
status#status;
9.把命令提示符修改为hao>
prompt hao> (prompt \u@\h\d>) (注意后面不能加分号)#prompt \u@\h\d>
10.将字符编码改为gbk。
#set names gbk;
2
表的建立和修改
分别用navicat工具和命令行方式在cjgl数据库中完成如下操作:
(用navicat,新建数据库:cjgl)
一、 1. 建名为xs的学生表 ,xs表字段要求如下:
学号 char(6) 主键 not null
姓名 varchar(8) not null
专业名 varchar(20) null
性别 char(2) not null 默认值:'男'
出生日期 date not null
总学分 tinyint null
备注 text null#create table xs (
学号 char(6) primary key not null,
姓名 varchar(8) not null,
专业名 varchar(20) null,
性别 char(2) not null default '男',
出生日期 date not null,
总学分 tinyint
备注 text null
);
2.查看表的结构和创建代码,查看当前库中所有已建的表。查看表必须 先进入数据库.
#desc xs;#show tables;
#select * from xs;
#show columns from xs;
3.修改xs表的列‘总学分’数据类型为smallint。
#alter table xs modify 总学分 smallint;
4.将xs表的字符集改为utf8,然后再改为gb2312。
#alter table xs default charset=utf8;
5.将xs表的出生日期改名为出生时间。
#alter table xs change 出生日期 出生时间 date; 6.在xs表中添加一个‘联系电话’字段,char(11),null。然后删除这个字段。
#alter table xs add 联系电话 char(11) null;
#alter table xs drop column 联系电话;
7.将xs表复制,复制后的表名为xsbk。 #insert into
8.将表xsbk 的存储引擎改为myisam,并查看改否。
#
9.将表xsbk重命名为xs_bk。
#
10.删除xs_bk表。#delete from xs_bk;
二、 建名为kc的课程表 ,kc表字段要求如下:
课程号 char(3) 主键 not null
课程名 varchar(20) not null 不能有重复值(唯一约束)
开课学期 tinyint not null 默认值:1
学分 tinyint null#create table kc(
课程号 cahr(3) primary key not null,
课程名 varchar(20) not null unique,
开课学期 tinyint not null default 1,
学分 tinyint null
);
三、建名为cj的成绩表 ,cj表字段要求如下:
学号 char(6) 外键:(xs) 表的学号
课程号 char(3) 外键:(kc) 表的课程号
成绩 decimal(3,1) null 其中,学号与课程号一起作为主键。
#create table cj(
学号 char(6) not null,
课程号 char(3) not null,
成绩 decimal(3,1) null,primary key(学号,课程号),
constraint fk_xh foreign key (学号) references xs(学号) on delete cascade on update cascade,
constraint fk_kch foreign key (课程号) references xs(课程号) on delete cascade on update cascade
);
3
创建和维护数据库等操作/命令行方式
操作要求:
1.创建数据库。
数据库名:cjgl
字符集是:utf8 -- UTF-8 Unicode
排序规则:utf8_general_ci
cascade:级联。
如果xs表的学号删除,则对应cj表的学号也删除。
如果xs表的学号更新,则对应cj表的学号也更新。
1.1使用SQL 语句创建数据库cjgl。
1.2查看数据库属性。
①利用SHOW DATABASES 命令显示当前的所有数据库。
②利用SHOW CREATE DATABASE 命令显示cjgl 数据库的状态。1.3将数据库的字符编码改为utf8。
1.4选择数据库
①在命令行中选择cjgl数据库。
②用select database() 命令显示当前被打开的数据库。1.5数据库备份
用命令行方式将cjgl数据库进行备份
导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名
比如在命令行中输入命令 mysqldump -u root -p person >d:\person.sql 操作要求:
(1)使用SQL 语句创建数据库cjgl。
database cjgl;
(2)查看数据库属性。
#show databases;
用SHOW CREATE DATABASE 命令显示cjgl 数据库的状态
#show create database cjgl;
(3)将数据库的字符编码改为utf8。
#set names gbk;
#create database emp charset=gbk;
#alter stu ;
#show variables like '';
(4)选择数据库
在命令行中选择cjgl数据库:
#use cjgl;
用select database() 命令显示当前被打开的数据库:
#select database();
(5)数据库备份
用命令行方式将cjgl数据库进行备份
#如果导出单张表的话在数据库名后面输入表名即可。
#导出数据库:mysqldump -u 用户名 -p 数据库.名 > 导出的文件名
#mysqldump -u root -p person >d:\person.sql
(6)删除数据库。
1. 使用SQL 语句删除cjgl 数据库。
#delete from cjgl;
2. 利用SHOW DATABASES 命令显示当前的所有数据库。
#show databases;
(7)数据库恢复
用命令行方式将cjgl数据库进行恢复:
导入数据库
1、进入MySQL
2、新建一个数据库,这时是空数据库,如新建一个名为person的目标数据库
3、输入:mysql>use 目标数据库名 如输入:mysql>use person;
4、导入文件:mysql>source 导入的文件名; 如输入:mysql>source d:/person.sql
第八周周五
1.将xs表中王元的专业改为“智能建筑”。
# update xs set 专业名='智能建筑' where 姓名='王元';
# select * from xs where 姓名='王元';
2.把李伟的出生时间改为'1999-2-5'。
# update xs set 出生日期='1999-2-5' where 姓名='李伟';
3.把每门课的学分增加1分。把软件工程课的学分增加2分。
#update kc set 学分=学分+1;
# update kc set 学分=学分+2 where 课程名=’软件工程’;
4.将cj中的成绩分5个档,0-20为5档,20-40为4档,依此类推,每20分一档。在cj表添加一列“档次”,使用update命令填入各成绩档次。
#alter table cj add 档次 tinyint null;
#update cj
set 档次=(case
when 成绩>=0 and 成绩<20 then 5
when 成绩>=20 and 成绩<40 then 4
when 成绩>=40 and 成绩<60 then 3
when 成绩>=60 and 成绩<80 then 2
when 成绩>=80 and 成绩<=100 then 1
end);
5.删除xs中姓名为‘白天东’的记录。
# delete from xs where 姓名="白天东";
第九周周二
1.将xs表中李长江的专业改为“软件技术”。
#update xs set 专业名='软件技术' where 姓名='李长江';
2.将课程号为'101'的成绩+2分
#update kc set 学分=学分+2 where 课程号=101;
3.创建借书表格
#create table lib(
uid char(4) not null primary key,
uname varchar(20),
email varchar(20),
tnum varchar(15),
score int);
4.创建类别表
#create table category(
cid int not null primary key comment '类别编号',
cname varchar(16) comment '类别名称'
);
5.添加新的字段:联系地址。
#alter table user add 联系地址 varchar(50);
第十周周2
一、查询表中所有的列(用通配符*)
1.在学生成绩管理数据库cjgl中,查询学生表xs中每位同学的情况。
#use cjgl;
#select * from xs;
2.在学生成绩管理数据库cjgl中,查询课程表kc中每门课的情况。
#select * from kc;二、查询表中指定的列(用as可重新指定列名,as可省略)
1.在学生成绩管理数据库cjgl中,查询学生表xs每位同学的姓名、性别、出生时间、专业。
#select 姓名,性别,出生日期 as 出生时间, 专业名 as 专业 from xs;2.在学生成绩管理数据库cjgl中,查询课程表kc中每门课的课程名、学分。
#select 课程名,学分 from kc;
三、查询经过计算的列
1.在学生成绩管理数据库cjgl中,查询学生表xs中每位同学的学号、姓名、年龄。(用到year()、 CURDATE()或now()函数)
#select 姓名,学号, year(now())-year(出生日期) as 年龄 from xs;
2.在学生成绩管理数据库cjgl中,查询出学分对应的课程学时数(假设1学分计18学时)
#select 课程名,学分*18 as 学时 from kc;四、消除重复行
1.在学生成绩管理数据库cjgl中,查询选修了课程的学生学号(无重复学号)。 #select distinct 学号 from cj;
2.在学生成绩管理数据库cjgl中,查询学生表xs中各专业名称(无重复专业名称)。##select distinct 专业名 from xs ;
五、限制返回行数
1.在学生成绩管理数据库cjgl中,查询课程表kc中前3行记录。
#select * from kc limit 3;
2.在学生成绩管理数据库cjgl中,查询学生表xs中从第6个记录开始3行记录。(注意第一条记录位置是0)
#select * from xs limit 5,3第十周周5
一、表达式比较
1.在学生成绩管理数据库cjgl中,查询软件技术专业的学生情况。#select * from xs where 专业名='软件技术';
2.在学生成绩管理数据库cjgl中,查询软件技术专业男同学的情况。
#select * from xs where 专业名='软件技术' and 性别='男';3.在学生成绩管理数据库cjgl中,查询出年满27岁的学生信息。
法1#select * from xs where 出生日期<='1994-11-5';
法2#select * from xs where year(curdate())-year(出生日期)>=27;
法3#select * from xs where year(now()) - year(出生日期)>=27;二、范围比较
1.在学生成绩管理数据库cjgl中,查询1990年出生的学生情况。
法1#select * from xs where year(出生日期)=1990;法2#select * from xs where 出生日期 between '1990-1-1' and '1990-12-31';
2.在学生成绩管理数据库cjgl中,查询成绩表cj中成绩不在70--80之间的记录。
#select * from cj where 成绩 not between 70 and 80;
三、确定集合
1. 在学生成绩管理数据库cjgl中,查询选了课程号为“101”或“102”的同学学号。法1#select 学号 from cj where 课程号='101' or 课程号='102';
法2#select 学号 from cj where 课程号 in ('101','102');
2.在学生成绩管理数据库cjgl中,查询姓名为王元、王稼祥、程周杰的同学。
法1#select * from xs where 姓名='王元' or 姓名='王稼祥' or 姓名='程周杰';
法2#select * from xs where 课程号 in ('王元','王稼祥','程周杰');
四、模式匹配
1.在学生成绩管理数据库cjgl中,查找所有王姓同学的学号和姓名;#select 学号,姓名 from xs where 姓名 like '王%';
2.查询姓名中第2个汉字是“长”的同学的学号和姓名。
#select 姓名 from xs where 姓名 like '_长%';
五、空值判断
1.在学生成绩管理数据库cjgl中,查询没有考试成绩的学生的学号和相应的课程号。#select 学号,课程号 from cj where 成绩 is null;
2.在学生成绩管理数据库cjgl中,查询学生表xs中没有备注内容的学生学号、姓名。
#select 学号,姓名 from xs where 备注 is null;
第11周周2
分组统计查询
一 对查询结果进行排序:
1.在学生成绩管理数据库cjgl中,在成绩表cj中查询出课程号为'206'的成绩记录并按高分到低分排列。法1#select 成绩 from cj where 课程号='206'; #默认降序
法2#select 成绩 from cj where 课程号 order by 成绩 desc;
2.在学生成绩管理数据库cjgl中,将软件技术专业的学生按出生时间降序排序,出生时间相同的学生按学号升序排序。(desc表示降序,asc表示升序)#select * from xs where 专业名='软件技术';
#select * from xs where 专业名='软件技术' order by 出生日期 desc;
#select * from xs where 专业名='软件技术' order by 出生日期 desc,学号 asc;
一、聚合函数:
1.从学生成绩管理数据库cjgl的学生表xs中,统计出专业个数。(count()计数函数)#select count(distinct 专业名) from xs;
#select distinct 专业名 from xs;
2.从学生成绩管理数据库cjgl的学生表xs中,统计出总人数和男生人数。(count()计数函数)#select count(*) as 总人数 from xs;
#select count(性别) as 男生总人数 from xs where 性别='男';
3.在学生成绩管理数据库cjgl中,查询学号为‘001101’的学生的总分和平均分。(sum()求和函数,avg()求平均值函数)
#select * from cj where 学号='001101';
#select sum(成绩) as 总分,avg(成绩) as 平均分 from cj where 学号='001101';
#select sum(成绩) as 平均分 from cj where 学号='001101';
4.在学生成绩管理数据库cjgl中,查询选修206课程的学生的最高分和最低分。(max()求最大值函数,min()求最小值函数)#select 成绩 from cj where 课程号='206';
#select max(成绩) from cj where 课程号='206';
#select max(成绩) as 最高分,min(成绩) as 最低分 from cj where 课程号='206';
第11周周4
1.在学生成绩管理数据库cjgl中,查询各专业的学生人数,要求显示专业名称和人数两列;查询每位学生的学号及选课的门数。
#select 专业名,count(*) as 人数 from xs group by 专业名;
#select 学号,count(课程号) as 选课门数 from cj group by 学号;
2.在学生成绩管理数据库cjgl中,查询每位学生的总分和平均分,要求显示学号、总分、平均分。
#select 学号,sum(成绩) as 总分,avg(成绩) as 平均分 from cj group by 学号;
3.在学生成绩管理数据库cjgl中,查询每门课的最高分和最低分,要求显示课程号、最高分、最低分。
# select 课程号,min(成绩) as 最低分,max(成绩) as 最高分 from cj group by 课程号;
4.在学生成绩管理数据库cjgl中,在课程表kc中查询开设课程在2门以上(含两门)的学期。
法一#select 开课学期,count(*) as 开设课程门数 from kc group by 开课学期 having count(*)>=2;
法二#select 开课学期,count(课程名) as 开设课程门数 from kc group by 开课学期 having count(课程号)>=2;
5.在学生成绩管理数据库cjgl中,查询选课在3门以上且各门课均及格的学生的学号及其总分。
法一#select 学号,sum(成绩) as 总分 from cj where 成绩>=60 group by 学号 having count(课程号)>=3;
法二#select 学号,sum(成绩) as 总分 from cj where 成绩>=60 group by 学号 having count(*)>=3;
在学生成绩管理数据库cjgl中,由学生表xs创建网络技术专业学生表wlxs,包括学号、姓名和性别。
#首先查询专业学生#select 学号,姓名,性别,专业名 from xs where 专业名='网络技术';
#create table wlxs (select 学号,姓名,性别,专业名 from xs where 专业名='网络技术');
#select * from wlxs;
第11周周5
1.在学生成绩管理数据库cjgl中,查询软件技术专业和网络技术专业学生的姓名,不包括重复的姓名。
#select 学号,姓名 from xs where 专业名=‘软件技术' union select 学号,姓名 from xs where 专业名='网络技术'; #不包括重复的姓名
#select 学号,姓名 from xs where 专业名=‘软件技术' union all select 学号,姓名 from xs where 专业名='网络技术'; #包括重复的姓名2.在学生成绩管理数据库cjgl中,新建两个表:软件技术专业学生表rjxs、网络技术专业学生表wlxs2,分别存储两个专业的学生情况,表结构与学生表xs相同,将这两表的数据合并到newxs表中。(注:newxs表事先建立, 并且其结构与xs表相同)
#create table newxs like xs;
create table rjxs (select * from xs where 专业名 = '软件技术');
create table wlxs2 (select * from xs where 专业名 = '网络技术');
insert into newxs select * from rjxs union select * from wlxs2;
第5章实训项目
项目1:在网上书店数据库中进行简单查询
(1)查询会员表,输出积分高于500的会员昵称和联系电话
#select uname, tnum from user where score>=500;
(2)查询会员表,输出积分低于200的会员的昵称和联系电话,并且分别用英文username、telephone指定别名
#select uname as uername, tnum as telephone from user where score<=200;
(3)查询会员表,输出e-mail是QQ邮箱的会员的昵称和e-mail
#select uname, email from user where email like '%qq%';
(4)查询订购表,输出订购日期是2016年10月的订单的详细信息
#select * from b_order where orderdate like '2016-10%';
#select * from b_order where orderdate between '2016-1-1' and '2016-12-31';
(5)查询订购表,输出订货的会员的编号,要求删除重复行
#select distinct(uid) from b_order;
(6)查询图书表,输出图书的名称和价格,并把查询结果按价格降序排列#select bname, price from book where order by price desc;
#select bname, price from book order by price desc;(7)查询图书表,输出价格最高的三种图书的名称和价格
#select bname, price from book where order by price desc limit 3;#select bname, price from book order by price desc limit 0,3;
第12周2
项目2:在网上书店数据库查询中使用集合函数
(1)查询图书表,输出所有图书的最高价格,最低价格,平均价格
#select max(price) as 最高价格, min(price) as 最低价格, avg(price) as 平均价格 from book;
(2)查询图书表,输出每一类图书的数量#select cid as 书籍类别,count(id) as 类别数 from book group by cid;
(3)查询图书表,输出每一类图书的最高价格,最低价格,平均价格
#select cid as 图书类别,max(price) 最高价格,min(price) 最低价格,avg(price) 平均价格 from book group by cid;
(4)查询订购表,输出订购超过3本的会员的编号和订购数量
#select uid as 会员编号, sum(ordernum) as 订购数量 from b_order group by 会员编号 having 订购数量>3;
第12周周5
(1)在学生成绩管理数据库cjgl中,列出学生所有可能的选课情况。
#select xs.*, kc.* from xs cross join kc;
#select xs.*, kc.* from xs, kc;(2)请用from子句连接查询实现以下查询:
在学生成绩管理数据库cjgl中,查找每个学生的情况及选修的课程情况。
#select xs.*, cj.* from xs cross join cj where xs.学号 = cj.学号;
(3)请用from子句连接查询实现以下查询:
在学生成绩管理数据库cjgl中,查找每个学生的情况及选修的课程情况(不允许有重复列)。 #select xs.*, cj.课程号, cj.成绩 from xs cross join cj where xs.学号 = cj.学号;
#select xs.学号, 姓名, 课程名 as 选修的课程名, 成绩 from xs, cj, kc where xs.学号 = cj.学号 and kc.课程号 = cj.课程号;
(4)在学生成绩管理数据库cjgl中,查找学号、姓名、选修的课程名及成绩。
#select xs.学号, xs.姓名, kc.课程名, cj.成绩 from xs, cj, kc where xs.学号 = cj.学号 and kc.课程号 = cj.课程号;
(5)在学生成绩管理数据库cjgl中,查找选修了课程号为206的课程的学生的情况。
#select xs.*, 成绩, 课程号 from xs, cj where xs.学号 = cj.学号 and 课程号 = 206;
#select cj.学号, 课程号 from cj where 课程号 = 206;
#select * from xs where 学号 in(select 学号 from cj where 课程号 = 206);
(6)在学生成绩管理数据库cjgl中,查找李明的学生。如果有,则提示“找到了!”,否则提示“没找到!”。
#select if(exists(select * from xs where 姓名='李白'),'找到了','没找着');
(7)如果有需要补考的,就显示所有学生的成绩信息。如果没有需要补考的,就不输出任何信息。
#select if(exists(select * from cj where 成绩<60),'有不及格','没有不及格');
(8)查询与王元同一个专业的学生学号、姓名。
#select 学号,姓名 from xs where 专业名=(select 专业名 from xs where 姓名='王元');(9)查询其它专业中比软件技术专业学生年龄都小的学生。
#select year(now()) - year(出生日期) from xs where 专业名='软件技术'; #select * from xs where 专业名!='软件技术' and (year(curdate())-year(出生日期))<all(select year(curdate())-year(出生日期) from xs where 专业名='软件技术');
第十四周
1.选择列和行
查询表中含有哪些国家的信息
select * from country;
条件选择行
查询表中国家代码为1的国家的情况
select * from country where cid=1;
对查询结果进行排序
查询表中所有国家的累计确诊人数排名前三的国家
select *from country; order by usm asc limit 3;
利用函数查询
在country表中统计国家个数
select cid(国家代码) as 总数 from cid;
分组统计查询
在表中统计各个国家的累计治愈人数,要求显示国家名称和人数
select cid,cure as Scure from datas group by cure
6.将国家代码为33的信息删除
delete * from datas where cid=’33’;
选择列和行
在新冠疫情数据库中,查询datas表中含有哪些国家的信息
select * from datas;
条件选择行
在新冠疫情数据库中,查询datas表中国家代码为1的国家的情况
select * from datas where 国家代码=1;
对查询结果进行排序
在新冠疫情数据库中,查询datas表中所有国家的累计确诊人数排名前三的国家
select *from datas order by 累计 asc limit 3;
利用函数查询
在新冠疫情数据库中,在country表中统计国家个数
select count(国家代码) as 总数 from country;
分组统计查询
在新冠疫情数据库中,在datas表中统计各个国家的累计治愈人数,要求显示国家名称和人数
select 国家代码,治愈 as 总治愈 from datas group by 治愈;
6. 指定查询
死亡人数在2000以内的国家有哪些
Select * from datas where 死亡<2000;
7.将国家代码为33的信息删除
delete * from datas where 国家代码=’33’;
8在新冠疫情表中,查询xgyq表中国家代码为86的国家情况。
select * from xgyq where country_code=86;9. 新建表new,合并国家代码1,7的数据到新表
create table new like datas;
insert into new(select * from datas where 国家代码='1' and 国家代码='7');
10. 修改dataset 表的 国家代码 为 uid
Alter table datas change 国家代码 uid int(6);
11. 哪些国家新增大于死亡
Select
*from datas where 新增>死亡;
第5章实训项目
项目3:在网上书店数据库查询中使用连接查询和子查询
1.输出所有图书的图书名称、价格以及所属类别名称
# select bname,price,cname from book, category where book.cid=category.cid;# select bname,price,cname from book join category on book.cid=category.cid;
2.输出订购了“平凡的世界”的会员昵称、联系电话、订购数量
#select uname, tnum,ordernum from user,b_order,book where user.uid=b_order.uid and book.bid=b_order.bid and bname='平凡的世界';3.输出订购了图书的会员的昵称和联系电话
#select distinct(uname), tnum from user, b_order, book where user.uid = b_order.uid and b_order.bid = book.bid;
#select uname, tnum from user where uid in (select distinct uid from b_order);
4.输出没人订购的图书的名称和价格
#select bname, price from book where bid not in (select distinct bid from b_order);
5.输出详细订购信息,包括订购图书的会员呢称,联系电话,所订图书名称,数量,价格,折扣价
#select uname, tnum, bname, ordernum, price, discount from book, b_order, user where user.uid = b_order.uid and book.bid = b_order.bid;
十四周周五
一、左外链接
1.在学生成绩管理数据库cjgl中,查找所有学生情况及他们选修的课程号,若学生未选修任何课,也要包括其情况。
#select xs.*, cj.课程号 from xs LEFT JOIN cj on xs.学号 = cj.学号;二、右外链接
1.在学生成绩管理数据库cjgl中,查找被选修了的课程情况和所有开设的课程名。
#select kc.*, cj.课程号 from kc right join cj on kc.课程号 = cj.课程号;三、变量
1.创建一个用户变量name并赋值。
#set @name='李明';
或#set @name='李明';
或#select @name='李明'; 2.使用查询结果给变量赋值
查询学号为001109的学生的姓名的查询结果,给用户变量@name赋值
#set @name =(select 姓名 from xs where 学号='001109');
或#select 姓名 into @name from xs where 学号='001109';
3.查询xs表中姓名为@name值的学生信息。
select * from xs where 姓名 = (select(@name));
或#select * from xs where 姓名 = @name;
四、局部变量的作用范围是在begin ...end 语句块中。
1.编写一个用户自定义函数,返回课程总数。
不详细讲解“定义函数”,只重点看看:局部变量声明的位置是在函数的内部或者过程的内部。
函数定义:
create function kczs( )
returns tinyint
begin
declare n tinyint;
set n=(select count(*) from kc) ;
return n ;
end;函数调用:
select kczs( );
五、调用
1.在cjgl数据库中创建一个名为rjxs的存储过程,功能是显示学生表xs中专业为“软件技术”的所有记录。
select * from xs where 专业名 = '软件技术';
create procedure rjxs()
begin
select * from xs where 专业名 = '软件技术';
end;2.调用以上存储过程。
call rjxs;六、
1.在cjgl数据库中创建一个名称为P_xsxx的存储过程,功能是根据给定的学号显示该学号学生的所有信息。
select * from xs where 学号 = '001107';
select * from xs where 学号 = '001216';
create procedure P_xsxx(XH char(6))
begin
select * from xs where 学号 = XH;
end;六扩展:
在cjgl数据库中创建一个名称为P_xsxm的存储过程,功能是根据给定的姓名显示该学生的所有信息。
create procedure P_xsxm(XM char(6))
begin
select * from xs where 姓名 = XM;
end;
call P_xsxm ('孙楠楠');
mysql期末大作业13道选题 mysql数据库大作业
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章