当前位置: 首页 > article >正文

头歌作业-mysql数据库系统(全部)

每个作业只包含重要的建表代码,需要先进入数据库,创建基本的数据库之后才能使用下述命令创建表结构


MySql数据库-初识MySql

第一关:创建数据库

create database MyDb;

第二关:创建表

create table t_emp(
    id int,
    name varchar(32),
    deptId int,
    salary float
);

第三关:使用主键约束

创建t_user1表

CREATE TABLE t_user1 (  
    userId INT PRIMARY KEY,          -- 用户ID  
    name VARCHAR(32) NOT NULL,      -- 用户名  
    password VARCHAR(11) NOT NULL,  -- 密码  
    phone VARCHAR(11),               -- 电话号码  
    email VARCHAR(32)                -- 邮箱  
);

创建t_user2表

CREATE TABLE t_user2 (  
    name VARCHAR(32) NOT NULL,       -- 用户名  
    phone VARCHAR(11),               -- 电话号码  
    email VARCHAR(32),               -- 邮箱  
    PRIMARY KEY (name, phone)        -- 联合主键  
);

第四关:外键约束

创建student表

create table t_student(
    id int primary key ,
    name varchar(22),
    classId int ,
    constraint  fk_stu_class1 foreign key (classId) references t_class(id)

);

创建class表

create table t_class(
    id int primary key ,
    name varchar(22)
);

第五关:添加常用约束

创建t_user表

CREATE TABLE t_user (
                        id INT AUTO_INCREMENT PRIMARY KEY, -- 用户ID,主键,自动增长  
                        username VARCHAR(32) NOT NULL UNIQUE, -- 用户名,非空,唯一  
                        sex VARCHAR(4) DEFAULT '男' -- 性别,默认为“男”  
);

数据库实验二:数据表中数据的插入,修改和删除

数据表中插入一条记录,对指定字段赋值

INSERT INTO reader (xm, dhhm) VALUES ('林团团', '13507311234');

数据表中插入一条记录,对所有字段赋值

INSERT INTO reader (dzzh, xm, xb, sf, dhhm) VALUES (2, "陈洁", "女", "教研人员", 13319551234);

数据表中插入多条记录

insert into reader(xm,xb,sf,dhhm) values
    ('黄小小','男','研究生',13316789987),
    ('刘大任','男','工作人员',18012341234),
    ('邓朝阳','女','研究生',17716554432);

在数据表中修改单条数据记录的单个字段的值

UPDATE reader SET dhhm = '17718991989' WHERE xm = '林团团';

在数据表中修改单条记录的多个字段的值

update reader set dhhm='13315667745',sf='工作人员' where xm='陈洁';

修改数据表的多条记录

update reader set dzzh=dzzh+10;

删除数据表中的记录

DELETE FROM reader WHERE xm = '陈洁';

删除数据表中的多条记录

delete from reader where sf='研究生';

删除数据表中的所有数据

TRUNCATE TABLE reader;

数据库实验三 数据查询一

第一关:按条件查询单表的所有字段

use province;
 #代码开始
 #第一题
select * from jdxx where qxmc="开福区";
 #第二题
select * from jdxx where qxmc in("开福区","岳麓区");

 #第三题
select * from jdxx where cs="长沙市" and name="西湖街道";
  
 #代码结束

第二关:查询唯一值

use province
 #代码开始
 
select distinct qxmc from jdxx where sf="湖南省";
select distinct qxmc from jdxx where cs="长沙市";
 
 #代码结束

第三关:统计查询

use province;
#代码开始
#答案1
select count(name)  from jdxx where sf="湖南省";
#答案
select count(name)  from jdxx where cs="长沙市";

select  count(distinct qxmc)  from jdxx where sf="湖南省";
select count(distinct qxmc)  from jdxx where cs="长沙市";

第四关:分组查询

use province;
SELECT sf, count(*) 
FROM jdxx  
GROUP BY sf;  
SELECT cs, count(*) 
FROM jdxx  
GROUP BY cs  
HAVING count(name) > 200;  
SELECT qxmc, count(*) 
FROM jdxx  
WHERE cs = '长沙市'  
GROUP BY qxmc;  

第五关:数据排序

 use province;
 #代码开始
 #第一题
SELECT *  
FROM jdtj  
ORDER BY jdgs DESC  
LIMIT 10;  
 #第二题

SELECT *  
FROM jdtj  
ORDER BY jdgs ASC  
LIMIT 10;  
 #第三题
SELECT *  
FROM jdtj  
WHERE jdgs > 35  
ORDER BY jdgs DESC, sf ASC;  
 #代码结束

数据库实验一:数据库和数据表的建立,修改和删除

第一关:建立数据库

create database jwxt;
show databases;

第二关:建立学生数据表

-- 使用数据库 jwxt  
USE jwxt;  

-- 创建 student 表  
CREATE TABLE student (  
    studentid CHAR(12) PRIMARY KEY,  
    name VARCHAR(10),  
    birthday DATE,  
    sex ENUM('男', '女') DEFAULT '男',  
    nativeplace VARCHAR(3),  
    political ENUM('党员', '团员', '群众') DEFAULT '群众',  
    interest SET('运动', '旅游', '阅读', '写作', '音乐', '影视', '电子竞技', '其他'),  
    resume TEXT,  
    photo VARCHAR(20)  
);  
-- 显示 student 表的结构  
DESC student;  

第三关:建立课程数据表

-- 使用数据库 jwxt  
USE jwxt;  

-- 创建 course 表  
CREATE TABLE course (  
    courseid CHAR(4) PRIMARY KEY,  
    coursename VARCHAR(10),  
    department VARCHAR(20),  
    credit TINYINT UNSIGNED,  
    required TINYINT(1) DEFAULT 1,  
    period TINYINT UNSIGNED,  
    introduce VARCHAR(100)  
);  

-- 显示 course 表的结构  
DESC course;  

第四关:建立成绩数据表

-- 使用数据库 jwxt  
USE jwxt;  

-- 创建 score 表  
CREATE TABLE score (  
    studentid VARCHAR(12),  -- 学号  
    courseid VARCHAR(4),     -- 课程编号  
    session YEAR,            -- 学年  
    score DECIMAL(4, 1) ,  -- 分数,长度4位,小数位1位  
    PRIMARY KEY (studentid, courseid, session)  -- 主键组合  
);  

-- 显示 score 表的结构  
DESC score;  

第五关:修改数据表名字

use jwxt;
#代码开始

alter table student rename xs;
 
 #代码结束
 describe xs;

第六关:在数据表中添加字段

 use jwxt;
#代码开始

 
alter table student add address varchar(30);

 #代码结束
 describe student;

第七关:修改数据表的字段名称

 use jwxt;
 #代码开始
alter table course change coursename kcmc varchar(10);
 #代码结束
 describe course;

第八关:修改数据表的字段类型

use jwxt;
#代码开始
alter table course modify introduce text;
#代码结束
describe course;

第九关:删除数据表中的字段

 use jwxt;
 #代码开始
alter table student drop address;
 #代码结束
 describe student;

第十关:删除数据表

 use jwxt;
 #代码开始
drop table student;
show tables;
 #代码结束

第十一关:删除数据库

 #代码开始
drop database jwxt;
show databases;
 #代码结束

数据库教学案例三 数据查询一

第一关:查询数据表的所有字段或指定字段及表达式

 use jwxt;
 #代码开始
 #第一题
SELECT *  
FROM student;  
 #第二题
SELECT name, birthday  
FROM student;  

 #第三题
SELECT   
    name,   
   DATE_FORMAT(birthday, '%c月%e日') AS 生日 
        FROM student;  
 # 第四题
SELECT   
    name,  
        YEAR(CURDATE()) - YEAR(birthday)-1 AS 年龄  
        FROM student;   
 
 #代码结束

第二关:按条件查询单表

 use jwxt;
-- 打开数据库(如果使用 MySQL,需先使用 `USE jwxt;`)
-- 第一题:显示男生的学号、name
SELECT studentid, name FROM student WHERE sex = '男';

-- 第二题:显示湖南湖北nativeplacestudent的name和nativeplace
SELECT name, nativeplace FROM student WHERE nativeplace IN ('湖南', '湖北');

#第三题
SELECT name, birthday
FROM student
WHERE TIMESTAMPDIFF(YEAR, birthday,'2025-01-01') BETWEEN 28 AND 30;



-- 第四题:显示湖南的男student的所有字段
SELECT * FROM student WHERE nativeplace = '湖南' AND sex = '男';

-- 第五题:显示所有湖南的student和所有男student的所有字段
SELECT * FROM student WHERE nativeplace = '湖南' OR sex = '男';

第三关:查询唯一值:

use jwxt
 #代码开始
 #第一题
SELECT DISTINCT nativeplace FROM student;  

 #第二题
SELECT distinct YEAR(birthday) AS 'year(birthday)' FROM student;  
 
 #代码结束

第四关:数据排序

 use jwxt;
 #代码开始
 #第一题
SELECT name, sex, birthday
FROM student
ORDER BY birthday DESC;
 #第二题
SELECT name, sex, birthday
FROM student
ORDER BY sex, birthday DESC;

 #第三题
SELECT name, nativeplace
FROM student
ORDER BY nativeplace;

 #第四题
 SELECT name, sex, birthday
 FROM student
 ORDER BY birthday DESC
 LIMIT 3;
 #代码结束

第五关:统计查询

use jwxt;
#代码开始
#第一题
SELECT count(*)
FROM student
WHERE sex = '女';
#第二题
SELECT avg(score) 
FROM score
WHERE studentid = '201221120201';
#第三题
SELECT 
    MAX(score) AS 最高分,
        MIN(score) AS 最低分,
            AVG(score) AS 平均分
            FROM score
            WHERE courseid = '0101';

 #代码结束

第六关:分组查询一

use test;
#代码开始
#第一题

SELECT name, AVG(cj) AS `avg(cj)`
FROM score
GROUP BY name;


#第二题


SELECT course, AVG(cj) AS `avg(cj)`
FROM score
GROUP BY course;



#代码结束	

第七关:分组查询二

 use jwxt;
#代码开始
#题目1
SELECT studentid, AVG(score) AS 平均分
FROM score
GROUP BY studentid
HAVING AVG(score) > 80;
#题目2
SELECT nativeplace, COUNT(*) AS `count(*)`
FROM student
WHERE sex = '男'
GROUP BY nativeplace;

#题目3
SELECT nativeplace, COUNT(*) AS `count(*)`
FROM student
GROUP BY nativeplace
HAVING COUNT(*) > 2;

#题目4
SELECT nativeplace, COUNT(*) AS `count(*)`
FROM student
WHERE sex = '男'
GROUP BY nativeplace
HAVING COUNT(*) > 2;
#题目5
SELECT sex, political, COUNT(*) AS `count(*)`
FROM student
GROUP BY sex, political;
#代码结束


数据库实验一 数据库和数据表的建立、修改和删除

第一关:建立数据库

 #代码开始
create database library;
show databases;
 #代码结束

第二关:建立读者数据表

 #代码开始
use library;
CREATE TABLE dz (
    dzzh INT(3) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,   
    xm VARCHAR(8) NOT NULL,                   -- 姓名,不能为空  
    xb ENUM('男','女') DEFAULT '男',           -- 性别,默认为男  
    sf ENUM('研究生','工作人员','教研人员') DEFAULT '研究生',  -- 身份  
    PRIMARY KEY (dzzh)                        -- 设置 dzzh 为主键  
);



DESCRIBE dz;  
 #代码结束

第三关:修改数据表名字

use library;
#代码开始

alter table dz rename reader;
 
 #代码结束
 describe reader;

第四关:在数据表中添加字段

 use library;
#代码开始

alter table reader add dhhm varchar(11);
 
 #代码结束
 describe reader;

第五关:修改数据表的字段名称

 use library;
ALTER TABLE reader   
CHANGE dhhm mobile VARCHAR(11);  -- 这里假设长度为 15,根据需要调整  

 describe reader;

第六关:修改数据表的字段类型

use library;
#代码开始
alter table reader modify dhhm varchar(12);
#代码结束
describe reader;

第七关:删除数据表中的字段

 use library;
 #代码开始
alter table reader drop dhhm;
 #代码结束
 describe reader;

第八关:删除数据表

 use library;
 #代码开始
drop table reader;
show tables; 
 #代码结束

第九关:删除数据库

 #代码开始
drop database library;
show databases;
 #代码结束

数据库教学案例二 数据表中数据的插入、修改和删除

第1关:数据表中插入一条记录,对所有字段赋值

    use jwxt;
    #代码开始
    insert into student (studentid,name,birthday,sex,nativeplace,political,interest,resume,photo) values ('201221120101','王刚','1994-07-26','男','广西','团员','运动','2013年获得国家奖学金','');

第2关:数据表中插入一条记录,对指定字段赋值

use jwxt;
#代码开始
insert into student(studentid,name,birthday,sex,nativeplace,political,interest,resume,photo)
values ('2023120101','李向','2000-08-30','男',null,'群众',null,null,null);
 
  
   #代码结束
    select * from student;

第3关:数据表中插入多条记录,对指定字段赋值

 use jwxt;
  #代码开始
  insert into student(studentid,name,birthday,sex,nativeplace,political,interest,resume,photo)values('201221120103','何丽洁','1994-08-30','女','辽宁','群众',null,null,null),('201221120105','彭悦','1993-08-19','男','湖南','群众',null,null,null),('201221120107','杨波','1994-02-20','男','山东','群众',null,null,null);
   #代码结束
    select * from student;

第4关:在数据表中修改单条数据记录的单个字段的值

 use jwxt;
#代码开始

update course set credit=3 where coursename='计算机概论'; 
 
 #代码结束
 select * from course;

第5关:在数据表中修改单条记录的多个字段的值

 use jwxt;
  #代码开始
   update course set period=16,credit=1 where coursename='英美文学';
    #代码结束
     select * from course;	

第6关:修改数据表的多条记录

use jwxt;
#代码开始
update  course set period=period+5 where required='1';
#代码结束
select * from course;

第7关:删除数据表的多条记录

 use jwxt;
  #代码开始
   delete from course where department='新影院';
    #代码结束
     select * from course;

第8关:删除数据表的所有数据

 use jwxt;
  #代码开始
   delete from course;
    #代码结束
     select * from course;

http://www.kler.cn/a/576979.html

相关文章:

  • 【Json RPC框架】框架介绍与环境搭建(Ubuntu 22.04)
  • 解决电脑问题(3)——显示器问题
  • AArch64架构及其编译器
  • Wpf-ReactiveUI-Usercontrol与主界面交互
  • 国密SSL证书如何为企业筑牢安全防线?
  • Python函数自学指南:从基础到高级(第三天)
  • Redis为什么要自定义序列化?如何实现自定义序列化器?
  • 引用细讲解
  • DeepSeek使用教程--教师领域方面的提示词库
  • C++学习之函数对象与适配器、STL常用算法
  • 编程考古-Borland历史:《.EXE Interview》对Anders Hejlsberg关于Delphi的采访内容(中)
  • docker 若依plus cloud 部署 oss配置失败
  • 前端项目中export和import的作用
  • 【JVM】字节码指令集
  • 正向代理与反向代理
  • 【玩转23种Java设计模式】结构型模式篇:组合模式
  • Python开发Scikit-learn面试题及参考答案
  • PyTorch深度学习框架60天进阶学习计划第15天:迁移学习实践
  • 【2025】基于Python+Django的酒店民宿预订管理系统(源码+调试+答疑+学习资料)
  • 基于SpringBoot的商城管理系统(源码+部署教程)