MySQL常用语句学习笔记,简单案例

本文档展示了如何在MySQL中创建和管理数据库,包括创建`school`数据库,以及`student`、`grade`、`subject`和`result`四张表的详细结构。还涵盖了外键的设置,用于确保数据完整性和一致性。此外,提供了不同类型的SQL查询示例,如内连接、外连接和条件查询,以获取学生信息和考试成绩。
摘要由CSDN通过智能技术生成

MySQL;

-- 创建一个school数据库
create database school;
-- 创建学生表
use school;
create table `student`(
	studentno int(4) not null comment '学号',
    loginpwd varchar(20) default null,
    studentname varchar(20) default null comment '学生姓名',
    sex tinyint(1) default null comment '性别,0或1',
    gradeid int(11) default null comment '年级编号',
    phone varchar(50) not null comment '联系电话,允许为空',
    address varchar(255) not null comment '地址,允许为空',
    borndate datetime default null comment '出生时间',
    email varchar (50) not null comment '邮箱账号允许为空',
    identitycard varchar(18) default null comment '身份证号',
    primary key (studentno),
    unique key identitycard(identitycard),
    key email (`email`)
)engine=myisam default charset=utf8
-- 创建年级表
drop table if exists `grade`;
create table `grade`(
	`gradeid` int(11) not null auto_increment comment '年级编号',
  `gradename` varchar(50) not null comment '年级名称',
    primary key (`gradeid`)
) engine=innodb auto_increment = 6 default charset = utf8;

-- 创建科目表
drop table if exists `subject`;
create table `subject`(
	`subjectno`int(11) not null auto_increment comment '课程编号',
    `subjectname` varchar(50) default null comment '课程名称',
    `classhour` int(4) default null comment '学时',
    `gradeid` int(4) default null comment '年级编号',
    primary key (`subjectno`)
)engine = innodb auto_increment = 19 default charset = utf8;

-- 创建成绩表
drop table if exists `result`;
create table `result`(
	`studentno` int(4) not null comment '学号',
    `subjectno` int(4) not null comment '课程编号',
    `examdate` datetime not null comment '考试日期',
    `studentresult` int (4) not null comment '考试成绩',
    key `subjectno` (`subjectno`)
)engine = innodb default charset = utf8;

创建成功!
在这里插入图片描述
在这里插入图片描述
外键:

ALTER table student
ADD constraint FK_gradeid  foreign key gradeid references grade(gradeid);

constraint 外键名字  foreign key (添加外键的列名)references 参考表的名称(参考表中的列名)

查询:
根据某个范围的sid查询:BETWEEN xx and xx 是一个闭合[]

SELECT * FROM student WHERE sid BETWEEN 1871001 and 1871005

删除:
在这里插入图片描述

联表查询:
在这里插入图片描述

/*
连接查询
   如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询
内连接 inner join
   查询两个表中的结果集中的交集
外连接 outer join
   左外连接 left join
       (以左表作为基准,右边表来一一匹配,匹配不上的,返回左表的记录,右表以NULL填充)
   右外连接 right join
       (以右表作为基准,左边表来一一匹配,匹配不上的,返回右表的记录,左表以NULL填充)
       
等值连接和非等值连接

自连接
*/

-- 查询参加了考试的同学信息(学号,学生姓名,科目编号,分数)
SELECT * FROM student;
SELECT * FROM result;

/*思路:
(1):分析需求,确定查询的列来源于两个类,student result,连接查询
(2):确定使用哪种连接查询?(内连接)
*/
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s
INNER JOIN result r
ON r.studentno = s.studentno

-- 右连接(也可实现)
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s
RIGHT JOIN result r
ON r.studentno = s.studentno

-- 等值连接
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s , result r
WHERE r.studentno = s.studentno

-- 左连接 (查询了所有同学,不考试的也会查出来)
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s
LEFT JOIN result r
ON r.studentno = s.studentno

-- 查一下缺考的同学(左连接应用场景)
SELECT s.studentno,studentname,subjectno,StudentResult
FROM student s
LEFT JOIN result r
ON r.studentno = s.studentno
WHERE StudentResult IS NULL

-- 思考题:查询参加了考试的同学信息(学号,学生姓名,科目名,分数)
SELECT s.studentno,studentname,subjectname,StudentResult
FROM student s
INNER JOIN result r
ON r.studentno = s.studentno
INNER JOIN `subject` sub
ON sub.subjectno = r.subjectno

PS:参考并总结自狂神说java视频教程~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天龙真人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值