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

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

    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

 

 

 


    

posted on 2020-11-08 20:14  沫戏回首  阅读(893)  评论(1)    收藏  举报

导航