106 MySQL_11 _综合练习

本文提供了一套MySQL数据库的综合练习案例,包括多表查询、子查询及分页查询等核心技能训练,通过实际操作加深对SQL语句的理解与运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

106 MySQL_11 _综合练习

综合练习

1.数据库表

#创建用户表 
create table user(
	userid int primary key auto_increment, 
    username varchar(20) not null, 
    password varchar(18) not null, 
    address varchar(100), 
    phone varchar(11)
);

#创建分类表
create table category(
	cid varchar(32) PRIMARY KEY ,
	cname varchar(100) not null        #分类名称
);

#商品表
CREATE TABLE products (
	pid VARCHAR(32) PRIMARY KEY,
	NAME VARCHAR(40), 
	price DOUBLE(7,2), 
	category_id VARCHAR(32),
	CONSTRAINT fk_products_category_id  FOREIGN KEY(category_id) REFERENCES category(cid)
);


#订单表
CREATE TABLE orders(
	oid VARCHAR(32) PRIMARY KEY ,
	totalprice DOUBLE(12,2), 
	userid INT ,
	CONSTRAINT fk_orders_userId FOREIGN KEY(userid) REFERENCES USER(userid) #外键
);


#订单项表
create table orderitem( 
    oid varchar(32), #订单id 
    pid varchar(32), #商品id 
    num int , 			#购买商品数量
	primary key (oid, pid),  #主键
	constraint fk_orderitem_oid foreign key(oid) references orders(oid), 
    constraint fk_orderitem_pid foreign key(pid) references products(pid)
);
#---------------------------------------------------------------- 

#初始化数据 
#用户表添加数据

INSERT INTO USER(username,PASSWORD, address,phone) 
VALUES( '张三','123','北京昌平沙河', '13812345678');

INSERT INTO USER(username, PASSWORD, address, phone) 
VALUES('王五', '567','北京海淀', '13812345141'); 
       
INSERT INTO USER(username,PASSWORD,address,phone) 
VALUES('赵六','123','北京朝阳','13812340987' ); 
       
INSERT INTO USER(username, PASSWORD, address, phone) 
VALUES('田七', '123', '北京大兴', '13812345687');

#给商品表初始化数据
insert into products(pid,name,price,category_id) 
values('p001','联想5000',5000, 'c001'); 

insert into products(pid,name,price,category_id)
values('P002', '海尔3000',3000,'c001' );

insert into products(pid,name,price,category_id) 
values('p003', '雷神','5000',5000,'c001');

insert into products(pid,name,price,category_id)
values('p004','JACK JONES',800,'C002');

insert into products(pid,name,price,category_id)
values('p005','真维斯',200,'002');

insert into products(pid,name,price,category_id)
values('p006', '花花公子',1440, 'C002' );

insert into products(pid,name,price,category_id) 
values('p007','劲霸',2000,'c002');  
       
insert into products(pid,name,price,category_id) 
values('p008','香奈儿',800,'c003'):       
       
insert into products(pid,name,price,category.id) 
values('p009','相宜本草',1200,'C003');       
       
insert into products(pid,name,price,category_id)
values( 'p010','梅明子',1200,null);

#给分类表初始化数据
insert into category values( 'c001','电器');
insert into category values( 'c002','服饰');
insert into category values( 'c003','化妆品');
insert into category values( 'c004','书籍');

#添加订单
insert into orders values('o6100',18000.50,1);
insert into orders values('o6101',7200.35,1);
insert into orders values('o6102',600.00,2);
insert into orders values('o6103',1300.26,4);

#订单详情表
insert into orderitem values('o6100','p001',1),('o6100','p002',1),('o6101','p003',1);

2.综合练习1-【多表查询】

2.1查询所有用户的订单

SELECT o.oid,o.totalprice, u.userid,u.username,u.phone FROM orders o 
INNER JOIN USER u ON o.userld=u.userid;

2.2查询用户id为1的所有订单详情

SELECT o.oid,o.totalprice, u.userid,u.username,u.phone ,oi.pid FROM orders o 
INNER JOIN USER u ON o.userId=u.userid 
INNER JOIN orderitem oi ON o.oid=oi.oid
where u .userid=1;

3.综合练习2-【子查询】

3.1查看用户为张三的订单

SELECT * FROM orders 
WHERE userId=(SELECT userid FROM USER WHERE username='张三')

3.2查询出订单的价格大于800的所有用户信息。

SELECT * FROM USER 
WHERE userid IN (SELECT DISTINCT userid FROM orders WHERE totalprice>800);

4.综合练习3-【分页查询】

4.1查询所有订单信息,每页显示5条数据

#查询第一页

SELECT * FROM orders LIMIT 0,5;
### 关于XSS和MySQL文件靶场的手工渗透测试学习教程 #### XSS攻击的学习资源 跨站脚本攻击(Cross-Site Scripting,简称XSS)是一种常见的Web安全漏洞。它允许攻击者通过注入恶意脚本到受信任的网站上,从而窃取用户的敏感数据或执行其他恶意操作。 对于初学者来说,可以从以下几个方面入手: - **理解XSS的工作原理**:XSS分为存储型、反射型和DOM型三种类型[^1]。每种类型的攻击方式不同,因此需要分别掌握其特点。 - **实践环境搭建**:可以使用OWASP Juice Shop这样的综合型Web应用安全性练习平台来模拟真实的XSS攻击场景[^2]。此外,也可以尝试Pikachu等专门针对单一漏洞设计的小型靶场工具[^3]。 ```bash git clone https://github.com/bugcrowd/pikachu.git cd pikachu php -S localhost:8000 ``` 上述命令用于克隆并运行Pikachu项目,在本地启动服务后即可访问相应的XSS实验页面进行手工渗透测试演练。 #### MySQL文件读写利用技巧 当涉及到数据库层面的安全隐患时,SQL Injection往往是主要切入点之一。如果成功实施了SQL注入,则有可能进一步扩展权限至操作系统级别甚至物理磁盘上的任意文件存取控制权。 具体而言,MySql提供了LOAD_FILE()函数以及INTO OUTFILE语句作为潜在威胁手段: - `SELECT LOAD_FILE('/etc/passwd');` 可以尝试加载服务器端指定路径下的文本内容返回给客户端显示出来; - 而像下面这样构造查询字符串就可以把当前表中的某些字段导出保存成外部新创建出来的文档形式存在硬盘里头去了:`INSERT INTO test_table VALUES ('test', 'data') UNION ALL SELECT NULL,'<?php echo shell_exec($_GET['cmd']);?>' INTO OUTFILE '/var/www/html/shell.php';`. 当然实际操作过程中还需要考虑诸多因素比如目标主机的操作系统的差异性所带来的兼容性问题等等. #### 综合实战指南 为了更好地巩固理论知识并将所学应用于真实世界当中去解决复杂难题的能力培养起来的话,这里给出几条建议供大家参考借鉴: - 多参与CTF竞赛活动积累经验; - 阅读官方文档深入探究各个技术细节之处; - 加入社区讨论群组互相交流心得感悟共同进步成长. 最后提醒大家注意合法合规前提下开展一切研究探索工作!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悬浮海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值