数据库——LAMP的搭建及MySQL基操

1.实验内容及原理

1. 在 Windows 系统中安装 VMWare 虚拟机,在 VMWare 中安装 Ubuntu 系统,并在

Ubuntu 中搭建 LAMP 实验环境。

2. 使用 MySQL 进行一些基本操作:

(1)登录 MySQL,在 MySQL 中创建用户,并对新建的用户赋予权限。

(2)创建并跳转到新的数据库,显示所有数据库和当前数据库。

(3)显示所有的表和查看表的属性。

(4)导入 emp loyees 和 sakila 两个样例数据库,对这两个数据库进行完整性检查,对这两个数据库进行备份、导入与导出。

3. SQL DDL 使用

(1) 创建 DDL 脚本,包括创建、删除表,指定主键、候选键和外键;

(2)修改并展示表结构;

(3)创建、删除索引。

4. SQL DDL & DML 使用

(1)数据的增、删、查、改等操作

(2)掌握视图的创建、删除和更新

5. 简单查询

(1)使用 order bygroup byhaving 等子句;

(2)使用各种谓词;

(3)使用集合函数;

(4)在时间字段上查询。

6. 复杂查询

(1)嵌套子查询;

(2)多表连接查询,包括左连接、右连接、外连接、 自连接。

7. 创建存储过程、函数和触发器,调用创建的存储过程、函数,触动触发器。

8. 安装并使用 phpmyadmin

2.实验步骤与分析

1. 自行在 Windows 系统中安装 VMWare 虚拟机,在 VMWare 中安装 Ubuntu 系统,在

Ubuntu 中安装 LAMP 步骤如下(也可使用安装菜单):

sudo apt-get install updatesudo apt-get install apache2sudo apt-get install mysq l-serversudo apt-get install php

2. 熟悉 MySQL 的基本操作步骤如下:

(1)进入 MySQLmysq l -u root -p

(2)创建新用户:CREATE USER 'newuser'@' localhost' IDENTIFIED BY 'password';

(3)赋予权限:GRANT ALL PRIVILEGES ON * . * TO 'newuser'@' localhost';

(4)创建新的数据库:CREATE DATABASE newdbname;

(5)跳转到新创建的数据库:USE newdbname;3

(6)显示所有数据库和当前数据库:SHOW DATABASES; SELECT DATABASE();

(7)显示所有的表并查看表的属性:SHOW TABLES; DESCRIBE tabname;

(8)导入两个样例数据库

① 解压数据包:unzip test_db_master.zip

进入数据包目录:cd test_db_master

导入 emp loyee 数据库:sudo sudo mysql -t < emp loyees.sql

解压数据包:unzip sakila-db.zip

进入数据包目录:cd sakila-db

进入 MySQL,导入 sakila schema 数据:SOURCE /path/to/sakila-schema.sq l

导入 sakila 数据:SOURCE /path/to/sakila-data.sq l

(9)对导入的两个数据库进行完整性检查

查看外键检查状态:show variables like %foreign_key_checks% ;

查看主键检查状态:show variables like %unique_checks% ;

查看外键检查结果:select @@foreign_key_checks;

查看主键检查结果:select @@unique_checks;

(10)数据库备份(以 employee 为例)

不导出任何数据,只导出数据库表结构:

mysqldump -u test_02 -p --no-data emp loyees> employees_bak1.sq l

只导出数据,而不添加 CREATE TABLE 语句:

mysqldump -u test_02 -p --no-create-info employees> emp loyees_bak2.sq l

导出全部数据库:

mysqldump -u test_02 -p emp loyees> emp loyees_bak3.sq l

(11)导出和导入(以 sakila 为例)

 导出为 TXT 文件:

select * from country into outfile '/your/file/path/country';

 导入 TXT 文件:

load data infile '/your/file/path/country' into table country;

 导出为 CSV 文件:4

select * from country into outfile '/your/file/path/country.csv';

 导入 CSV 文件:

load data infile '/your/file/path/country.csv' into table country;

 导出为 xml 文件:

mysql  -u  test_02  -p  --xml  -e  'select  *  from  sakila.country'  >

/your/file/path/country.xml

3. SQL DDL 使用

(1)使用 create 语句创建项目所有的表;

(2)使用 alter 命令修改表结构,删除某个表中的“xxx ”字段;修改某个表中

的“xxx ”字段的类型为 char(2),该字段不能为空,默认值为“m”;

(3)添加类型为 char(2)的‘xxx ’字段数据,添加是否成功,如果失败分析

失败的原因并进行必要的操作使字段添加成功;

(4)修改某个表,添加类型为 varchar2(18)的字段,并添加 check 约束,要求该

字段的长度为 18,并且只能由数字组成,并且指定该字段为候选键;

(5)设置某个表中某个字段的 check 约束为大于 0;设置某个字段默认值为“未

审核 ”,设置某个 ”字段的 check 约束为“未审核 ”、“ 审核已通过 ”、“ 审核不通

过”;

(6)在某个表中创建索引;

(7)使用 describe 命令展示表结构。

4. SQL DDL & DML 使用

(1) 使用 insert 语句将数据插入到相应的表中;

(2) 使用 delete 语句删除表中有关联表外建对应的记录,能否成功删除,如

果不能请分析原因;

(3) 使用 update 语句更新外键数据,能否成功修改,如果不能请分析原因。;

(4) 创建视图;

(5) 对视图进行查询操作;

(6) 对表进行联合查询操作;

(7) 更新视图,分析更新操作可以执行成功或失败的原因。5

5. 简单查询

(1) 查询性别为“  ”的所有学生的学号、姓名和班级号;(单表简单查询)

(2) 查询 xxx 表,获得性别为“女 ”的记录,结果按照班级 ID 降序排列;(order

by)

(3) 查询 xxx 表,按照年龄从小到大排序;(获取子串函数、order by

(4) 查询学号以“2002 ”开头的学生信息,字段包括学号、姓名、班级号;(使用子

串函数)

(5) 查询学号中包含“01 ”的学生信息,字段包括学号、姓名、班级号;(like

(6) 查询状态为“未审核 ”,且申请时间在 2013 年 9 月 4 日之后的请假申请

单的信息,包含申请时间为 9 月 4 日的申请单;(单表多条件查询)

(7) 查询审核状态为“未审核 ”和“ 审批已通过 ”两种类型的申请单 ID;(in

(8) 查询时间在 2013  8  31 日和 2013  9  2 日之间所提交的申请单 ID,

请假原因; (between、时间)

(9) 查询 XXX 老师所教课程的的选课人次(一人选两门课程,算两人次);

(10) 查询 XXX 老师所教课程的的选课人数(一人选两门课程,算一人);(distinct

(11) 查询 XX 老师对请假单审核不通过的请假原因与学生姓名;

(12) 统计每门课的学生的个数(集合函数);

(13)  查询选课人数超  3  的课程   并按课程  降序排列( group by,

having,order by desc)。

6. 复杂查询

(1)查询审批通过人数最多的课程名称和教师姓名;

(2)查询选课人数最多和第二多的课程名称和任课老师姓名; (选做)

(3)查询只选了课程《算法设计》的学生姓名;

(4)查询选修了全部课程的学生姓名;

(5)查询选修了课程 3 的学生学号、姓名、身份证号;

(6)据学生学号将 xxx 表与 xxx 表做自然连接查询;

(7)据学号将 xxx 表与 xxx 表进行左连接查询,并解释这样做所具有的业务含 6

义;

(8)据学号将 xxx 表与 xxx 表进行右连接查询,并解释这样做所具有的业务含

义;

(9)总结自然连接、左连接、右连接查询在产生的结果上面有什么区别。

7. 创建并调用存储过程、函数和触发器

(1)创建并调用存储查询过程(以 emp loyee 为例)

创建一个查询存储过程:

> delimiter##> create procedure select_manager(in fname varchar(20), in lname varchar(20))-> begin->select * from dept_manager natural join emp loyees where first_name = fnameandlast_name = lname;->end> ##

调用这个存储查询过程:call select_manager('Xiaobin','Spinelli');

(2)创建并调用函数(以 emp loyee 为例)

 创建函数:

> delimiter ##> create function title_num(title_name varchar(50)) returns int> begin> declare num int;> select count(title) from titles where to_date > curdate() and title =title_name groupby title into num;> return num;> end> ##set g lobal log_bin_trust_function_creators=1;

调用函数:select title_num("manager");7

(3)创建并调用触发器(以 emp loyee 为例)

查看表 dept_managerselect * from dept_manager;

② 创建新表 quitcreate table quit (emp_no int, depr_no char(4), quit_date

date);

创建触发器:

mysql> delimiter ##mysql> create trigger after_ insert_ quit after insert on quit for each row-> begin-> update dept_ manager set to_ date = curdate( ) where emp_ no = 110039;-> end-> ##

触发触发器: insert into quit values (110039, 'd001', curdate());

查看新表 quitselect * from quit;

再次查看表 dept_managerselect * from dept_manager;

8. 安装 phpmyadmin 步骤如下:

(1)安装 phpmyadminsudo apt-get install phpmyadmin

(2)安装 php-mbstringsudo apt-get install php-mbstring

(3)安装 php-gettextsudo apt-get install php-gettext

(4)编辑 php.ini: vim /path/to/php. ini 修改;extension=php-mbstring.so

(5)重启 Apache2:sudo /path/to/apache2 restart

(6)查看 IP 地址: ifconfig

(7)登录 phpmyadmin:从浏览器地址 your. ip.4.address/phpmyadmin

3.实验结果与总结

1. 自行在 Windows 系统中安装 VMWare 虚拟机,在 VMWare 中安装 Ubuntu 系统,在

Ubuntu 中安装 LAMP :

sudo apt-get install updatesudo apt-get install apache2sudo apt-get install mysq l-serversudo apt-get install php

安装 LAMP

2. 熟悉 MySQL 的基本操作:

(1)进入 MySQLmysq l -u root -p

(2)创建新用户:CREATE USER 'newuser'@' localhost' IDENTIFIED BY 'password';

(3)赋予权限:GRANT ALL PRIVILEGES ON * . * TO 'newuser'@' localhost';

(4)创建新的数据库:CREATE DATABASE newdbname;

(5)跳转到新创建的数据库:USE newdbname;3

(6)显示所有数据库和当前数据库:SHOW DATABASES; SELECT DATABASE();

(如上图所示,mysql 基本操作均正常进行)

(其中的创建新用户步骤)

(7)显示所有的表并查看表的属性:SHOW TABLES; DESCRIBE tabname;

(8)导入两个样例数据库

① 解压数据包:unzip test_db_master.zip

(解压过程中)

(导入 sakila 数据库过程中)

进入数据包目录:cd test_db_master

导入 emp loyee 数据库:sudo sudo mysql -t < emp loyees.sql

解压数据包:unzip sakila-db.zip

进入数据包目录:cd sakila-db

进入 MySQL,导入 sakila schema 数据:SOURCE /path/to/sakila-schema.sq l

导入 sakila 数据:SOURCE /path/to/sakila-data.sq l

(导入过程正常运行)

(9)对导入的两个数据库进行完整性检查

查看外键检查状态:show variables like %foreign_key_checks% ;

查看主键检查状态:show variables like %unique_checks% ;

查看外键检查结果:select @@foreign_key_checks;

查看主键检查结果:select @@unique_checks;

(四种检查的结果)

(10)数据库备份(以 employee 为例)

不导出任何数据,只导出数据库表结构:

mysqldump -u test_02 -p --no-data emp loyees> employees_bak1.sq l

只导出数据,而不添加 CREATE TABLE 语句:

mysqldump -u test_02 -p --no-create-info employees> emp loyees_bak2.sq l

导出全部数据库:

mysqldump -u test_02 -p emp loyees> emp loyees_bak3.sq l

(11)导出和导入(以 sakila 为例)

 导出为 TXT 文件:

select * from country into outfile '/your/file/path/country';

 导入 TXT 文件:

load data infile '/your/file/path/country' into table country;

 导出为 CSV 文件:4

select * from country into outfile '/your/file/path/country.csv';

 导入 CSV 文件:

load data infile '/your/file/path/country.csv' into table country;

 导出为 xml 文件:

mysql  -u  test_02  -p  --xml  -e  'select  *  from  sakila.country'  >

/your/file/path/country.xml

(导出过程)

(导出的文本文档内容)

(导出结果)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【正则表达式】

概述 正则表达式又称规则表达式。&#xff08;英语&#xff1a;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式并不仅限于某一种语…

spss统计软件:BM SPSS Statistics 27 (Win/mac)激活版

IBM SPSS Statistics 27 是一款专为数据分析、统计建模、预测分析和决策支持而设计的软件工具。作为SPSS Statistics系列的一部分&#xff0c;这个版本进一步增强了数据分析的功能&#xff0c;改善了用户体验&#xff0c;并确保了软件的稳定性与兼容性。 主要特点包括&#xff…

Spring Boot+RocketMQ 实现多实例分布式环境下的事件驱动

为什么要使用MQ&#xff1f; 在Spring Boot Event这篇文章中已经通过Guava或者SpringBoot自身的Listener实现了事件驱动&#xff0c;已经做到了对业务的解耦。为什么还要用到MQ来进行业务解耦呢&#xff1f; 首先无论是通过Guava还是Spring Boot自身提供的监听注解来实现的事…

Flink on K8S生产集群使用StreamPark管理

&#xff08;一&#xff09;直接部署&#xff08;手动测试用&#xff0c;不推荐&#xff09; Flink on Native Kubernetes 目前支持 Application 模式和 Session 模式&#xff0c;两者对比 Application 模式部署规避了 Session 模式的资源隔离问题、以及客户端资源消耗问题&am…

使用 async-profiler 分析 CPU 和 内存使用情况

async-profiler 是非常主流的 Java Profiling 工具之一&#xff0c;且对 Linux 支持良好&#xff0c;适合分析运行在服务器上的 Java 应用程序在 CPU 和内存上的占用情况。本文介绍一下 async-profiler 的安装和使用方法。 1. 安装 wget https://github.com/jvm-profiling-too…

人工智能 机器学习 深度学习:概念,关系,及区别说明

如果过去几年&#xff0c;您读过科技主题的文章&#xff0c;您可能会遇到一些新词汇&#xff0c;如人工智能&#xff08;Artificial Intelligence&#xff09;、机器学习&#xff08;Machine Learning&#xff09;和深度学习&#xff08;Deep Learning&#xff09;等。这三个词…

Tuxera NTFS for Mac2024免费Mac读写软件下载教程

在日常生活中&#xff0c;我们使用Mac时经常会遇到外部设备不能正常使用的情况&#xff0c;如&#xff1a;U盘、硬盘、软盘等等一系列存储设备&#xff0c;而这些设备的格式大多为NTFS&#xff0c;Mac系统对NTFS格式分区存在一定的兼容性问题&#xff0c;不能正常读写。 那么什…

WPF+Halcon 培训项目实战(1-5):Halcon安装,图像处理,Halcon简单模板匹配

文章目录 前言相关链接项目专栏我个人对就业市场的评价Halcon安装实战1-4&#xff1a;Halcon基础实战5&#xff1a;模板匹配[形状匹配]实战代码 结尾 前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主…

案例189:基于微信小程序的高校教务管理系统设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder …

Eclipse安装Jrebel eclipse免重启加载项目

每次修改JAVA文件都需要重新启动项目&#xff0c;加载时间太长&#xff0c;eclipse安装jrebel控件,避免重启项目节省时间。 1、Help->Eclipse Marketplace 2、搜索jrebel 3、Help->jrebel->Configuration 配置jrebel 4、激活jrebel 5、在红色框中填入 http://jrebel…

ajax请求——XMLHttpRequest请求

个人练习笔记-----Ajax01 一、GET <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</t…

嵌入式高薪岗位解析——单机片开发

很多人都问&#xff0c;什么专业适合做单机片开发呢 那么以下是一些可能适合从事单片机开发岗位的专业&#xff1a; 电子信息工程专业物联网工程专业嵌入式技术与应用专业应用电子技术专业软件技术专业自动化控制专业信息工程专业电气自动化等相关专业 此外&#xff0c;从事…

Windows/Linux环境登入mysql、mysqldump命令等多方式解决方案之简易记录

Windows/Linux环境登入mysql、mysqldump命令等多方式解决方案之简易记录 之前发布过Window方式,这次结合以上主题,完善下Linux相关登入方式过程,纯属做个记录,有需要的朋友可以做个学习参考。 一、Windows环境提示“‘mysql’ 不是内部或外部命令,也不是可运行的程序或批…

赏金猎人必学站点(梯外)

What to learn? Technical- Computer Fundamentals https://www.comptia.org/training/by-certification/a https://www.youtube.com/watch?vtIfRDPekybU https://www.tutorialspoint.com/computer_fundamentals/index.htm https://onlinecourses.swayam2.ac.in/cec19_cs…

Spring Cloud Gateway 常见过滤器的基本使用

目录 1. 过滤器的作用 2. Spring Cloud Gateway 过滤器的类型 2.1 内置过滤器 2.1.1 AddResponseHeader 2.1.2 AddRequestHeader 2.1.3 PrefixPath 2.1.4 RequestRateLimiter 2.1.5 Retry 2.2 自定义过滤器 1. 过滤器的作用 过滤器通常用于拦截、处理或修改数据流和事…

Oracle database 静默安装 oracle12c 一键安装 12.1.0.2

基于oracle安装包中应答文件实现一键安装 注意此安装脚本基于12.1.0.2 安装包 原始安装包结构为两个压缩包 此脚本使用安装包为原始压缩包解压后、 重新封装为一个.zip压缩包 建议在linux 环境下解压重新压缩后 使用该脚本 支持环境: Linux :centerOS 7 oracle :12.1.0.…

Docker 概念介绍

1、Docker 简介 Docker一个快速交付应用、运行应用的技术: 可以将程序及其依赖、运行环境一起打包为一个镜像&#xff0c;可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器&#xff0c;各个应用互不干扰启动、移除都可以通过一行命令完成&#xff0c;方便快捷 Doc…

three.js实现3D汽车展厅效果展示

项目搭建 本案例还是借助框架书写three项目&#xff0c;借用vite构建工具搭建vue项目&#xff0c;搭建完成之后&#xff0c;用编辑器打开该项目&#xff0c;在终端执行 npm i 安装一下依赖&#xff0c;安装完成之后终端在安装 npm i three 即可。 因为我搭建的是vue3项目&…

【Python学习笔记(十)】串口被占用导致无法访问的解决办法

串口被占用导致无法访问的解决办法 前言正文1、封装串口打开函数2、解决过程3、实现效果 前言 在项目开发中需要用到串口进行通讯&#xff0c;但当有其他串口调试工具、串口助手等打开占用了某一端口&#xff0c;打开串口时会导致程序卡死&#xff0c;针对这一问题的出现及解决…

苹果手机打开Microsoft Outlook日历ics文件方法

作为一名经常需要处理各种日程安排的苹果用户&#xff0c;我深知ics文件的重要性。ics文件通常来自于我们日常使用的日历应用&#xff0c;比如Microsoft Outlook&#xff0c;是日程信息的标准格式。但很多时候&#xff0c;当我们尝试打开这些ics文件时&#xff0c;却会遇到种种…