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 语句1——模糊查询,联表查询


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

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


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

未操作之前:

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

对操作数加10:

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


模糊查询:比较运算符

    _       下划线通配符,代替匹配一个字符,(第二个字是东即可)
        select studentname from student  where studentname LIKE '_东%'
    select 语句1——模糊查询,联表查询


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

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


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

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


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

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


 联表查询 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——模糊查询,联表查询