首页 > 其他 > 详细

select 语句1——模糊查询,联表查询

时间:2020-11-08 22:14:48      阅读:47      评论:0      收藏:0      [点我收藏+]

首先来看一下数据库的设计首先是建表

    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

      resul:

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

    student:

 

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=InnoDB DEFAULT CHARSET=utf8

    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

接着是插入数据(也可以自己一边写,一边根据自己的操作,自己插入数据):

  subject表插入数据:

insert into `subject`(`subjectno`,`subjectname`,`classhour`,`gradeid`)values
(1,高等数学-1,110,1),
(2,高等数学-2,110,2),
(3,高等数学-3,100,3),
(4,高等数学-4,130,4),
(5,C语言-1,110,1),
(6,C语言-2,110,2),
(7,C语言-3,100,3),
(8,C语言-4,130,4),
(9,Java程序设计-1,110,1),
(10,Java程序设计-2,110,2),
(11,Java程序设计-3,100,3),
(12,Java程序设计-4,130,4),
(13,数据库结构-1,110,1),
(14,数据库结构-2,110,2),
(15,数据库结构-3,100,3),
(16,数据库结构-4,130,4),
(17,C#基础,130,1);

 

   student插入数据

 

insert into `student` (`studentno`,`loginpwd`,`studentname`,`sex`,`gradeid`,`phone`,`address`,`borndate`,`email`,`identitycard`)
values
(1000,123456,张伟,0,2,13800001234,北京朝阳,1980-1-1,text123@qq.com,123456198001011234),
(1001,123456,赵强,1,3,13800002222,广东深圳,1990-1-1,text111@qq.com,123456199001011233);insert into `student` (`studentno`,`loginpwd`,`studentname`,`sex`,`gradeid`,`phone`,`address`,`borndate`,`email`,`identitycard`)
values
(1000,123456,张伟,0,2,13800001234,北京朝阳,1980-1-1,text123@qq.com,123456198001011234),
(1001,123456,赵强,1,3,13800002222,广东深圳,1990-1-1,text111@qq.com,123456199001011233);

 

    result插入数据

insert into `result`(`studentno`,`subjectno`,`examdate`,`studentresult`)
values
(1000,1,2013-11-11 16:00:00,85),
(1000,2,2013-11-12 16:00:00,70),
(1000,3,2013-11-11 09:00:00,68),
(1000,4,2013-11-13 16:00:00,98),
(1000,5,2013-11-14 16:00:00,58);

    grade插入数据:

insert into `grade` (`gradeid`,`gradename`) values(1,大一),(2,大二),(3,大三),(4,大四),(5,预科班);

 

 

 

查看当前mysql版本号
  select   version()

技术分享图片

 

 


可以用来计算:
  select 19*10-98  as 结果

技术分享图片

 

 

 


对选出的int型数据进行操作
  select studentresult+10 from result

 

未操作之前:

技术分享图片

 

 

 

对操作数加10:

技术分享图片

 

 


模糊查询:比较运算符

    _       下划线通配符,代替匹配一个字符,(第二个字是东即可)
        select studentname from student  where studentname LIKE ‘_东%‘
    技术分享图片

 

 


    %    百分号代表匹配任意个字符   (无论哪个,只要有东就好)
        select studentname from student  where studentname LIKE ‘%东%‘

  技术分享图片


    in   取范围   里面需要的是一个具体的值(查询gradeid为1或者2的)
        select  subjectname,gradeid from subject   where gradeid in ("1","2")

技术分享图片

 

 

 


    null  (注意的是null和“"是不一样的,这是查询loginpwd是Nul的)
        select studentname ,loginpwd from student  where  loginpwd is NULL

 

技术分享图片

 

 

 


 联表查询 join(连接的表)    on(条件的判断)

    思路:所查询的字段来自于那些表
                 采用的连接方式(考虑是以那个表作为基准)
    inner join
    left join  从左表进行查询,即使右表没有
    right join
    

    三表联查:学生的姓名,学号,成绩,课程号(注意要查询学生的成绩,以result,成绩表为基准)
    SELECT studentname,a.studentno,studentresult,subjectname FROM student a RIGHT JOIN    
     result  b ON a.studentno=b.studentno  INNER JOIN `subject`  c ON b.subjectno=c.subjectno

技术分享图片

 

 

 


    

select 语句1——模糊查询,联表查询

原文:https://www.cnblogs.com/moxihuishou/p/13945619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!