zoukankan      html  css  js  c++  java
  • Mysql-多表数据记录查询

    多表数据记录查询

    一、关系数据操作

    • 并(UNION)

    并就是把具有相同字段数目和字段类型的表合并到一起

    • 笛卡尔积(CARTESIAN PRODUCT)

    笛卡尔积就是没有连接条件表关系返回的结果。

    • 内连接(INNER JOIN)

    所谓内连接就是在表关系笛卡尔积数据记录表中,保留表关系中,所有匹配的数据记录,舍弃不匹配的数据记录。

    • 外链接(OUTER JOIN)

    所谓外连接:就是在表关系的笛卡尔积数据记录中,不仅保留表关系中所匹配的数据记录,而且还会保留部分不匹配的数据记录。 按照保留不匹配条件数据记录来源可分为左外连接,右外连接,全外连接。

    左外连接

    所谓左外连接:就是表关系的笛卡尔积中,除了选择相匹配的数据记录,还包含关联左边表中不匹配的数据记录、

    右外连接

    右外连接操作就是表关系的笛卡尔积中,除了选择相匹配的数据记录,还包含关联右表中不匹配的数据记录。

    全外连接

    全外联接操作就是表关系笛卡尔积中,除了选择相匹配的数据记录,还包含关联作用两表中不匹配的数据记录。

    二、内联查询

    SELECT field1 field2 field3
    	FROM join_tablename1 INNER JOIN join_table_name2 [INNER JOIN join_tablename]
    	ON join_condition
    

    三、外链接查询

    SELECT field1 field2 field3 
    	FROM join_tablename1 LEFT|RIGHT|FULL [OUTER] JOIN join_tablename2
    	ON join_condition
    

    四、使用MySql常用函数

    字符串函数:该类函数主要用于处理字符串

    数值函数:该类函数主要用于处理数字

    日期函数:该类函数主要用于处理日期和事件

    系统信息函数:该类函数主要用于获取MySQL软件的系统信息

    • 合并字符串函数CONCAT()和CONCAT_WS()
    #合并字符串函数一
    CONCAT(S1,S2,S3)
    select ('my','sq','l')
    mysql
    #合并字符串函数二
    CONCAT_WS(SEP,S1,S2,...SN)
    SELECT CONCAT_WS('-','029','88461234')
    029-88461234
    
    • 比较字符串大小函数STRCMP()

    在MySQL软件中可以通过STRCMP()比较所传入的字符串对象。

    #比较字符串大小
    STRCMP(str1,str2)
    如果参数str1大于Str2,则返回结果1,如果参数str1小于str2,则返回结果-1,如果str1等于str2则返回结果0
    
    • 获取字符串长度的函数LENGTH()和字符串函数CHAR_LENGTH()
    #获取传入参数str的长度
    LENGTH(str)
    #获取传入的参数str的字符数
    CHAR_LENGTH(str)
    
    • 实现字母大小写转换函数UPPER()和字符幻术LOWER()

    在MySQL中可以通过UPPER()和UCASE()函数实现将字符串的所有字母转化成大写字母。

    #转换为大写
    UPPER(S)
    #转换为大写
    UCASE(S)
    

    通过LOWER()和LCASE()函数来实现将字符串中所有的字母转换成小写字母。

    #转换为小写字母
    LCASE(S)
    #转换为小写字母
    LOWER(S)
    
    • 查找字符串
    #返回字符串位置的FIND_IN_SET()函数
    FIND_IN_SET(str1,str2)
    上述函数,将会返回在字符串str2中与str1相匹配的字符串的位置,参数str2中将包含若干个用逗号隔开的字符串。
    
    #返回指定字符串位置的FIELD()函数
    FIELD(str,str1,str2....)
    上述函数将会返回第一个与字符串str匹配的字符串的位置
    
    #返回指定位置的字符串的ELT()函数
    ELT(n,str1,str2)
    上述函数将会返回第n个字符串
    
    • 从现有字符串中截取子字符串
    #从左边或右边截取字符串
    LEFT(str,num)
    RIGHT(str,num)
    
    #截取指定位置和长度的字符串
    SUBSTRING(str,num,len)
    MID(str,num,len)
    
    • 去除字符串的首位空格
    #去除字符串开始处空格
    LTRIM(str)
    #去除字符串结束处空格
    RTRIM(str)
    #去除字符串首尾的空格
    TRIM(str)
    
    • 替换字符串
    #使用INSERT函数
    INSERT(str,pos,len,newstr)
    上述函数会将字符串str中的pos位置开始长度为len的字符串newstr来替换,如果参数pos的值超过字符串的长度,则返回值为原始字符串str。如果len的长度大于原来字符串中所剩的长度,则从位置POS开始进行全部替换,若任何一个参数NULL,则返回至为NULL
    
    #使用REPLACE()函数
    REPLACE(str,substr,newstr)
    上述函数会将字符串,str中的字符串substr用字符串newstr来替换。
    

    五、使用数值函数

    • 获取随机数
    #通过RAND()和RAND(X)函数来获取随机数
    SELECT RAND(),RAND(),RAND(3),RAND(3)
    
    • 获取整数的函数
    CEIL(X)
    上述函数返回大于或等于数值X的最小整数
    
    FLOOR(X)
    上述函数返回小于或等于数值X的最大整数
    
    • 截取数值函数
    RRUNCAT(X,Y)
    上述函数返回值X保留到小数点后y位的值
    
    • 四舍五入函数
    ROUND(x)
    
    


    作者:关小涛
    学习和分享是博客最大的乐趣,欢迎大家取之所需。
    努力是自己努力的原因,每周天写博客总结工作中的新技能和出现的问题
  • 相关阅读:
    Ubuntu 永久修改DNS
    三大主流MQ的组织结构
    nginx基本配置
    CentOS7安装RabbitMQ
    单个表上亿行数据的主键、索引设计,及分页查询
    [SQL]行列转换
    《团队协作的五大障碍》读后感
    【2021-09-26】面对困难是未来绝不后悔的事情
    【2021-09-25】摇摆不定反逼自己脚踏实地
    【一句日历】2021年10月
  • 原文地址:https://www.cnblogs.com/XtsLife/p/11057486.html
Copyright © 2011-2022 走看看