一、MySQL命令行创建数据库-哈工大数据库实验(附源码)

实验时间:10.9

目录

MySQL命令行基本命令

note:MySQL对于默认大小写不敏感,因此大小写是一样的。

连接MySQL服务器

查看MySQL中有哪些数据库

使用数据库mysql(数据库名字,自选)

查看当前使用的数据库

查看数据库mysql中有哪些关系

查看数据库mysql中关系的模式(以关系user为例)

使用help命令来了解其他命令和变量类型等的含义

使用SQL语言在数据库mysql上进行简单查询

删除数据库

取消命令

断开MySQL服务器连接

MySQL关系数据库管理系统及SQL语言的使用

1 实验任务

2 关系数据库COMPANY介绍

3 数据准备

Excel导入数据库

源码


MySQL命令行基本命令

note:MySQL默认对大小写不敏感,因此大小写是一样的。

MySQL每一条语句后面需要添加分号;结束

连接MySQL服务器

在命令行下输入mysql –h localhost –u root –p

当显示“Enter password:”时,输入密码mysql

note:按下win键,输入mysql,双击,也可以进入数据库。

查看MySQL中有哪些数据库

show databases; (注意SQL语句结尾的分号!)

使用数据库mysql(数据库名字,自选)

use mysql;

查看当前使用的数据库

select database();

查看数据库mysql中有哪些关系

show tables;

查看数据库mysql中关系的模式(以关系user为例)

describe user;

使用help命令来了解其他命令和变量类型等的含义

help;

help use;

使用SQL语言在数据库mysql上进行简单查询

select * from user;

select user, host, password from user;

select count(*) from user;

select count(*) as ucount from user;

删除数据库

drop database user

取消命令

若要取消一条正在编辑命令,键入\c并回车

断开MySQL服务器连接

quit 或 mysql> exit

MySQL关系数据库管理系统及SQL语言的使用

1 实验任务

创建关系数据库COMPANY,使用SQL语言完成如下查询:

1:参加了项目名为“SQL Project”的员工名字;

2:在“Research Department”工作且工资低于3000元的员工名字和地址;

3:没有参加项目编号为P1的项目的员工姓名;

4:由张红领导的工作人员的姓名和所在部门的名字;

5:至少参加了项目编号为P1和P2的项目的员工号;

6:参加了全部项目的员工号码和姓名;

7:员工平均工资低于3000元的部门名称;

8:至少参与了3个项目且工作总时间不超过8小时的员工名字;

9:每个部门的员工小时平均工资;

2 关系数据库COMPANY介绍

创建关系数据库COMPANY,其模式如下(下划线表示关系的主键):

关系EMPLOYEE (ENAME, ESSN, ADDRESS, SALARY, SUPERSSN, DNO)

ENAME: 工作人员名字,

ESSN: 工作人员身份证号,

ADDRESS: 工作人员住址,

SALARY: 工作人员工资,

SUPERSSN: 工作人员直接领导的身份证号,

DNO: 所属部门号

关系DEPARTMENT (DNAME, DNO, MGRSSN, MGRSTARTDATE)

DNAME: 部门名,

DNO: 部门号,

MGRSSN: 部门领导身份证号,

MGRSTARTDATE: 部门领导开始领导工作的日期

关系PROJECT (PNAME, PNO, PLOCATION, DNO)

PNAME: 工程项目名,

PNO: 工程项目号,

PLOCATION: 工程项目所在地,

DNO: 工程项目所属部门号

关系WORKS_ON (ESSN, PNO, HOURS)

ESSN: 工作人员身份证号,

PNO: 工程项目号,

HOURS: 工作小时数

3 数据准备

向创建的数据库COMPANY中添加数据,以备后续查询使用。

要求数据库中至少包含50个员工,5个部门,10项工程,并且必须包含“研发部”、编号为P1和P2的项目、名叫张红的员工。

Excel导入数据库

 

 

 一直默认下一步,

 点击开始,导入完成。

源码

/*命令行操作*/
show databases;
create database company;
show databases;
use company;
show tables;

/*创建各种表*/
CREATE TABLE DEPARTMENT(
DNAME varchar(25),
DNO varchar(15),
MGRSSN varchar(15),
MGRSTARTDATE date,
PRIMARY KEY(DNO)
);

CREATE TABLE EMPLOYEE(
ENAME varchar(15),
ESSN varchar(15),
ADDRESS varchar(15),
SALARY int,
SUPERSSN varchar(15),
DNO varchar(15),
PRIMARY KEY(ESSN),
FOREIGN KEY (dno) REFERENCES department(dno))
);

CREATE TABLE PROJECT(
PNAME varchar(15),
PNO varchar(15),
PLOCATION varchar(15),
DNO varchar(15),
PRIMARY KEY(PNO),
FOREIGN KEY (dno) REFERENCES department(dno))
);

CREATE TABLE WORKS_ON(
ESSN varchar(15),
PNO varchar(15),
HOURS int unsigned,
PRIMARY KEY(ESSN,PNO),
FOREIGN KEY (essn) REFERENCES employee(essn),
FOREIGN KEY (pno) REFERENCES project(pno))
);

/*查看关系*/
describe employee;
describe department;
describe project;
describe works_on;

/*导入数据后,查看数据*/
select *
from employee;
select *
from department;
select *
from project;
select *
from works_on;

/*1*/
select ename
from employee as e , project as p, works_on as w
where e.dno = p.dno and e.essn = w.essn and p.pno = w.pno and pname = 'SQL Project';

/*1*与上一个等价,但是natural join性能不如上面,建议上面的/
select ename
from employee natural join project natural join works_on
where pname = 'SQL Project';

/*2*/
select distinct ename, address
from employee as e, department as d
where e.dno = d.dno and dname = 'Research Department' and salary < 3000;

/*3*/
select distinct ename
from employee
where ename not in(
select distinct ename
from employee as e, works_on as w
where e.essn=w.essn and w.pno='P1');

/*4*/
select distinct ename, dname
from employee as e, department as d
where e.dno = d.dno and e.superssn in(
select essn
from employee
where ename = '张红');

/*5*/
select e1.essn
from employee as e1, works_on as w1
where e1.essn = w1.essn and w1.pno ='P1' and e1.essn in(
select e2.essn
from employee as e2, works_on as w2
where e2.essn = w2.essn and w2.pno ='P2');

/*6*/
select ename, e.essn
from employee as e, works_on as w
where e.essn = w.essn
group by e.essn
having count(pno) = (select count(*) from project);

/*7*/
select dname
from employee as e, department as d
where e.dno = d.dno
group by dname
having avg(salary) < 3000;

/*8*/
select ename
from employee as e, works_on as w
where e.essn = w.essn
group by ename
having count(pno)>= 3 and sum(hours)<=18;

/*9*/
select dno, sum(salary)/sum(hours)
from employee as e, works_on as w
where e.essn = w.essn
group by dno;


  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值