精华内容
下载资源
问答
  • MySQL(05)——SQL语句多表查询

    千次阅读 2018-10-12 23:20:36
    这时我们需要的数据,可能不会直接通过一张全部获取到,这时就需要同时查询多张数据,得到最后想要的数据。 创建以及准备数据: create table A( A_ID int primary key auto_increment, A_NAME varchar(20) ...

    一个项目中肯定会有多张数据表,而数据表之间会存在各种各样的关系。这时我们需要的数据,可能不会直接通过一张表全部获取到,这时就需要同时查询多张数据表,得到最后想要的数据。
    创建表以及准备数据:

    create table A(
      A_ID int primary key auto_increment,
      A_NAME varchar(20) not null
    );
    insert into A values(1,'苹果');
    insert into A values(2,'橘子');
    insert into A values(3,'香蕉');
    
    create table B( 
       A_ID int primary key auto_increment,
       B_PRICE double
    );
    insert into B values(1,2.30);
    insert into B values(2,3.50);
    insert into B values(4,null);
    
    

    笛卡尔积介绍

    笛卡尔积问题:把多张表放在一起,同时去查询,会得到一个结果,而这结果并不是我们想要的数据,这个结果称为笛卡尔积。
    笛卡尔积的数据,对程序是没有意义的, 我们需要对笛卡尔积中的数据再次进行过滤。
    对于多表查询操作,需要过滤出满足条件的数据,需要把多个表进行连接,连接之后需要加上过滤的条件。
    在这里插入图片描述

    内连接

    内连接查询的结果:两表的公共部分。
    在这里插入图片描述
    内连接:
    语法一:
    select 列名 , 列名 … from 表名1,表名2 where 表名1.列名 = 表名2.列名;

    select a.*,b.B_PRICE from a,b where a.A_ID=b.A_ID;
    

    在这里插入图片描述
    语法二:
    select 列名 , 列名 … from 表名1 inner join 表名2 on 条件

    select a.*,b.B_PRICE from a inner join b on a.A_ID=b.A_ID;
    

    在这里插入图片描述

    外连接

    左外链接

    在这里插入图片描述

    左外连接:用左边表去右边表中查询对应记录,不管是否找到,都将显示左边表中全部记录。
    即:虽然右表没有香蕉对应的价格,也要把他查询出来。
    语法:select * from 表1 left outer join 表2 on 条件;

    select * from a left outer join b on a.A_ID=b.A_ID;
    

    在这里插入图片描述

    右外连接

    在这里插入图片描述

    用右边表去左边表查询对应记录,不管是否找到,右边表全部记录都将显示。
    即:不管左方能够找到右方价格对应的水果,都要把左方的价格显示出来。
    语法:select * from 表1 right outer join 表2 on 条件;

    select * from a right outer join b on a.A_ID=b.A_ID;
    

    在这里插入图片描述

    全连接

    全外连接:左外连接和右外连接的结果合并,会去掉重复的记录。
    select * from 表1 full outer join 表2 on 条件
    select * from a full outer join b on a.A_ID = b.A_ID; 但是mysql数据库不支持此语法。
    在这里插入图片描述

    在sql语句全连接,其实就是左外链接和右外连接之和,去掉重复的数据。可以使用union
    语法:select * from 表1 left outer join 表2 on 条件 union select * from 表1 right outer join 表2 on 条件;

    select * from a left outer join b on a.A_ID=b.A_ID
    union
    select * from a right outer join b on a.A_ID=b.A_ID;
    

    在这里插入图片描述

    以上的outer均可以省略不写。

    select * from a left join b on a.A_ID=b.A_ID;
    

    在这里插入图片描述

    SQL关联子查询

    子查询:把一个sql的查询结果作为另外一个查询的参数存在。
    – 需求1:查询价格最贵的水果名称

    select A_NAME from a
    where A_ID in
    	(select A_ID from b
    		where b.B_PRICE=(select max(b.B_PRICE) from b));
    

    或者写成(将每个字段在哪个表中注明):

    select a.A_NAME from a
    where a.A_ID in
    	(select b.A_ID from b
    		where b.B_PRICE=(select max(b.B_PRICE) from b));
    

    在这里插入图片描述

    in和exists的用法

    关联子查询其他的关键字使用:
    age=23 or age=24 等价于 age in (23,24)
    in 表示条件应该是在多个列值中。
    in:使用在where后面,经常表示是一个列表中的数据,只要被查询的数据在这个列表中存在即可。

    select * from a 
    where a.A_ID in 
    (select b.A_ID from b where b.B_PRICE>3)
    

    exists:
    exists:表示存在,当子查询的结果存在,就会显示主查询中的 当前行的所有数据。
    语法: select * from 表名 where exists (子查询语句);

    select * from a 
    where exists
    (select b.A_ID from b where b.B_PRICE>3 and a.A_ID=b.A_ID)
    

    在这里插入图片描述

    all、any和some的使用

    all 需要和 union 一起使用,如果在查询时, 单独使用union 可以把多个查询的结果进行合并, 会过滤掉重复的数据。如果union all 只会简单的把多个查询结果合并。

    any 和 some用法一致:

    SOME 是 SQL-92标准的ANY的等效物
    any和some是没有区别的,some和any 效果一样 ,代表一部分记录。
    在这里插入图片描述

    <any(1,2,3)  等价于 <1 or <2 or <3  等价与 <3   等价于 <max(1,2,3)  
    >all(1,2,3)   等价与 >1 and >2 and >3   等价与>3   等价与 >max(1,2,3)
    < all(1,2,3)  等价于 <1 and <2 and <3 等价于 <1   等价与 <min(1,2,3)
    

    mysql的自带函数

    如日期类的:
    select current_date();
    select now();

    字符串:
    select ucase(“abc”);
    在这里插入图片描述
    数学函数:
    select BIN(22);
    select ABS(-20);

    展开全文
  • mysql表查询sql语句

    千次阅读 2018-12-17 23:27:00
    (1)写一个SQL语句查询选修了“计算机原理”的学生学号和姓名 (2)写一个SQL语句查询“小明”同学选修的课程名称 (3)写一个SQL语句查询选修了5门课程的学生学号和姓名 答案: (1) select stud...
    1. 表结构:

    Student学生表(学号、姓名、性别、年龄、编辑)

    Course课程表(编号、课程名称)

    sc选课表(选课编号、学号、课程编号、成绩)

    (1)写一个SQL语句,查询选修了“计算机原理”的学生学号和姓名

    (2)写一个SQL语句,查询“小明”同学选修的课程名称

    (3)写一个SQL语句,查询选修了5门课程的学生学号和姓名

     

    答案:

    1

    select student.stu_no,student.stu_name

    from student,course,sc

    where course.c_no=sc.c_no and sc.stu_no=student.stu_no and course.c_name='计算机原理';

    2

    select course.c_name,student.stu_name

    from student,course,sc

    where student.stu_name='小明' and student.stu_no=sc.stu_no and sc.c_no=course.c_no;

    3

    select student.stu_no,stu_name

    from student,course,sc

    where student.stu_no=sc.stu_no and sc.c_no=course.c_no

    group by student.stu_no

    having count(*)=5

     

    建表及插入数据可参考如下语句:

    create table student(

    stu_no int,

    stu_name varchar(10),

    sex char(1),

    age int(3),

    edit varchar(20)

    );

     

    insert into student values

    (1,'wang','',21,'hello'),

    (2,'小明','',22,'haha2'),

    (3,'hu','',23,'haha3'),

    (4,'li','',25,'haha4');

     

    create table course(

    c_no int,

    c_name varchar(10)

    );

     

    insert into course values

    (1,'计算机原理'),

    (2,'java'),

    (3,'c'),

    (4,'php'),

    (5,'py');

     

    create table sc(

    sc_no int,

    stu_no int,

    c_no int,

    score int(3)

    );

     

    insert into sc values

    (1,1,1,80),

    (2,2,2,90),

    (3,2,1,85),

    (4,2,3,70),

    (5,2,4,95),

    (6,2,5,89);

    转载于:https://www.cnblogs.com/reyinever/p/10134689.html

    展开全文
  • mysql 结构查询SQL语句

    千次阅读 2020-07-23 11:21:43
    2、查看的DDL语句 show create table student; 3、查看列的结构信息 select column_name,data_type,column_comment,column_key,extra,character_maximum_length,is_nullable,column_default from information_...

    1、查看表结构

    desc student;
    

    在这里插入图片描述

    2、查看表的DDL语句

    show create table student;
    

    在这里插入图片描述

    3、查看列的结构信息

    select column_name,data_type,column_comment,column_key,extra,character_maximum_length,is_nullable,column_default
    from information_schema.columns 
    where table_schema = (select database()) and table_name = 'student' ;
    

    在这里插入图片描述

    说明: information_schema.columns 中还有其他的描述字段信息的列,可以根据需求添加。

    4、查看表的注释

    select table_name,table_comment 
    from information_schema.tables 
    where table_schema = (select database()) and table_name = 'student' ;
    

    在这里插入图片描述

    展开全文
  • mysql创建sql语句

    千次阅读 2019-11-05 19:43:23
    1 修改mysql数据库表名 语法: alter table table_name(旧表名) RENAME TO table_newsname(新表名);...3 创建的语法 create table table_name( id int not null primary key auto_incremwnt,...

    1 修改mysql数据库表名
    语法:
    alter table table_name(旧表名) RENAME TO table_newsname(新表名);
    2 删除mysql数据库表名
    语法:drop table table_name(表名);
    3 创建表的语法
    create table table_name(
    id int not null primary key auto_incremwnt,
    name varchar(255),

    content varchar(255)
    )charset=utf8;
    4 添加数据:
    insert into table_name(字段名) value(‘添加的字段’);注意:字段名要与字段

    对应;
    5 修改数据
    update table_name set 字段=‘’… where 条件;
    6 删除数据
    delete from table_name where 条件;

    展开全文
  • Oracle Sql语句转换成Mysql Sql语句

    热门讨论 2013-02-17 12:06:40
    Oracle Sql语句转换成Mysql Sql语句java 源码,非常简单,只要给定源oracle sql语句地址,和生成目标文件地址运行即可。
  • Mysql 时间区间查询sql语句

    千次阅读 2018-09-11 10:34:19
    直接贴sql语句  &lt;if test="checkStartTime!=null and checkStartTime!=''"&gt;  &lt;![CDATA[ and DATE_FORMAT(checkStartTime, '%Y-%m-%d')&gt;= DATE_FORMAT(#{checkStartTime}, ...
  • Mysql查询结果插入另一张表Sql语句

    千次阅读 2020-01-07 18:57:46
    1、Mysql查询结果插入另一张表Sql语句 INSERT INTO insure_product_area (productId, gbCode, areaType) (SELECT 14 AS productId, t.gbCode, 'A类' AS areaType FROM insure_area_config t WHERE t.level &...
  • mysql查询表和字段信息sql语句

    千次阅读 2019-05-18 22:42:00
    查询mysql表和字段信息的语句记录 库名是:base 表名是:data 查询数据库信息,有几个表显示几行 select * from information_schema.tables where table_schema="base" and ...查询表信息 SELECT table_name...
  • MySQL一条SQL语句查询多条统计结果

    千次阅读 2019-11-09 16:30:04
     今天在写H5端接口时,我想换种方式查,也就是通过一条SQL查询个状态的订单数量。在网上搜了搜,方法可行,所以就尝试了下,果不其然成功了。  示例如下(数据只为掩饰今天的问题,设计并不严谨。勿怪): ...
  • mysql使用SQL语句创建

    万次阅读 2018-11-19 11:16:26
    使用SQL语句创建一张,不仅可以可以快速创建,少去了不少时间,还可以从这看出一个人对该技能点的熟悉程度。 下面是一张简单的创建语句: CREATE TABLE `tb_area`( `area_id` INT(2) NOT NULL AUTO_...
  • mysql建表常用sql语句

    万次阅读 多人点赞 2019-04-20 11:49:49
    最近跟项目,写后台需要用到SQL语句,就整理了一下mysql建表常用sql语句,并写几个可执行SQL脚本,方便日后复习查看以及使用: 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也...
  • MYSQL的修改结构SQL语句

    千次阅读 2019-07-07 22:02:41
    MYSQL的修改结构SQL语句: -- 查看创语句 SHOW CREATE TABLE t_login; -- 查看结构 desc t_login1; -- 增加列 ALTER TABLE t_login1 ADD COLUMN COL_1 VARCHAR(10); -- 修改列 ALTER TABLE t_login1 ...
  • mysql数据库查询SQL语句总结

    千次阅读 2017-02-08 16:19:47
    查询语句的基础建表和数据语句: CREATE TABLE `ssh_employee` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `LAST_NAME` varchar(255) DEFAULT NULL, `EMAIL` varchar(255) DEFAULT NULL, `BIRTH` datetime ...
  • 删除MySQL表SQL语句-DROP-TABLE-简介

    千次阅读 2019-12-10 21:11:15
    辨析: 在SQL中, DROP 用于删除结构等信息, 属于数据格式定义 DDL的范畴; 而 DELETE 用于删除数据,属于数据内容操作 DML 的范畴。 官方给出的 DROP 关键字删除结构的语法如下: DROP [TEMPORARY] TABLE [IF ...
  • mysql 多表 update sql语句总结

    万次阅读 2012-12-10 22:41:17
    mysql 多表 update 有几种不同的写法。 假定我们有两张,一张为Product存放产品信息,其中有产品价格列Price;另外一张是ProductPrice,我们要将ProductPrice中的价格字段Price更新为Price中价格...
  • Mysql查询慢的 Sql语句的记录查找

    万次阅读 2018-11-16 17:54:52
    查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化。 1. 登陆我们的mysql数据库: 2. 查看一下当前的慢查询是否开启,以及慢...
  • Oracle与MySQL的分页查询sql语句格式

    千次阅读 2018-03-13 23:00:10
    MySQL的limit语句  (select * from 名称 limit m,n)  是很方便,但是对数据量很大的 不适合直接使用 。参考: 点击打开链接 综合考虑下,我们可以利用索引来进行高效地分页查询 方式一:把这一页的第...
  • MySql实现分页查询的SQL,mysql实现分页查询sql语句

    万次阅读 多人点赞 2016-05-23 14:44:19
    摘要:MySql数据库实现分页查询SQL语句写法! 一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,...
  • 我现在有两张 table1,table2,其中table1的字段(id,name),table2的字段(id, ...需要查询出来 (name和status为0的总数)的集合该怎么写sql?status的值只有0或者1. table1的id和table2的table1_Id是主外键关联的。
  • mysql常用查看结构的SQL语句

    千次阅读 2019-12-31 21:53:15
    1.查看结构: SELECT column_name,data_type FROM information_schema.columns WHERE table_name='数据库表名'; 2.查看的主键: SELECT column_name AS 主键 FROM INFORMATION_SCHEMA.`KEY_COLUMN_USAGE` WHERE...
  • mysql 修改结构常用sql语句

    万次阅读 2018-11-13 17:52:43
    批量修改表名的sql语句 alter table old_name rename new_name; --修改表名 alter table test add column add_name varchar(10); --添加列 alter table test drop column del_name; --删除列 alter table ...
  • MySQL多表联合查询条件语句顺序

    千次阅读 2019-02-15 15:11:38
    mysql 多表联合查询 mysql 多表历澜和查询条件语句顺序 在数据库操作中,多表联合查询是后台开发者常用到的查询语句。这里记录一次本人在MySQL数据库下在进行多表联合查询时因为条件语句顺序放置错误而导致的异常。
  • MySQL查询正在执行的SQL语句

    千次阅读 2019-07-20 10:51:04
    人工智能,零基础入门!http://www.captainbed.net/inner select * from information_schema.`PROCESSLIST` where info is not null;
  • 此篇文章中所示用的sql语句适用于mysql关系型数据库查询数据,其他类型的数据库是否支持,没有去尝试,想要在mysql 1.首先准备两个,一个是学生(student) 另一个是科目分数(grade) 当数据准备完成后,接下来...
  • MySQL建立索引的SQL语句

    万次阅读 2019-12-26 15:11:25
    1. 主键索引:创建时自动创建 { 聚集索引:一个中只有一个聚集索引 } 2. 唯一索引:CREATE UNIQUE INDEX unique_index_warn[索引名称]ON cas_alarm[表名](warn_id[列名]) 3. 普通索引:CREATE INDEX index_...
  • 1.sql语句中的单行注释 2.多行注释 3. 新建数据库 4.删除数据库 5. 创建 6.MySQL 删除数据 7.MySQL 插入数据 8.MySQL 查询数据 ...15.MySQL 连接的使用多表联动查询 16.MySQLNULL 17 正则表达式
  • MySQL常用SQL语句大全

    万次阅读 多人点赞 2017-12-21 19:22:28
    MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle、MS-SQLMySQL更拥有轻便、灵活、开发速度快的特色,更适用于中小型数据的存储与架构。MySQL之所以能够被数以万计的网站采用,也是...
  • Mysql中使用sql语句加索引

    千次阅读 2019-02-27 11:38:16
    Mysql中使用sql语句对已有的加索引: ALTER TABLE 表名 ADD index 索引名 ( `列名` ); 如果此文章有帮助到您,还请施舍施舍

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 639,876
精华内容 255,950
关键字:

mysql多表查询sql语句

mysql 订阅