MySQL上机小练习

MySQL数据库基础小测试

第一题

(1)在DOS窗口下连接MySQL 数据库。

// 连接数据库。
mysql -h localhost -u root -p

在这里插入图片描述
(2)创建数据库,数据库名称为:xxx_game_db(xxx为姓名首字母)。

// 创建名为 lhk_game_db 的数据库。
CREATE DATABASE lhk_game_db;

在这里插入图片描述
(3)选择连接你刚刚创建的数据库。

// 连接名为 lhk_game_db 的数据库
USE lhk_game_db;

在这里插入图片描述

第二题:

根据以下提供的表格,完成操作并截图

用户数据表(xxx_user)表结构:

字段名 数据类型 主键 外键 非空 唯一 自增
u_id INT
u_name VARCHAR(20)
sex VARCHAR(10)
cellphone VARCHAR(20)
nickname VARCHAR(20)
r_id INT

角色表(xxx_role)表结构:

字段名 数据类型 主键 外键 非空 唯一 自增
r_id INT
r_name VARCHAR(20)

用户数据表(xxx_user)

u_id u_name password sex cellphone nickname r_id
1 Luffy 123456 13533766888 路飞 1
2 Sauron 654321 13141587777 索隆 4
3 Nami 456789 15867817888 娜美 3
4 Sanji 582346 13533678678 香吉士 5
5 Jobba 567824 15766654788 乔巴 2

角色数据表(xxx_role)

r_id r_name
1 船长
2 医生
3 航海士
4 剑士
5 厨师

(1)根据角色表结构创建数据表(创建语句执行截图,以及查看表结构截图)

// 创建角色表
-- 角色表
CREATE TABLE lhk_role
(
 r_id INT PRIMARY KEY AUTO_INCREMENT,
 r_name VARCHAR(20) NOT NULL UNIQUE
)ENGINE=INNODB DEFAULT CHARSET=UTF8;

在这里插入图片描述

//使用 desc 查看表结构
DESC lhk_role;

在这里插入图片描述
(2)根据用户表结构创建数据表(创建语句执行截图,以及查看表结构截图)

// 创建用户表并外键连接到角色表的 r_id。
-- 用户表
CREATE TABLE lhk_user
(
 u_id INT PRIMARY KEY AUTO_INCREMENT,
 u_name VARCHAR(20) NOT NULL UNIQUE,
 password VARCHAR(32) NOT NULL,
 sex VARCHAR(10) NOT NULL,
 cellphone VARCHAR(20) NOT NULL UNIQUE,
 nickname VARCHAR(20) NOT NULL UNIQUE,
 r_id INT NOT NULL,
 CONSTRAINT fk_u_r FOREIGN KEY (r_id) REFERENCES lhk_role (r_id)
)ENGINE=INNODB DEFAULT CHARSET=UTF8;

//desc 查看表结构

在这里插入图片描述
(3)根据角色数据表插入数据(插入语句执行截图,以及查看角色表截图)

// 给角色数据表插入数据
INSERT INTO lhk_role VALUES(1,'船长');
INSERT INTO lhk_role VALUES(null,'医生');
INSERT INTO lhk_role VALUES(null,'航海士');
INSERT INTO lhk_role VALUES(null,'剑士');
INSERT INTO lhk_role VALUES(null,'厨师');

在这里插入图片描述
在这里插入图片描述

// 查看角色表 lhk_role
SELECT * FROM lhk_role;

在这里插入图片描述
(4)根据用户数据表批量插入数据,密码这个字段请加密。
(插入语句执行截图,以及查看用户表截图)

// 给用户数据表批量插入数据,使用MD5加密密码字段
-- 用户数据表批量插入数据
INSERT INTO lhk_user VALUES(1,'Luffy',MD5('123456'),'男','13533766888','路飞',1),
(2,'Sauron',MD5('654321'),'男','13141587777','索隆',4),
(3,'Nami',MD5('456789'),'女','15867817888','娜美',3),
(4,'Sanji',MD5('582346'),'男','13533687678','香吉士',5),
(5,'Jobba',MD5('567824'),'男','15766654788','乔巴',2);

// 查看用户表
SELECT * FROM lhk_user;

在这里插入图片描述
5)由于路飞的密码太简单,所以要把密码修改为“541_hzw”,并加密。(插入语句执行截图,以及查看用户表截图)

// 修改路飞的密码为“541_hzw”并加密
UPDATE lhk_user SET password=MD5('541_hzw') WHERE nickname='路飞';

//查看用户表
SELECT * FROM lhk_user;

在这里插入图片描述
(6)使用连接查询,显示如下效果
在这里插入图片描述

-- 连接查询
SELECT u_id,nickname,sex,r_name FROM lhk_user INNER JOIN lhk_role ON lhk_user.r_id=lhk_role.r_id;

在这里插入图片描述

第三题:

(1)在实际案例中,昵称是经常被其他用户所搜索的,当数据非常庞大的时候,就需要建立索引,请对用户表中的nickname字段添加索引,提高查询效率。并查看用户表中创建的索引

// 给用户表的nickname字段添加索引
-- 添加索引
CREATE INDEX idx_user_nickname ON lhk_user(nickname);

在这里插入图片描述

// 使用SHOW CREATE TABLE语句查看用户表中创建的索引(\G是为了整理,更好的查看)
SHOW CREATE TABLE lhk_user \G;

在这里插入图片描述
(2)通过用户表和角色表查询出,查出哪些角色还没有用户(提示:子查询)

//子查询
-- 子查询
SELECT * FROM lhk_role WHERE r_id NOT IN (SELECT r_id FROM lhk_user);
(所有角色都已经有了用户,所以显示结果为空)

在这里插入图片描述
(3)通过模糊搜索,查询到昵称里带有“吉”的记录。

//   模糊查询
-- 模糊查询
SELECT * FROM lhk_user WHERE nickname like '%吉%';

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/OnePlusss/article/details/89199517
今日推荐