目录
实训一:数据定义和操纵(4课时)
初识MySQL数据库
第1关:创建数据库
第2关:创建表
第3关:使用主键约束
第4关:外键约束
第5关:添加常用约束
DDL语言的使用
第1关:创建数据库
第2关: 创建表
第3关:添加字段
第4关:删除字段
第5关:修改字段
第6关:添加唯一性约束
DML语言的使用
第1关:insert...into方式插入数据
第2关:更新数据
第3关:更新数据-练习
第4关:删除数据
第5关:创建表-练习
第6关:删除数据-练习1
第7关:删除数据-练习2
MySQL数据库 - 数据更新
第1关:插入数据
第2关:更新数据
第3关:删除数据
MySQL数据库 - 数据库和表的基本操作(一)
第1关:查看表结构与修改表名
第2关:修改字段名与字段数据类型
第3关:添加与删除字段
第4关:修改字段的排列位置
第5关:删除表的外键约束
实训二:单表查询(4课时)
单表查询(一)student表查询
第1关:选择列查询
第2关:去除重复结果
第3关:范围查询
第4关:带IN关键字的查询
第5关:匹配查询
第6关:范围查询-练习
第7关:where子句查询
单表查询(二)基本查询
第1关:基本查询语句
第2关:带 IN 关键字的查询
第3关:带 BETWEEN AND 的范围查询
单表查询(三)聚集函数
第1关:COUNT( )函数
第2关:COUNT( )函数-练习
第3关:AVG( )函数、MAX函数和MIN函数
第4关:分组查询
第5关:倒序排列
单表查询(四)-分组操作符与聚集函数
第1关:数据统计(初级)
第2关:数据统计初级应用
第3关:数据统计综合应用
单表查询(五)排序和分组
第1关:对查询结果进行排序
第2关:分组查询
第3关:使用 LIMIT 限制查询结果的数量
单表查询(六)综合查询
第1关:基本查询语句
第2关:带 IN 关键字的查询
第3关:带 BETWEEN AND 的范围查询
第4关:带 LIKE 的字符匹配查询
第5关:查询空值与去除重复结果实训三:多表查询(4课时)
第6关:带 AND 与 OR 的多条件查询
第7关:对查询结果进行排序
第8关:分组查询
第9关:使用 LIMIT 限制查询结果的数量
实训三:多表查询(4课时)
多表查询-子查询(一)
第1关:子查询
第2关:子查询-练习
第3关:子查询-练习一
第4关:子查询-练习二
第5关:子查询-练习三
第6关:子查询-练习四
多表查询 - 子查询(二)
第1关:带比较运算符的子查询
第2关:关键字子查询
多表查询-连接查询(一)
第1关:自然连接
第2关:等值连接
第3关:JOIN连接
第4关:自身连接查询
第5关:外部连接查询
多表查询- 连接查询(二)
第1关:内连接查询
第2关:外连接查询
第3关:复合条件连接查询
大学数据库创建与查询实战
第1关:数据库表设计
第2关:查询(一)
第3关:查询(二)
第4关:查询(三)
第5关:查询(四)
第6关:查询(五)
实训四:索引与视图(2课时)
MySQL开发技巧 - 索引第1关:索引
MySQL开发技巧 - 视图
第1关:视图
索引(teachingdb数据库)
第1关:索引
第2关:删除索引-练习
SQL视图(teachingdb数据库)
第1关:创建视图
第2关:创建视图-练习一
MySQL-索引和视图
第1关:建立索引
第2关:建立视图并更新视图
第3关:建立基于多表的视图
实训五:数据库安全控制(2课时)
创建用户
第1关:创建用户
第2关:创建用户-练习!!!
授权及回收权限
第1关:授权
第2关:授权-练习一
第3关:授权-练习二
第4关:授权-练习三
第5关:回收权限
MySQL-安全性控制
第1关:用户和权限
第2关:用户、角色与权限
MySQL数据库 - 授权与撤销授权
第1关:数据库授权
第2关:数据库撤销权限
实训六:数据完整性
实训七:存储过程与触发器(4课时)
存储过程、函数与触发器
第1关:创建存储过程
第2关:创建函数-count_credit
第3关:存储过程-调用函数count_credit
第4关:创建触发器-计算总学分!!!
第5关:创建触发器-练习级联删除操作
存储过程
第1关:建立和调用存储过程(不带输出参数的存储过程)
第2关:建立和调用存储过程(带输出参数)
第3关:建立和调用存储函数
第4关:修改多个数据表的存储过程
第5关:使用游标的存储过程
实训一:数据定义和操纵(4课时)
初识MySQL数据库
第1关:创建数据库
mysql -uroot -p123123 -h127.0.0.1 create database MyDb; show databases;
第2关:创建表
mysql -uroot -p123123 -h127.0.0.1 create database TestDb; create table t_emp( id int, name varchar(32), deptId int , salary float);
第3关:使用主键约束
mysql -uroot -p123123 -h127.0.0.1 create database MyDb; use MyDb; create table t_user1( userId INT PRIMARY KEY, name VARCHAR(32), password VARCHAR(11), phone VARCHAR(11), email VARCHAR(32)); create table t_user2( name VARCHAR(32), phone VARCHAR(11), email VARCHAR(32), PRIMARY KEY(name,phone));
第4关:外键约束
mysql -uroot -p123123 -h127.0.0.1 create database MyDb; use MyDb; CREATE TABLE t_class ( id INT PRIMARY KEY, name VARCHAR(22) ); CREATE TABLE t_student ( id INT PRIMARY KEY, name VARCHAR(22) , classId int, CONSTRAINT fk_stu_class1 FOREIGN KEY(classId) REFERENCES t_class(id) );
第5关:添加常用约束
mysql -uroot -p123123 -h127.0.0.1 CREATE DATABASE MyDb; USE MyDb; CREATE TABLE t_user ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(32) NOT NULL UNIQUE, sex VARCHAR(4) DEFAULT '男' )DEFAULT CHARSET=utf8;
DDL语言的使用
第1关:创建数据库
create database teachingdb;
第2关: 创建表
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ create table student( sno char(5) primary key, sname varchar(20) NOT null, sdept varchar(20) not null, sclass char(2) not null, ssex char(1), birthday date, totalcredit decimal(4,1) ); /**********End**********/
第3关:添加字段
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ alter table student add nativeplace varchar(20); -- alter table student add nativeplace varchar(20); /**********End**********/
第4关:删除字段
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ ALTER TABLE student DROP nativeplace; /**********End**********/
第5关:修改字段
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ ALTER TABLE student MODIFY ssex varchar(3); /**********End**********/
第6关:添加唯一性约束
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ alter table course add constraint uk_cno unique(cname); /**********End**********/
DML语言的使用
第1关:insert...into方式插入数据
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ INSERT INTO student VALUES (11111,'马明','计算机','01','女','2000-01-02',null); /**********End**********/
第2关:更新数据
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ UPDATE student SET totalcredit = 2.0 /**********End**********/ -- update student set totalcredit=2.0;
第3关:更新数据-练习
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ UPDATE student SET birthday = '2000-01-22' WHERE sname='马小燕'; /**********End**********/
第4关:删除数据
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ DELETE FROM student WHERE sno = '11111'; /**********End**********/
第5关:创建表-练习
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ -- select * from student ; create table s1 as select * from student; /**********End**********/
第6关:删除数据-练习1
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ DELETE FROM s1 WHERE sdept='计算机'; /**********End**********/
第7关:删除数据-练习2
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ drop table s1 ; /**********End**********/
MySQL数据库 - 数据更新
第1关:插入数据
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## bundle insert the value ######### INSERT INTO tb_emp(Id,Name,DeptId,Salary) VALUES (1,"Nancy",301,2300.00), (2,"Tod",303,5600.00),(3,"Carly",301,3200.00); ########## End ########## SELECT * FROM tb_emp; ########## End ##########
第2关:更新数据
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## update the value ########## UPDATE tb_emp SET Name="Tracy",DeptId=302,Salary=4300.00 WHERE id=3; ########## End ########## SELECT * FROM tb_emp; ########## End ##########
第3关:删除数据
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## delete the value ########## DELETE FROM tb_emp WHERE Salary>3000; ########## End ########## SELECT * FROM tb_emp; ########## End ##########
MySQL数据库 - 数据库和表的基本操作(一)
第1关:查看表结构与修改表名
USE Company; ########## Begin ########## ########## modify the table name ########## ALTER table tb_emp RENAME jd_emp; ########## show tables in this database ########## show tables; ########## describe the table ########## describe jd_emp; ########## End ##########
第2关:修改字段名与字段数据类型
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## change the column name ########## ALTER TABLE tb_emp change Id prod_id int(11); ########## change the data type of column ########## ALTER TABLE tb_emp MODIFY Name varchar(30); ########## End ########## DESCRIBE tb_emp;
第3关:添加与删除字段
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## add the column ########## ALTER TABLE tb_emp ADD Country varchar(20) AFTER Name; ########## delete the column ########## ALTER TABLE tb_emp DROP Salary; ########## End ########## DESCRIBE tb_emp;
第4关:修改字段的排列位置
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## modify the column to top ########## ALTER TABLE tb_emp MODIFY Name varchar(25) FIRST; ########## modify the column to the rear of another column ########## ALTER TABLE tb_emp MODIFY DeptId int(11) AFTER Salary; ########## End ########## DESCRIBE tb_emp;
第5关:删除表的外键约束
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## delete the foreign key ########## ALTER TABLE tb_emp DROP FOREIGN KEY emp_dept; ########## End ########## SHOW CREATE TABLE tb_emp \G;
实训二:单表查询(4课时)
单表查询(一)student表查询
第1关:选择列查询
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select sno 学号, sname 姓名 from student where birthday >= "2000.1.1" and birthday ='80' and grade=(select max(price) from printer); -- ********** End ********** -- GO
第3关:数据统计综合应用
USE test_wyy_db_guet Go SET NOCOUNT ON ---------- 第1题 ---------- -- ********** Begin ********** -- select hd from V_test group by hd having count(*) 1000 group by maker; -- ********** End ********** -- GO ---------- 第4题 ---------- -- ********** Begin ********** -- select maker,type,AVG(price) from V_test group by maker,type; -- ********** End ********** -- GO
单表查询(五)排序和分组
第1关:对查询结果进行排序
USE School; #请在此处添加实现代码 ########## Begin ########## ########## 查询1班同学的所有信息以成绩降序的方式显示结果 ########## select * from tb_score where class_id = 1 order by score desc; ########## End ##########
第2关:分组查询
USE School; #请在此处添加实现代码 ########## Begin ########## ########## 对班级名称进行分组查询 ########## SELECT * FROM tb_class GROUP BY class_id; ########## End ##########
第3关:使用 LIMIT 限制查询结果的数量
USE School; #请在此处添加实现代码 ########## Begin ########## ########## 查询班级中第2名到第5名的学生信息 ########## SELECT * FROM tb_score order by score desc LIMIT 1,4; ########## End ##########
单表查询(六)综合查询
第1关:基本查询语句
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## retrieving the Name and Salary ########## select Name,Salary from tb_emp; ########## retrieving all the table ########## select * from tb_emp; ########## End ##########
第2关:带 IN 关键字的查询
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## retrieving the Name and Salary with IN statement ########## SELECT Name,Salary FROM tb_emp WHERE Id NOT IN (1); ########## End ##########
第3关:带 BETWEEN AND 的范围查询
USE Company; #请在此处添加实现代码 ########## Begin ########## ########## retrieving the Name and Salary with BETWEEN AND statement ########## SELECT Name,Salary FROM tb_emp WHERE Salary BETWEEN 3000 AND 5000; ########## End ##########
第4关:带 LIKE 的字符匹配查询
USE Company; ######### Begin ######### SELECT Name,Salary FROM tb_emp WHERE Name LIKE "C%"; ######### End #########
第5关:查询空值与去除重复结果实训三:多表查询(4课时)
USE Company; ######### Begin ######### SELECT * FROM tb_emp WHERE DeptId IS NULL; ######### End ######### ######### Begin ######### SELECT DISTINCT Name FROM tb_emp; ######### End #########
第6关:带 AND 与 OR 的多条件查询
USE Company; ######### Begin ######### SELECT * FROM tb_emp WHERE DeptId=301 AND Salary > 3000; ######### End ######### ######### Begin ######### SELECT * FROM tb_emp WHERE DeptId=301 OR DeptId=303; ######### End #########
第7关:对查询结果进行排序
USE School; #请在此处添加实现代码 ########## Begin ########## ########## 查询1班同学的所有信息以成绩降序的方式显示结果 ########## select * from tb_score where class_id = 1 order by score desc; ########## End ##########
第8关:分组查询
USE School; #请在此处添加实现代码 ########## Begin ########## ########## 对班级名称进行分组查询 ########## SELECT * FROM tb_class GROUP BY class_id; ########## End ##########
第9关:使用 LIMIT 限制查询结果的数量
USE School; #请在此处添加实现代码 ########## Begin ########## ########## 查询班级中第2名到第5名的学生信息 ########## SELECT * FROM tb_score order by score desc LIMIT 1,4; ########## End ##########
实训三:多表查询(4课时)
多表查询-子查询(一)
第1关:子查询
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select sname, birthday from student where birthday第2关:子查询-练习
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select student.sno,student.sname from student left join score on student.sno=score.sno where score.sno is null; /**********End**********/第3关:子查询-练习一
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select sname,sdept,birthday from student where birthday第4关:子查询-练习二
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select student.sname,student.sdept from student,score where student.sno=score.sno and score.cno="004"; /**********End**********/第5关:子查询-练习三
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select score.sno from score where cno in (select score.cno from score,student where student.sno=score.sno and student.sname='刘东明') and score.sno not in(select student.sno from student where student.sname='刘东明') group by sno having count(cno) >=(select count(cno) from score,student where score.sno=student.sno and student.sname='刘东明') /**********End**********/第6关:子查询-练习四
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select distinct score.sno from score group by sno having count(cno) >=(select count(cno) from course); /**********End**********/多表查询 - 子查询(二)
第1关:带比较运算符的子查询
USE Company; #请在此处添加实现代码 ########## Begin ########## #1.查询大于所有平均年龄的员工姓名与年龄 select name, age from tb_emp where age > (select avg(age) from tb_emp );第2关:关键字子查询
USE Company; #请在此处添加实现代码 ########## Begin ########## #1.使用 ALL 关键字进行查询 select position,salary from tb_salary where salary >(select max(salary) from tb_salary where position="Java"); #2.使用 ANY 关键字进行查询 select position,salary from tb_salary where salary >(select min(salary) from tb_salary where position="Java"); #3.使用 IN 关键字进行查询 select position,salary from tb_salary where position="Java"; ########## End ##########多表查询-连接查询(一)
第1关:自然连接
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select student.sname,course.cname,teach.tname,score.grade from student,score,course,teach where student.sno=score.sno and score.tno=teach.tno and score.cno=course.cno and teach.tname="严敏" and course.cname="数学分析"; /**********End**********/第2关:等值连接
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select student.sname,course.cname,teach.tname,score.grade from student,score,course,teach where student.sno=score.sno and score.tno=teach.tno and score.cno=course.cno and teach.tname="严敏" and course.cname="数学分析"; /**********End**********/第3关:JOIN连接
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select student.sname,course.cname,teach.tname,score.grade from student,score,course,teach where student.sno=score.sno and score.tno=teach.tno and score.cno=course.cno and teach.tname="严敏" and course.cname="数学分析"; /**********End**********/第4关:自身连接查询
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select s2.sname,s2.birthday from student s1,student s2 where s1.sname="刘东明" and s1.birthday>s2.birthday; /**********End**********/第5关:外部连接查询
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ select student.sno,student.sname from student left join score on student.sno=score.sno where score.sno is null; /**********End**********/多表查询- 连接查询(二)
第1关:内连接查询
USE School; ########## 查询数据表中学生姓名和对应的班级 ########## #请在此处添加实现代码 ########## Begin ########## select tb_student.name studentName,tb_class.name className from tb_student,tb_class where tb_student.class_id=tb_class.id ########## End ##########第2关:外连接查询
USE School; ########## 使用左外连接查询所有学生姓名和对应的班级 ########## #请在此处添加实现代码 ########## Begin ########## select s1.name studentName,s2.name className from tb_student s1 left join tb_class s2 on s1.class_id=s2.id; ########## End ########## ########## 使用右外连接查询所有学生姓名和对应的班级 ########## #请在此处添加实现代码 ########## Begin ########## select s1.name studentName,s2.name className from tb_student s1 right join tb_class s2 on s1.class_id=s2.id; ########## End ##########第3关:复合条件连接查询
USE School; ########## 查询所有班级里分数在90分以上的学生的姓名和学生的成绩以及学生所在的班级 ########## #请在此处添加实现代码 ########## Begin ########## select tb_student.name studentName,tb_student.score,tb_class.name className from tb_student,tb_class where tb_student.class_id=tb_class.id and score>90; ########## End ##########大学数据库创建与查询实战
第1关:数据库表设计
use universityDB; create table instructor( ID varchar(5) ,primary key(ID), name varchar(20) NOT NULL, dept_name varchar(20) DEFAULT NULL , salary numeric(8,2) check(salary>29000), foreign key (dept_name) references department(dept_name) on delete set null ); create table section( course_id varchar(8) , sec_id varchar(8) , semester varchar(6) check(semester in('Fall','Winter','Spring','Summer')), year numeric(4,0) , building varchar(15) , room_number varchar(7) , time_slot_id varchar(4) , primary key (course_id, sec_id, semester, year), foreign key (course_id) references course(course_id) on delete cascade, foreign key (building, room_number) references classroom(building, room_number) ); ########## End ##########第2关:查询(一)
#********* Begin *********# echo " select name from student where dept_name='Biology'; select name from instructor where salary> any(select salary from instructor where dept_name='Biology'); select name,department.dept_name,building from instructor ,department where instructor.dept_name=department.dept_name; select distinct instructor.dept_name from instructor,department where instructor.dept_name=department.dept_name and building='Watson'; " #********* End *********#第3关:查询(二)
#********* Begin *********# echo " select count(distinct ID) from teaches where semester ='spring' and year='2010'; select instructor.ID,name,dept_name from teaches,instructor where semester='Fall'and year='2009' and teaches.ID=instructor.ID group by ID having count(distinct course_id)=2; select dept_name, count(distinct instructor.ID) as instr_count from instructor,teaches where semester='Spring' and year='2010' and instructor.ID=teaches.ID group by dept_name having count(distinct course_id)>=1 " #********* End *********#第4关:查询(三)
#********* Begin *********# echo " select instructor.* from instructor order by salary desc,name asc ; select max(salary) from instructor; select dept_name from instructor group by dept_name having avg(salary)=( select max(avgs) from(select avg(salary) avgs,dept_name from instructor group by dept_name) a); select dept_name, avg(salary) as avg_salary from instructor group by dept_name having avg(salary)>50000 order by dept_name asc,avg(salary) desc; " #********* End *********#第5关:查询(四)
#********* Begin *********# echo " select distinct course_id from section where semester='Fall' and year=2009 and course_id not in (select course_id from section where semester='Spring' and year=2010); select course_id from section as S where year=2009 and semester='Fall' and exists (select section.* from section as T where year=2010 and semester='Spring' and S.course_id=T.course_id); select course_id from section where year=2009 and semester='Fall' union all select course_id from section where year=2010 and semester='Spring'; select course_id,semester,year,sec_id,avg(tot_cred) from takes join student join department on takes.ID = student.ID where year=2009 group by course_id,semester,year,sec_id having count(takes.ID)>=13; " #********* End *********#第6关:查询(五)
#********* Begin *********# echo " select instructor.name,teaches.course_id from instructor,teaches where instructor.ID=teaches.ID and dept_name='Physics'; select name from instructor where dept_name='Physics' and salary>80000; update instructor set salary = case when salary
还没有评论,来说两句吧...