一、实验目的:

  1. 了解SQL Server或MYSQL数据库的基本知识;
  2. 熟悉SQL Server或MYSQL环境和系统结构;
  3. 掌握图形化交互工具的基本操作,学会数据库及表的创建与管理;
  4. 理解和掌握SQL语言: 能够熟练地使用create/alter/drop语句创建、修改和删除数据库、基本表;能够使用insert语句;理解和掌握基本的Select语句。

二、实验要求:
理解和掌握create, alter, drop, insert, 以及select语句的语法,特别是各种参数的具体含义和使用方法;使用SQL语句创建、修改和删除数据库和基本表。掌握SQL语句常见语法错误的调试方法。

三、实验重点和难点:
重点:创建数据库、基本表,进行基本的查询操作。
难点:Select语句where部分使用的多类运算符。

四、实验内容:(SQL Server 或MYSQL数据库二选一,或同步比较学习)

  1. 建立自己的MySQL实验环境,掌握第三方管理工具连接本地和远程数据库服务器的配置过程与方法;
  2. 建立与课程相关的Movies数据库;(注意:如果SQL中不接受中文,可以将相关属性值改成相应的英文。在SQL代码中注意要使用英文的标点符号。下同,不再重复。)
  3. 自主实践课堂上讲解过的SQL样例;
  4. 建立销售表,字段如下:
    产品名称 varchar(20)
    数量 int not null
    是否赠品 bit not null
    其中:字段是否赠品的值为1,表示该条记录的产品是赠品,否则,表示是销售。
  5. 在销售表中输入如下记录:
    可口可乐,100,1
    石榴,20,0
    可口可乐,50,0
    百事可乐,120,1
    百事可乐,30,0
  6. 查询每个产品的赠送和销售情况统计,要求按如下方式显示:
    产品名称 销售数量 赠送数量
    可口可乐 50 100
    石榴 20 0
    百事可乐 30 120
  7. 建立一个表,表结构任意,但至少应有3个字段,现在需要你在这个表内插入1000000条记录(数据任意),尽可能快的完成,看看你的用时。
  8. 建立一个数据库,将给的EXCEL文件导入这个数据库,每一个sheet都构建一个表(如果有脏数据,就剔除),提示:可以使用NAVICAT等工具的导入功能,也可以使用其他工具。

五、实验步骤与结果:
1)

2)
建立查询,输入代码如下:

USE my_movie_database;DROP TABLE IF EXISTS studio;
CREATE TABLE studio (name char(30) NOT NULL DEFAULT '',address varchar(100) DEFAULT NULL,presC int(11) DEFAULT NULL,PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO studio VALUES ('MGM','MGM Boulevard',123),('Fox','Fox Boulevard',199),('Disney','Disney Boulevard',222),('USA Entertainm','USA Entertainm Boulevard',333),('Paramount','Paramount Boulevard',555);DROP TABLE IF EXISTS movieexec;
CREATE TABLE movieexec (name char(30) DEFAULT NULL,address varchar(100) DEFAULT NULL,cert int(11) NOT NULL DEFAULT '0',netWorth int(11) DEFAULT NULL,PRIMARY KEY (`cert`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO movieexec VALUES ('Calvin Coolidge','Fast Lane',123,20000000),('Merv Griffin','Riot Rd.',199,112000000),('Stephen Spielberg','123 ET road',222,100000000),('Ted Turner','Turner Av.',333,125000000),('George Lucas','Oak Rd.',555,200000000),('Jane Fonda','Turner Av.',567,200000000);DROP TABLE IF EXISTS movies;
CREATE TABLE movies (title char(100) NOT NULL DEFAULT '',year int(11) NOT NULL DEFAULT '0',length int(11) DEFAULT NULL,movieType char(10) DEFAULT NULL,studioName char(30) DEFAULT NULL,producerC int(11) DEFAULT NULL,PRIMARY KEY (title,year)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO movies VALUES ('Empire Strikes Back',1980,111,'drama','Fox',555),('Gone With the Wind',1938,238,'drama','MGM',123),('Logan\'s run',1977,120,'drama','MGM',888),('Pretty Woman',1990,119,'drama','Disney',999),('Star Trek',1979,132,'sciFic','Paramount',444),('Star Trek: Nemesis',2002,116,'sciFic','Paramount',321),('Star Wars',1977,124,'sciFic','Fox',555),('Terms of Endearment',1983,132,'drama','MGM',123),('The Man Who Wasn\'t There',2001,116,'comedy','USA Entertainm.',777),('The Usual Suspects',1995,106,'drama','MGM',999);
INSERT INTO movies(title,year) VALUES ('Star Wars',2017);
insert into movies(title,year,movieType,studioName)
values('Star Wars',2015,'sciFic','FOX');DROP TABLE IF EXISTS moviestar;
CREATE TABLE moviestar (name char(30) NOT NULL DEFAULT '',address varchar(255) DEFAULT NULL,gender char(1) DEFAULT NULL,birthdate date DEFAULT NULL,PRIMARY KEY (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO moviestar VALUES ('Alec Baldwin','Baldwin Av.','M','1977-06-07'),('Debra Winger','Baldwin Av.','F','1978-05-06'),('Harrison Ford','Prefect Rd.','M','1955-05-05'),('Jack Nicholson','X path','M','1949-05-05'),('Jane Fonda','Turner Av.','F','1977-07-07');DROP TABLE IF EXISTS starsin;
CREATE TABLE starsin (movieTitle char(100) NOT NULL DEFAULT '',movieYear int(11) NOT NULL DEFAULT '0',starName char(30) NOT NULL DEFAULT '',PRIMARY KEY (movieTitle,movieYear,starName)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO starsin VALUES ('Empire Strikes Back',1980,'Harrison Ford'),('Star Wars',1977,'Carrie Fisher'),('Star Wars',1977,'Harrison Ford'),('Star Wars',1977,'Mark Hamill'),('Star Wars',2017,'Carrie Fisher'),('Terms of Endearment',1983,'Debra Winger'),('Terms of Endearment',1983,'Jack Nicholson'),('The Usual Suspects',1995,'Kevin Spacey');


3)


4)
输入代码如下:

CREATE TABLE  `销售表`  (`产品名称` varchar(20) NULL,`数量` int(11) NOT NULL,`是否赠品` bit(1) NOT NULL
);


5)
输入代码如下:

INSERT INTO `销售表`(`产品名称`, `数量`, `是否赠品`) VALUES ('可口可乐', 100, b'1');
INSERT INTO `销售表`(`产品名称`, `数量`, `是否赠品`) VALUES ('石榴', 20, b'0');
INSERT INTO `销售表`(`产品名称`, `数量`, `是否赠品`) VALUES ('可口可乐', 50, b'0');
INSERT INTO `销售表`(`产品名称`, `数量`, `是否赠品`) VALUES ('百事可乐', 120, b'1');
INSERT INTO `销售表`(`产品名称`, `数量`, `是否赠品`) VALUES ('百事可乐', 30, b'0');


6)
输入代码如下:

SELECTt.产品名称,COALESCE ( a.销售数量, 0 ) AS 销售数量,COALESCE ( b.赠送数量, 0 ) AS 赠送数量
FROM( SELECT DISTINCT 产品名称 FROM 销售表 ) tLEFT JOIN ( SELECT 产品名称, COALESCE ( SUM( 数量 ), 0 ) AS 销售数量 FROM 销售表 WHERE 是否赠品 = 0 GROUP BY 产品名称 ) a ON t.产品名称 = a.产品名称LEFT JOIN ( SELECT 产品名称, COALESCE ( SUM( 数量 ), 0 ) AS 赠送数量 FROM 销售表 WHERE 是否赠品 = 1 GROUP BY 产品名称 ) b ON t.产品名称 = b.产品名称;


7)
建立表如下:


输入代码如下:

//初始化1000000条数据List<Map<String,String>> data = createList(1000000);Long startTime = System.currentTimeMillis();String addSql = "insert into seven (first, second, third) VALUES(?,?,?)";jdbcTemplate.batchUpdate(addSql, new BatchPreparedStatementSetter() {@Overridepublic void setValues(PreparedStatement ps, int i) throws SQLException {ps.setString(1, data.get(i).get("first"));ps.setString(2, data.get(i).get("second"));ps.setString(3, data.get(i).get("third"));}@Overridepublic int getBatchSize() {return data.size();}});Long endTime = System.currentTimeMillis();System.out.println("插入"+data.size()+"条数据用时:" + (endTime - startTime) + "毫秒");System.out.println("插入"+data.size()+"条数据用时:" + (endTime - startTime) / 1000 + "秒");

实际耗时14.632s
8)





六、实验心得:

  1. 初步了解mysql数据库;
  2. 初步上手navicat软件;
  3. 初步掌握图形化交互工具,学会数据库、基本表的创建、查询、导入;
  4. 初步掌握SQL语言,能够使用语句创建、修改、选择和删除数据库、基本表;

MYSQL——《数据库》实验壹——熟悉数据库管理工具、数据库和表的基本操作相关推荐

  1. 数据库原理及应用——熟悉数据库管理工具、数据库和表的创建与管理

    实验一 熟悉数据库管理工具.数据库和表的创建与管理 一.实验目的: 了解SQL Server或MYSQL数据库的基本知识: 熟悉SQL Server或MYSQL环境和系统结构: 掌握图形化交互工具的基 ...

  2. 数据库实验1(建立school数据库)

    一.实验课: (注意:如果用机房的机器,数据库记得带走下次继续用) 建立school数据库 在school下建立如下数据库表,根据表中数据选取合适的数据类型及宽度,设置各表的主键及表间外键联系: 注意 ...

  3. oracle oats 工具讲解,Oracle 表空间基本操作

    Oracle 表空间基本操作 1. 查询数据库现在的表空间 select tablespace_name, file_name, sum(bytes)/1024/1024 table_size fro ...

  4. 北邮 计算机学院数据库实验报告二,北邮数据库_sql实验二报告.doc

    <北邮数据库_sql实验二报告.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<北邮数据库_sql实验二报告.doc>文档请在天天文库搜索. 1. ...

  5. 数据库实验一---图书管理的数据库建立

    根据调研选定实体及相应属性画出E-R图 2.将E-R模型转换为对应关系模型,并指出主码和外码 图书book(书号,类别,出版社,作者,书名,定价,备注): 读者reader(编号,姓名,单位,性别,电 ...

  6. 操作系统——实验壹——熟悉Linux基础命令及进程管理

    一. 实验目的 加深对进程概念的理解,明确进程和程序的区别. 进一步认识并发执行的实质. 分析进程争用资源的现象,学习解决进程互斥的方法. 二. 实验内容 运行程序,查看自己运行的结果,并进行分析. ...

  7. access2013数据库实验笔记_二级Access数据库备考笔记之使用查询向导

    时 间:2012-10-19 08:33:45 作 者:摘 要:使用"查询向导" 正 文: 3.2 创建选择查询 根据指定条件,从一个或多个数据源中获取数据的査询称为选择査询.创建 ...

  8. MySql下最好用的数据库管理工具是哪个?

    维基上有个很全的列表:  https://en.wikipedia.org/wiki/Comparison_of_database_tools      1. phpmyadmin  用过3.9版,U ...

  9. 【MySQL运维】使用gh-ost工具实现大表在线DDL变更

    一.gh-ost介绍 作为MySQL DBA都会面临这样一个问题,就是当对大表(10G以上)进行DDL变更时会有长时间锁表问题,影响业务可持续性.目前解决这个问题的方案一个较为通用的使用Percona ...

最新文章

  1. 微信python天天学_刚学Python一礼拜!我就能模拟登录微信公众号!我是天才吧!...
  2. 怎么查看地址值_西门子S7-200 SMART PID回路控制,配置PID向导,查看项目组件
  3. 深港澳大湾区第三次.NET技术交流会圆满成功
  4. c++中的继承--3(多继承问题,菱形继承)
  5. Raspberry Pi 的新用法:检测家中的漏水情况
  6. spark自定义函数
  7. java架构-Spring MVC 与 Servlet
  8. eviews建立时间序列模型_Eviews软件做时间序列分析?
  9. 无人机倾斜摄影测量土方计算
  10. 【有始有终,不让自己的付出辜负了自己期望 】
  11. 【泡泡机器人翻译专栏】LSD-SLAM : 基于直接法的大范围单目即时定位和地图构建方法
  12. 在macOS系统下外接硬盘安装windows10虚拟机
  13. Flutter 跨平台框架中的 Widgets,你了解多少?
  14. 免杀远程监控软件大盘点
  15. CSS深入课堂作业 盒子模型
  16. iPhone微信网页数字识别成了电话
  17. 云计算助推金融行业信息化发展
  18. 年薪40w,送给测试人的5w3h法
  19. 【实验3 循环结构】7-14 循环结构 —— 中国古代著名算题。趣味题目:物不知其数。
  20. Qcom Android 等相关名称缩写及意义

热门文章

  1. ES6基础之——对象表达式
  2. Python中 类和对象调用其他类中的变量和方法
  3. P5068 [Ynoi2015]我回来了
  4. 12.UiAutomator 获取系统信息
  5. PHP json_encode
  6. 搜索提示时jquery的focusout和click事件冲突问题完美解决
  7. 决定好好研究一些开源的系统
  8. PHP_VERSION获取php版本
  9. 解决微信小程序新建项目没有样式问题,以及官方demo
  10. 西北农林科技大学计算机老师 癌症,西北农林科大攻克苹果树“癌症”