操作操作操作操作操作操作
一
1、创建学生数据库
create database mystudent charset utf8;
2、分别输入创建表命令
1)创建Student表
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件,Sno是主码*/
Sname CHAR(20) UNIQUE, /* Sname取唯一值*/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
)charset utf8;
2)创建Course表
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno)
) charset utf8;
3)创建SC表
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY (Sno,Cno),
/* 主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY (Sno) REFERENCES Student(Sno),
/* 表级完整性约束条件,Sno是外码,被参照表是Student */
FOREIGN KEY (Cno) REFERENCES Course(Cno)
/* 表级完整性约束条件, Cno是外码,被参照表是Course*/
) charset utf8;
(2)student专业表
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件,Sno是主码*/
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept numeric(2,0),
FOREIGN KEY(sdept) REFERENCES sdept(Deptno)
/*在表级定义参照完整性*/
)charset utf8;
二 数据更新
1)在student表中输入1条数据
insert into student (sno,sname) values ('201215121','李勇');
3)在student表中输入4条数据
insert into student values('201215121','李勇','男',20,'CS'),('201215122','刘晨','女',19,'CS'),('201215125','张立','男',19,'IS'),('201215123','王敏','女',18,'MA');
6)在sc表中输入5条数据
insert into sc values ('201215121','1',92), ('201215121','2',85), ('201215121','3',88), ('201215122','2',90),('201215122','3',80);
5)在course表中一次输入7条数据
insert into course(cno,cname,cpno,Ccredit) values('1','数据库',5,4),('2','数学',null,2),('3','信息系统',1,4),('4','操作系统',6,3),('5','数据结构',7,4),('6','数据处理',null,2),('7','PASCAL语言',6,4);
- 分别用update命令输入Cpno列的数据
UPDATE course SET cpno=5 WHERE cno=1;
UPDATE course SET cpno=1 WHERE cno=3;
UPDATE course SET cpno=6 WHERE cno=4;
UPDATE course SET cpno=7 WHERE cno=5;
UPDATE course SET cpno=6 WHERE cno=7;
建立索引
2)建立索引
为学生-课程数据库中的Student,Course,SC三个表建立索引。Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引
create unique index Stusno on Student(Sno);
create unique index Coucno ON Course(Cno);
create unique index SCno ON SC(Sno ASC,Cno DESC);
- 查看上述命令执行后各表中索引的变化。
3)删除索引
删除Student表的sname索引
drop index sname on student;
4)修改索引
将SC表的SCno索引名改为SCSno
Mysql5.7以上:alter table sc rename index SCno TO SCSno
Mysql5.7以下:删掉索引,重新建立索引
drop index scno ON sc;
create unique index SCSno on sc(Sno ASC,Cno DESC);
查询
查询全体学生的学号与姓名。
SELECT Sno,Sname
FROM Student;
[例3.17] 查询全体学生的姓名、学号、所在系。
SELECT Sname,Sno,Sdept
FROM Student;
[例3.18] 查询全体学生的详细记录
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student;
或
SELECT *
FROM Student;
查全体学生的姓名及其出生年份。
SELECT Sname,2014-Sage /*假设当时为2014年*/
FROM Student;
查询计算机科学系全体学生的名单。
SELECT Sname
FROM Student
WHERE Sdept=‘CS’;
创建视图
建立信息系学生的视图。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= 'IS';
建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生 。
CREATE VIEW IS_Student1
AS
SELECT Sno,Sname,Sage
FROM Student
试图插入
别向信息系学生视图IS_Student和IS_Student1中插入一个新的学生记录,查看区别:
INSERT
INTO IS_Student
VALUES(‘201215129’,’赵新’,20);
INSERT
INTO IS_Student1
VALUES(‘201215130’,’赵力’,18);
触发器
(3)创建user表插入事件对应的触发器tri_insert_user;
DROP TRIGGER IF EXISTS `tri_insert_user`;
DELIMITER ;;
CREATE TRIGGER `tri_insert_user` AFTER INSERT ON `user` FOR EACH ROW BEGIN
INSERT INTO user_history(user_id, operatetype, operatetime) VALUES (new.id, 'add a user', NOW());
END
;;
DELIMITER ;
几点说明:
DELIMITER:改变输入的结束符,默认情况下输入结束符是分号;,这里把它改成了两个分号;;,这样做的目的是把多条含分号的语句做个封装,全部输入完之后一起执行,而不是一遇到默认的分号结束符就自动执行;
new:当触发插入和更新事件时可用,指向的是被操作的记录
old: 当触发删除和更新事件时可用,指向的是被操作的记录
(4)创建user表更新事件对应的触发器tri_update_user;
DROP TRIGGER IF EXISTS `tri_update_user`;
DELIMITER ;;
CREATE TRIGGER `tri_update_user` AFTER UPDATE ON `user` FOR EACH ROW BEGIN
INSERT INTO user_history(user_id,operatetype, operatetime) VALUES (new.id, 'update a user', NOW());
END
;;
DELIMITER ;
(5)创建user表删除事件对应的触发器tri_delete_user;
DROP TRIGGER IF EXISTS `tri_delete_user`;
DELIMITER ;;
CREATE TRIGGER `tri_delete_user` AFTER DELETE ON `user` FOR EACH ROW BEGIN
INSERT INTO user_history(user_id, operatetype, operatetime) VALUES (old.id, 'delete a user', NOW());
END
;;
DELIMITER ;
(1)创建TEACHER1表
CREATE TABLE TEACHER1
( Eno SMALLINT PRIMARY KEY , /*在列级定义主码*/
Ename CHAR(10),
Job CHAR(8),
Sal DECIMAL(7,2),
Deduct DECIMAL(7,2),
);
(2)创建触发器:
DROP TRIGGER IF EXISTS Insert_TEACHER1_Sal;
DELIMITER ;;
CREATE TRIGGER Insert_Or_Update_Sal
BEFORE INSERT ON Teacher1 /*触发事件是插入或更新操作*/
FOR EACH ROW /*行级触发器*/
BEGIN /*定义触发动作体,*/
IF (new.Job='教授') AND (new.Sal < 4000)
THEN SET new.Sal=4000;
END IF;
END;
;;
DELIMITER ;
在TEACHER1表中插入一些数据:
INSERT INTO `mystudent3`.`teacher1` (`Eno`, `Ename`, `Job`, `Sal`, `Deduct`) VALUES ('3', '1', '教授', '2', '2');
存储过程
- 编写存储过程XsxxWh(学生信息查询) 和XsxxWh(学生信息维护) 实现对学生信息的查询和维护
DROP PROCEDURE IF EXISTS `XsxxCx`;
DELIMITER $$
CREATE PROCEDURE `XsxxCx`(cxlb int,cxnr varchar(50))
BEGIN
IF cxlb=0 then /* 查询所有学生信息*/
SELECT * FROM Xsxxb;
ELSEIF cxlb=1 then /* 查询指定学号的学生信息*/
SELECT * FROM Xsxxb WHERE xh=cxnr;
ELSE /* 按姓名或姓名缩写模糊查询*/
SELECT * FROM Xsxxb WHERE xm LIKE concat(cxnr,'%') OR xmsx LIKE CONCAT(cxnr,'%'); /* CONCAT字符串拼接函数 */
END IF;
END$$
DELIMITER ;
函数
(三)编写函数PysxCx(拼音缩写查询) 实现汉字字符串的拼音缩写查询
DELIMITER $$
CREATE FUNCTION `pysxcx`(zw VARCHAR(50)) RETURNS VARCHAR(10) CHARSET utf8
BEGIN
SET @l=CHAR_LENGTH(zw);
SET @i=1;
SET @pysx='';
SET @jp='';
WHILE @i<=@l DO
SET @hz=SUBSTRING(zw,@i,1);
SELECT jp INTO @jp FROM hzpyb WHERE hz=@hz;
SET @pysx=CONCAT(@pysx,@jp);
SET @i=@i+1;
END WHILE;
RETURN @pysx;
END
$$
DELIMITER ;
操作操作操作操作操作操作相关推荐
- java8 流操作_java8中的流操作
Stream 流是 Java 8 新提供给开发者的一组操作集合的 API,将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选.排序.聚合等.元素流在管道中经过 ...
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )
文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...
- Docker常用命令操作——1)、镜像操作;2)、容器操作
Docker常用命令&操作 1).镜像操作 https://hub.docker.com/ 操作 命令 说明 检索 docker search 关键字 eg:docker search red ...
- LINQ那些事儿(2)- 简单对象的CRUD操作和Association的级联操作
从(1)我们看到,当生成entity class定义时,entity class或xml mapping文件中都已经完整的包含了entity和关系数据库的映射信息了,LINQ2SQL会根据这些信息来把 ...
- 计算机操作应用实训,计算机操作实训教案计算机操作实训教案.doc
计算机操作实训教案计算机操作实训教案 <计算机应用基础> 实训教案 本周课标题:计算机操作授课班级13521.2上课 时间第5周上课 地点四号楼机房教 学 目 的通过本实训周的教学,让学生 ...
- python数据库操作框架_python bottle 框架操作数据库
python操作mysql数据库用MySQLdb模板,操作postgresql则用psycopg2模块 安装MySQLdb(用yum安装,好像只能与mysql5.1版本配合使用):yum instal ...
- C# 对Ini文件操作(C# ini文件操作类)
*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...
- .net 延时操作_锁、CAS操作和无锁队列的实现
(给算法爱好者加星标,修炼编程内功) 来源:yishizuofei blog.csdn.net/yishizuofei/article/details/78353722 锁的机制 锁和人很像,有的人乐 ...
- python文件操作的方法_python文件操作的方法介绍
文件操作 1.open()函数 open()函数主要用于文件处理,一般分为下面3个过程:1.打开文件 2.操作文件 3.关闭文件 常见的格式示例:f = open('note.txt','r') f. ...
- 浅谈管理系统操作日志设计(附操作日志类)
原文地址:http://www.cnblogs.com/hooray/archive/2012/09/05/2672133.html 相关文章链接:<系统操作日志设计> 在开始做之前,必须 ...
最新文章
- Metasploit技巧命令支持tips
- CCF-百度松果基金闭门研讨会成功举办,百度飞桨提供基金平台支持
- 【 HDU - 1796】How many integers can you find (容斥原理,二进制枚举或者dfs)
- Silverlight Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)
- CPU的乱序执行、指令流水线技术
- Python——format()/str.format()函数
- uBLAS——Boost 线性代数基础程序库
- 安装AAE v11.x Control Room简易教程
- 手撕:经典问题的遗传算法代码
- 北风修仙笔记—2020年7月
- CocosCreator黄金矿工资源工程文件
- 【机器学习】决策树(Decision Tree)
- [JZOJ5710] Mex
- 重置SMC和NVRAM解决MacBookPro卡顿问题
- AES128加密解密
- 西数USB硬盘 WD10JMVW-11AJGS 4数据恢复步骤
- android自定义下拉筛选,android自定义Spinner下拉菜单(下拉列表框)样式
- FileInputStream.read和FileChannel.read的区别
- 详述用网络分析仪测量DC-DC和PDN
- 关于a标签的点击事件触发无效的问题