数据定义

#mysql --version 查版本号

#mysql -uroot -p #登录

show databases; #查询当前服务存在的数据库

#create database test ; #创建SQL数据库

use test;

drop table if EXISTS JS,Course,SK;

#建表

create table JS(

Tno CHAR(7),

Tname CHAR(10),

Tsex CHAR(2),

Birthday DATE,

Dept CHAR(20),

Sid CHAR(18)

);

create table Course(

Cno CHAR(10),

Cname CHAR(20),

Credit TINYINT,-- 短整形

Property CHAR(10),

Hours INT

);

create table SK(

Tno CHAR(7),

Cno CHAR(10),

Hours INT

);

#插入数据

insert into JS (Tno,Tname,Tsex,Birthday,Dept,Sid) VALUES ('T001', '刘薇', '女', '1971-3-20', '电信', '551021197103203121'),

('T002', '张骐劲', '男', '1963-7-13', '数理', '32010119630713318X'),

('T003', '李子文', '女', '1973-9-15', '外语', '461031197309153829'),

('T004', '江海防', '女', '1960-2-18', '社科', '560102196002185623'),

('T005', '李铁', '男', '1977-10-11', '数理', '230103197710118632'),

('T006', '吴天一', '男', '1962-4-23', '电信', '320104196204237516'),

('T007', '赵志华', '男', '1968-8-27', '社科', '321102196808277214'),

('T008', '钱进', '男', '1980-7-10', '电信', '570102198007103452'),

('T009', '孙星南', '女', '1981-3-2', '外语', '110102198103024125');

insert into Course (Cno,Cname,Credit,property) VALUES ('01010101', '大学英语1', 4, '考试'),

('01010102', '普通物理1', 4, '考试'),

('01010103', '高等数学1', 6, '考试'),

('01010104', '形势政策', 2, '考查'),

('01010105', '计算机基础', 4, '考查');

insert into SK (Tno,Cno,Hours) VALUES ('T001', '01010105', 64),

('T002', '01010102', 64),

('T009', '01010101', 64),

('T004', '01010104', 32),

('T005', '01010103', 96),

('T006', '01010105', 64),

('T003', '01010101', 64);

alter table SK add Type char(4);

alter table SK change Hours Hours Smallint;

alter table Course drop Hours;

-- 4.1

drop table if EXISTS students;

#建表

create table students(

SNO CHAR(10) NOT NULL,

SNAME CHAR(8) NOT NULL,

AGE NUMERIC(3,0),

SEX CHAR(2),

BPLACE CHAR(20),

Polity CHAR(20),

primary key(SNO)

);

insert into students (SNO,SNAME,SEX,AGE,BPLACE,Polity) VALUES ('S001', '刘薇', '女','22', '1997-3-20', '团员'),

('S002', '张骐劲', '男','20', '1999-7-13', '团员'),

('S003', '李子文', '女','22', '1997-9-15', '党员'),

('S004', '江海防', '女','19','2000-2-18', '团员');

-- 4.2

alter TABLE JS ADD ADDR char(50);

-- 4.3

-- 根据现有表建立

drop table if EXISTS GRIL,score,js1;

create table GRIL SELECT SNO,SNAME,AGE FROM students;

-- 4.4

create table score(

SNO CHAR(10),

CNO CHAR(10),

score NUMERIC(6,0)

);

insert into score (SNO,CNO,score) VALUES ('S001', '01010105', 64),

('S002', '01010102', 64),

('S003', '01010101', 64),

('S004', '01010104', 32);

-- 5.1

create table js1 SELECT * FROM JS;

create UNIQUE INDEX I_js_sid ON js1(Sid);

-- 5.2

create UNIQUE INDEX I_cource_xf ON Course(Cno,Credit);

数据操纵

SHOW DATABASE;

USE test;

SELECT SNAME,BPLACE FROM students WHERE SEX='男';

SELECT Tsex,count(Tno) FROM JS group by Tsex;

SELECT SNO,SNAME,AGE FROM students WHERE AGE>=20 and AGE<=23 ORDER BY AGE;

-- 1-4

SELECT SNAME FROM students WHERE AGE>=(SELECT AVG(AGE) FROM students);

-- 1-5

select SNAME,students.SNO,Course.Cname,score.score

from students,Course,score

where score.score<60 and students.SNO=score.SNO and score.Cno=Course.Cno;

-- 1-6

SELECT JS.Tno,Tname,Tsex,Birthday,Dept,Sid

from JS,SK where JS.Tno=SK.Tno and SK.Cno='01010105';

-- 1-7

SELECT Tname,Birthday,Cname,Hours

from JS,SK,course

where JS.Birthday

-- 1-8

select * from JS where JS.Tno not in (select JS.Tno from JS,SK where JS.Tno = SK.Tno);

-- 2-1 在ex1中已做

insert into students (SNO,SNAME)values('S666','小坤');

insert into JS (Tno,Tname) values ('1476','李映雪');

-- 2-3 已存在

-- 3-1

update students set AGE=AGE+1;

update score set score=score+5 where Cno='01010105';

update score set score = 0 where Sno='S004';

-- 4-1

drop from JS where DATEDIFF('2019-11-20',Birthday)>60*365;

-- 为score表添加外键

-- alter table score add foreign key(SNO) REFERENCES students(SNO);

-- 采用级联删除

alter table score drop foreign key score_ibfk_1;

DELETE from students where SNO='S001';

DELETE from score where SNO='S001';

-- 创建视图

-- CREATE VIEW op_age(Tno,Tname) AS

-- SELECT Tno,Tname FROM JS;

-- DROP VIEW op_age;

-- 1-3

-- SELECT Tno,Tname,DATEDIFF('2019-11-20',Birthday)/365 Age FROM JS

-- WHERE DATEDIFF('2019-11-20',Birthday)>=20*365 and DATEDIFF('2019-11-20',Birthday)<=50*365

-- ORDER BY Birthday DESC;#年龄升序=生日降序

-- 1-4

-- SET @avg=0;

-- SELECT @avg:=AVG(DATEDIFF('2019-11-20',Birthday)/365) Age FROM JS;

-- SELECT Tno,Tname,DATEDIFF('2019-11-20',Birthday)/365 Age FROM JS

-- WHERE DATEDIFF('2019-11-20',Birthday)>=@avg * 365;

数据约束

show databases;

-- 主键

alter table js add PRIMARY KEY(Tno);

-- 非空

alter table js modify Tname varchar(10) NOT NULL;

-- 限制取值

alter table js add CONSTRAINT c_Tsex CHECK (Tsex in ('男','女'));

-- 唯一

alter table js add UNIQUE(Sid);

-- Course

alter table course add PRIMARY KEY(Cno);

alter table course modify Cname varchar(20) NOT NULL;

alter table course add CONSTRAINT c_Credit CHECK (Credir>0);

-- 默认值

alter table course modify property varchar(10) DEFAULT '必修';

-- SK

alter table SK add primary key(Tno,Cno);

-- 外码

alter table SK add foreign key(Tno) references js(Tno);

alter table SK add foreign key(Cno) references course(Cno);

alter table sk add CONSTRAINT c_hours CHECK (hours>0);#限制

数据库编程

-- 1-1 最高分

SELECT students.SNO,students.SNAME,Course.Cname,score

FROM score,students,Course

where students.SNO=score.SNO and Course.Cno=score.Cno

ORDER BY score DESC limit 1;#降序排取第一个

-- 最低分

SELECT students.SNO,students.SNAME,Course.Cname,score

FROM score,students,Course

where students.SNO=score.SNO and Course.Cno=score.Cno

ORDER BY score ASC limit 1;

-- 建立班级表

drop table if EXISTS class,class_student;

create table class(

Bno varchar(4),

Bname varchar(20)

);

create table class_student(

Sno char(10),

Bno varchar(4)

);

insert into students (SNO,SNAME,AGE,SEX,BPLACE,Polity) VALUES ('8103','张三',20,'男','1999-07-07','团员'),('8104','李芬',21,'女','1998-01-06','党员');

insert into class values('100','一班');

insert into class_student (Sno,Bno) VALUES ('8103','100'),('8104','100');

-- 1-2

select class.Bname, students.SNO,students.SNAME,students.SEX,students.BPLACE,students.Polity

from class,class_student,students

where class.Bno = 100 and class_student.Sno = students.SNO;

-- 1-3

drop table students;

create table students(

SNO CHAR(10) PRIMARY KEY NOT NULL,

SNAME CHAR(8) NOT NULL,

AGE NUMERIC(3,0),

SEX CHAR(2),

BPLACE CHAR(20),

Polity CHAR(20) DEFAULT '群众'

);

insert into students (SNO,SNAME,AGE,SEX,BPLACE,Polity) VALUES ('8103','张三',20,'男','1999-07-07','团员'),('8104','李芬',21,'女','1998-01-06','党员');

insert into students (SNO,SNAME) VALUES ('8101','张三丰'),('8102','李四');

select * from students;

-- 1-4

insert into students(SNO,SNAME,AGE,SEX,BPLACE) values('8105','小鬼',20,'男','1999-09-08');

insert into score (SNO,CNO,score) values ('8103','01010101',70),('8104','01010101',50);

-- 查询

SELECT avg(score) AVG,Course.Cname,class.Bname

FROM score,students,Course,class,class_student

where Course.Cno=score.CNO and class.Bno=class_student.Bno

and class.Bno=100 and class_student.Sno = students.SNO

and class_student.Sno=score.SNO;

-- 1-5

/*

CASE 属性

WHEN 条件1 THEN 结果1

WHEN 条件2 THEN 结果2

ELSE 其他结果

END

*/

SELECT score,(CASE score.CNO WHEN 1 THEN Course.Cname ELSE Course.Cname END) Cname,class.Bname

FROM score,students,Course,class,class_student

where Course.Cno=score.CNO and class.Bno=class_student.Bno

and class.Bno=100 and class_student.Sno = students.SNO and class_student.Sno=score.SNO;

-- 1-6

SELECT students.SNAME,

(case

when score < 60 then '不及格'

when score BETWEEN 60 AND 90 then '良好'

else '优秀'

end) Level,Course.Cname,class.Bname

FROM score,students,Course,class,class_student

where Course.Cno=score.CNO and class.Bno=class_student.Bno

and class.Bno=100 and class_student.Sno = students.SNO and class_student.Sno=score.SNO;

-- 存储过程的创建、调用

alter table students add class INT DEFAULT 1;#为学生表添加班级信息,默认1班

-- 创建

drop procedure if EXISTS stuscoreinfo;

delimiter $$ #将语句的结束符号从分号;临时改为两个$$(可以是自定义)

create procedure stuscoreinfo()

BEGIN

select class,SNAME,SEX,Cname,score

from students,course,score

where students.SNO = score.SNO and course.CNO = score.CNO;

END$$

delimiter ; #将语句的结束符号恢复为分号

# drop procedure p_name;#删除

-- 调用

call stuscoreinfo();

drop procedure if EXISTS stu_info;

delimiter $$

create procedure stu_info(IN s_sno varchar(10))

BEGIN

select * from students

where s_sno = students.SNO;

END$$

delimiter ;

call stu_info('8101');

/*

默认情况下,存储过程和默认数据库相关联,如果想指定存储过程创建在某个特定的数据库下,那么在过程名前面加数据库名做前缀;

在定义过程时,使用DELIMITER $$ 命令将语句的结束符号从分号 ;

临时改为两个$$,使得过程体中使用的分号被直接传递到服务器,而不会被客户端(如mysql)解释。

*/

-- 1-3

drop procedure if EXISTS stu_age;

delimiter $$

set @age = 0;

create procedure stu_age(IN s_sno varchar(10),OUT age INT)

BEGIN

select DATEDIFF('2019-11-20',BPLACE)/365 Age from students

where s_sno = students.SNO;

END$$

delimiter ;

call stu_age('8103',@age);

-- 1-4.5.6

call stuscoreinfo();

call stu_info('8101');

call stu_age('8103',@age);

-- 1-7

show procedure status;

-- 1-8

drop procedure stuscoreinfo;

-- 补充班级

insert into class values('101','二班');

insert into class values('102','三班');

insert into class_student (Sno,Bno) VALUES ('S002','101'),('S003','101'),('S004','102');

-- 自定义函数

delimiter $$

create procedure fun_sumscores()

BEGIN

select class.Bname,Course.Cname,avg(score) AVG

from class,score,class_student,Course

where class.Bno=class_student.Bno and class_student.Sno=score.Sno and Course.Cno=score.Cno

group by Course.Cname,class.Bno;

END$$

delimiter ;

DELIMITER $$

create function fun_sumscores() returns int deterministic

begin

declare c int;

SELECT avg(score) from score into c;

return c;

END $$

DELIMITER ;

select fun_sumscores();

-- 1-2

delimiter $$

create function fun_sumscores1(in_class VARCHAR(10),in_cno VARCHAR(10)) returns int deterministic

begin

declare c int;

SELECT sum(score) from score,class_student

where cno = in_cno and in_class = class_student.Bno

and class_student.Sno = score.SNO into c;

return c;

END $$

DELIMITER ;·

select fun_sumscores1('100','01010101');

-- 1-3

DELIMITER $$

create function fun_sumscores2(in_sname VARCHAR(10)) returns int deterministic

begin

declare c int;

SELECT count(*) from students where sname=in_sname into c;

return c;

END $$

DELIMITER ;

select fun_sumscores2('李浩');

/*

mysql查看存储过程函数

查询数据库中的存储过程和函数

select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' //存储过程

select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' //函数

show procedure status; //存储过程

show function status; //函数

查看存储过程或函数的创建代码

show create procedure proc_name;

show create function func_name;

查看视图

SELECT * from information_schema.VIEWS //视图

SELECT * from information_schema.TABLES //表

查看触发器

SHOW TRIGGERS [FROM db_name] [LIKE expr]

SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G

*/

mysql教程实验4.1_【MySQL】数据库课程实验相关推荐

  1. [Mysql教程系列]介绍一下MySQL语句设计规范以及其他规范

    点击上方"Coder编程",选择"置顶公众号" 技术文章第一时间送达! mysql.jpg 语句设计规范 1.使用预编译语句 只传参数,比传递SQL语句更高效 ...

  2. MySQL数据库课程实验报告_创建数据库并插入数据

    1.1 进入数据库 $ sudo service mysql start $ mysql -u root 2.1 创建数据库 create database mysql_shiyan; 创建后查看数据 ...

  3. mysql教程虫师_python使用mysql数据库 - 虫师

    一,安装 mysql 如果是 windows 用户, mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux  下的安装可能会更加简单,除了下载安装包进行安装外, ...

  4. mySQL 教程 第16章 MySQL复制

    第16章 MySQL复制 复制解决的问题 概述:你的网站访问量非常大,对系统的稳定性非常高,那么可以使用mysql功能的复制功能,复制是指将主要的数据库的DDL和DML操作通过二进制日志传到复制服务器 ...

  5. c mysql安装教程视频_MySQL安装教程 - Windows安装MySQL教程 - 小白式安装MySQL教程 - 青衫慧博客...

    版权声明 本文转发自旧站点萧瑟云日志,近期考虑准备将旧站进行关闭(没有精力维护),部分文章将会迁移至本站.文章发表于:2017-10-28 12:32:03 前言 上次给大家带来了SQL Server ...

  6. visual MySQL 教程_Visual Studio操作MySQL的详细步骤

    MySQL是最流行的关系型数据库管理系统,在Web应用方面是最好的RDBMS应用软件之一,作为开放源码软件,可大大降低总体拥有成本.Visual Studio也是我们常用的开发工具,那么怎样通过Vis ...

  7. python3.6 mysql 教程_Python3.6与MySQL建立连接

    ====建立环境==== 1.先安装Python3.6 在公众号中回复Python3.6,获得下载地址.安装. 2.安装MySQL 在公众号中回复MySQL,获得下载地址.安装. 输入mysql -u ...

  8. linux c mysql教程_Linux c访问mysql 编写入门

    一) 前置条件: (1)       Linux 已经安装好 mysql 数据库: (2)       Linux 已经安装了 gcc 编译器: (二)数据库准备: 为了便于描述,假设数据库的 roo ...

  9. navicat连接mysql教程_navicat如何连接mysql?navicat 连接mysql Navicat使用教程

    用Phpmyadmin导入导出数据受一定限制或服务商不配合提供mysql数据库的源文件,mysql数据库管理工具navicat for mysql,对于不怎么喜欢图形界面或者不太方便使用SQL的时候. ...

  10. MySQL教程(三)—— MySQL的安装与配置

    1  安装MySQL 打开附件中的文件(分别对应电脑系统为32/64位). 点next. 三个选项,分别对应典型安装.自定义安装和完全安装,在此选择典型安装(初学者). 点install. 广告,忽略 ...

最新文章

  1. MVC框架内容-模型
  2. Bzoj3550 [ONTAK2010]Vacation
  3. Enterprise Solution 2.2 Feature List
  4. java libpcap,Linux下编译安装libpcap
  5. Lib详解--如何判断lib文件是静态库还是导入库
  6. Ant Design Pro入门之简介
  7. 4位加法器的设计代码verilog_HDLBits:在线学习Verilog(六 · Problem 25-29)
  8. Java并发编程-ThreadPool线程池
  9. php解析html类库simple_html_dom(2)
  10. 【超图+CESIUM】【基础API使用示例】28、超图|CESIUM -【坐标转换】经纬度转世界坐标
  11. 【Linux服务器架设】搭建存储服务器-NFS
  12. 红色警戒2修改器原理百科(四)
  13. HDU 6975 Forgiving Matching 快速傅里叶变换处理带通配符字符串匹配
  14. iPhone7 A10处理器性能竟这么强大 吊打骁龙820
  15. Unity初探(光源类型与光照模式)
  16. 后台流量跑得快?软件厂商和运营商或许在偷着乐
  17. 基于SpringBoot的迷你商城系统,附源码!
  18. python图书馆管理系统设计,千行代码带你学!
  19. SDN系统方法 | 8. 网络虚拟化
  20. 无法启动计算机丢失rtutils,丢失dll文件一键修复几个步骤就能搞定

热门文章

  1. STM32工作笔记0012---认识老化试验
  2. C语言学习笔记---001C语言的介绍,编译过程原理,工具等
  3. python数据结构剑指offer-替换空格
  4. 通过人脸测试心率和呼吸率
  5. SQLite学习手册(目录)
  6. php 解决跨域问题
  7. c++ string详解 assign
  8. httpclient 不支持国密ssl_Hyperledger Fabric成都见面会:TWGC国密改造介绍
  9. 随想录(程序员的缺点)
  10. 一步一步写算法(开篇)