当前位置: 首页 > news >正文

做什么类型网站可以吸引用户陕西交通建设养护工程有限公司网站

做什么类型网站可以吸引用户,陕西交通建设养护工程有限公司网站,辽阳企业网站建设费,wordpress可以上传网页吗前文我们了解到了数据库设计的范式要求#xff0c;故生活中很多相互关联的数据被拆分开来#xff0c;但彼此之间通过某种条件链接#xff0c;此文联合查询就是通过多表之间的连接关系#xff0c;来查询我们想要的数据#xff0c;即 《联合查询》 1. 联合查询简介 1.1 为什… 前文我们了解到了数据库设计的范式要求故生活中很多相互关联的数据被拆分开来但彼此之间通过某种条件链接此文联合查询就是通过多表之间的连接关系来查询我们想要的数据即 《联合查询》 1. 联合查询简介 1.1 为什么要使用联合查询 在数据设计时由于范式的要求数据被拆分到多个表中那么要查询⼀个条数据的完整信息就要从多个表中获取数据如下图所⽰要获取学⽣的基本信息和班级信息就要从学⽣表和班级表中获取这时就需要使⽤联合查询这⾥的联合指的是多个表的组合。 1.2 多表联合查询时MYSQL内部是如何进行计算的 首先我们创建两个表用于我们探讨问题 # 创建学生表 create table student ( id bigint, name varchar(20), sex char, class_id bigint ); insert into student value (1,张三,男,1),(2,李四,女,1),(3,王五,男,2);#创建班级表 create table class ( id bigint, name varchar(20) ); insert into class value (1,Java),(2,C),(3,Python);参与查询的所有表取笛卡尔积结果集在临时表中 观察哪些记录是有效数据根据两个表的关联关系过滤掉无效数据 如果联合查询表的个数越多表中的数据量越大临时表就会越大所以建议根据实际情况确定联合查询表的个数 1.3 一个完整的联合查询过程 首先我们创建多个表用于探讨联合查询过程 #课程表 create table course( id bigint PRIMARY KEY auto_increment, name varchar(10) ); insert into course (name) values (Java), (C), (MySQL), (操作系统), (计算机⽹络), (数据结构);# 班级表 create table class ( id bigint, name varchar(20) ); insert into class value (1,软件1班),(2,软件2班),(3,软件3班);#学生表 create table student ( name varchar(20), sno varchar(10), age int, gender boolean, enroll_date date, class_id bigint ); insert into student (name, sno, age, gender, enroll_date, class_id) values (唐三藏, 100001, 18, 1, 1986-09-01, 1), (孙悟空, 100002, 18, 1, 1986-09-01, 1), (猪悟能, 100003, 18, 1, 1986-09-01, 1), (沙悟净, 100004, 18, 1, 1986-09-01, 1), (宋江, 200001, 18, 1, 2000-09-01, 2), (武松, 200002, 18, 1, 2000-09-01, 2), (李逹, 200003, 18, 1, 2000-09-01, 2), (不想毕业, 200004, 18, 1, 2000-09-01, 2);#成绩表 create table score ( score double, student_id varchar(10), course_id bigint ); insert into score (score, student_id, course_id) values (70.5, 1, 1),(98.5, 1, 3),(33, 1, 5),(98, 1, 6), (60, 2, 1),(59.5, 2, 5), (33, 3, 1),(68, 3, 3),(99, 3, 5), (67, 4, 1),(23, 4, 3),(56, 4, 5),(72, 4, 6), (81, 5, 1),(37, 5, 5), (56, 6, 2),(43, 6, 4),(79, 6, 6), (80, 7, 2),(92, 7, 6);1.3.1 查询学生姓名为孙悟空的详细信息包括学生个人信息和班级信息 确定参与查询的表为学⽣表和班级表 # 在from后同时写所有参与查询的表并⽤逗号隔开 select * from student , class ;确定连接条件student表中的class_id与class表中id列的值相等 #在where⼦句中加⼊连接条件select * from student , class where student.class_idclass.id;加⼊查询条件 我们发现直接查询name时导致MySQL不清楚到底是student的name还是class的name此时我们要明确指定 # 明确指定——》这时可以⽤“表名.列号”的⽅式指定具体的列 select * from student , class where student.class_idclass.id and student.name 孙悟空;精减查询结果字段 select student.sno,student.name,student.age,class.name from student,class where student.class_idclass.id and student.name孙悟空;可以为表名指定别名 select s.sno,s.name,s.age,c.name from student s,class c where s.class_idc.id and s.name孙悟空;2. 内连接 2.1 语法 # 1 select 字段 from 表1 别名1, 表2 别名2 where 连接条件 and 其他条件 # 2 select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 where 其他条件;2.2 示例 查询唐三藏同学的成绩 select s.name, sc.score from student s join score sc on sc.student_id s.sno where s.name 唐三藏;查询所有同学的总成绩及同学的个人信息 # 内连接语法格式 1 select s.* ,sum(sc.score) from student s,score sc where s.idsc.student_id group by s.id;# 内连接语法格式 2 select s.* ,sum(sc.score) from student s join score sc on s.idsc.student_id group by s.id;查询所有同学每⻔课的成绩及同学的个⼈信息 select s.* , sc.score,c.name from student s , score sc ,course c where s.idsc.student_id and sc.course_idc.id;3. 外连接 外连接分为左外连接、右外连接和全外连接三种类型MySQL不支持全外连接左外连接返回左表的所有记录和右表中匹配的记录。如果右表中没有匹配的记录则结果集中对应字段会显⽰为NULL右外连接与左外连接相反返回右表的所有记录和左表中匹配的记录。如果左表中没有匹配的记录则结果集中对应字段会显示为NULL MySQL中无论左外连接还是右外连接实质都是先左外连接全外连接结合了左外连接和右外连接的特点返回左右表中的所有记录。如果某一边表中没有匹 配的记录则结果集中对应字段会显示为NULL 3.1 语法 -- 左外连接表1完全显⽰ select 字段名 from 表名1 left join 表名2 on 连接条件; -- 右外连接表2完全显⽰ select 字段名 from 表名1 right join 表名2 on 连接条件;3.2 示例 查询没有参加考试的同学信息 # 左连接以JOIN左边的表为基准左表显示全部记录右表中没有匹配的记录NULL填充 select s.id,s.name,s.sno,s.age,sc.* from student s left join score sc on s.idsc.student_id where sc.score is null;查询没有学⽣的班级 # 查询没有学生的班级 select c.*,s.id,s.name,s.age from student s right join class c on s.class_idc.id where s.id is null;4. 自连接 4.1 应用场景 自连接是自己与自己取笛卡尔积可以把行转化成列在查询的时候可以使⽤where条件对结果进行过滤或者说实现行与行之间的⽐较在做表连接时为表起不同的别名。 # 不为表指定别名select * from score,score;# 指定别名 select * from score s1, score s2;4.2 示例 显示所有MySQL成绩比JAVA成绩高的成绩信息 select s1.* from score s1, score s2, course c1,course c2 # 首先自连接中学生id要一样确保是同一个学生 where s1.student_id s2.student_id # MySQL课程 and s1.course_id c1.id # Java 课程 and s2.course_id c2.id # MySQL成绩大于Java成绩 and s1.score s2.score # 指定c1是MySQLc2是Java and c1.name MySQL and c2.name Java;显⽰所有MySQL成绩比JAVA成绩⾼的学生信息和班级以及成绩信息 # 显示所有MySQL成绩比JAVA成绩高的成绩信息 select s1.* ,student.name,class.name from score s1, score s2, course c1,course c2 ,student,class # 首先自连接中学生id要一样确保是同一个学生 where s1.student_id s2.student_id # MySQL课程 and s1.course_id c1.id # Java 课程 and s2.course_id c2.id # MySQL成绩大于Java成绩 and s1.score s2.score # 指定c1是MySQLc2是Java and c1.name MySQL and c2.name Java # 学生的id对应相应的课程 and student.ids1.student_id # 学生的id对应相应的班级 and student.class_idclass.id;5.子查询 子查询是把⼀个SELECT语句的结果当做别⼀个SELECT语句的条件也叫嵌套查询 5.1 语法 select * from table1 where col_name1 { | IN} (select col_name1 from table2 where col_name2 { | IN} [(select ...)] ... )5.2 单行子查询 嵌套的查询中只返回⼀行数据 示例查询与不想毕业同学的同班同学 select * from student where class_id (select class_id from student where name 不想毕业);5.3 多行子查询 嵌套的查询中返回多⾏数据使⽤[NOT]IN关键字 示例查询MySQL或Java课程的成绩信息 select * from score where course_id in (select id from course where name Java or name MySQL);6.合并查询 在实际应⽤中为了合并多个select操作返回的结果可以使⽤集合操作符unionunion all 6.1 创建新表并初始化数据 # 创建⼀个新表并初始化数据create table student1 like student;# 插入测试数据insert into student1 (name, sno, age, gender, enroll_date, class_id) values (唐三藏, 100001, 18, 1, 1986-09-01, 1), (刘备, 300001, 18, 1, 1993-09-01, 3), (张⻜, 300002, 18, 1, 1993-09-01, 3), (关⽻, 300003, 18, 1, 1993-09-01, 3);6.2 Union 该操作符⽤于取得两个结果集的并集。当使⽤该操作符时会⾃动去掉结果集中的重复⾏。 ⽰例查询student表中id3的同学和student1表中的所有同学 select * from student where id 3 union select * from student1;6.3 Union all 该操作符⽤于取得两个结果集的并集。当使⽤该操作符时不会去掉结果集中的重复⾏。 select * from student where id 3 union all select * from student1;7.插入查询 7.1 语法 INSERT INTO table_name [(column [, column ...])] SELECT ...7.2 示例 将student表中软件1班的学生复制到student1表中 # 插入查询结果 insert into student1 (name, sno, age, gender, enroll_date, class_id) select s.name, s.sno, s.age, s.gender, s.enroll_date, s.class_id from student s, class c where s.class_id c.id and c.name 软件1班; # 验证是否查询结果插入成功 select * from student1;
http://www.hkea.cn/news/14384245/

相关文章:

  • 上海徐家汇网站建设会议网站建设方案
  • 做网站什么意思网站开发类毕业设计
  • 什么是交互式网站专用主机方式建设网站
  • ppt模板免费下载完整版免费网站义乌网站制作是什么
  • 中国建设银行笔试确认网站深圳市龙华区属于哪个区
  • 个人网页英文新闻类的网站如何做优化、
  • 怎么做网站的学校的大图环评怎么在网站做公示
  • 深圳市住房和城乡建设局网站首页请别人做网站需要注意什么
  • 丽江网站建设c3sales软件开发一般多少钱
  • 中太建设集团官方网站设计需要的软件
  • 昆明网站推广自学网站开发需要多久
  • 给公司做网站和公众号需要多少钱网站托管西安
  • 临沂网站开发怎么做招聘网站的调研
  • 如何借助织梦制作一个简单的网站在线做app的网站
  • 网站 制作公司教育培训网站案例
  • 如何设计旅游网站的域名著名的外贸网站
  • 小本本教你做网站服装网页设计图
  • 做动态图网站有哪些保定企业制作网站
  • 济南seo整站优化价格个人网站可以做充值
  • 国外网站 网站 推荐网站的运营费用吗
  • wordpress 网站 seo怎么建立信息网站平台
  • 建设工程法律网站ppt模板网免费下载
  • 那个网站适合学生做兼职优秀网页界面设计
  • 聊城建网站哪家好电子商务网站建设与管理课件
  • 郑州网站建设制作云浮疫控动态
  • 昆明自助建站软件wordpress免备案空间
  • 对网站设计的建议如何查看网站seo
  • 中铁建设集团有限公司基础设施事业部泰州seo公司
  • 深圳市城乡建设部网站首页做个产品网站要多少钱
  • 运营网站挣钱方法网页设计与制作实训报告心得体会2000字