• mysql常用的查询语句


    最近在学习node做后台,数据库用的是Mysql,于是中断一下看一下mysql语句,方便后面使用

    查询表中全部信息:

    select * from 表名

    查询表中指定列的信息:

    select 列1,列2 from 表名

    数据去重:

    select distinct 列... from 表名

    拼接结果:

    select concat(列1,列2) from 表名

    运算符优先级:

    1.乘法和除法优先级高于加法和减法

    2.同级运算的顺序是从左到右

    3.表达式中使用“括号”可强行改变优先级的运算顺序

    select 列1[+-*/]列2 from 表名

    设置别名(注意:关键字as可以省略)

    select 列 as 别名 from 表名
    select 列 别名 from 表名

    条件查询:

    select 列... from 表名 where 条件

    条件中比较运算符:(等于:=  大于:>  大于等于:>=  小于:<  小于等于:<=  不等于:!= 或 <>)

    where 列  比较运算符  值

    注意:字符串、日期需使用单引号括起来

    逻辑运算符(并且:and或&&   或:or   非:not或!)

    where 条件1 逻辑运算符 条件2
    where not 条件

    范围查询:

    where 列 between 条件1  and 条件2;          //列在这个区间的值
    where 列 not between 条件1 and 条件2;    //不在这个区间
    where !( 列 between 条件1 and 条件2 );     //同样表示不在这个区间

    集合查询(判断列的值是否在指定的集合中):

    where 列 in(值1,值2);          //列中的数据是in后的值里面的
    where 列 not in(值1,值2);   //不是in中指定值的数据

    null值查询(注意:列中值为null不能使用=去查询):

    where 列 is null;  //查询列中值为null的数据

    模糊查询:

    %:标识0到多个字符,示例:

    where 列 like '%0';   //表示以0结尾
    where 列 like  '0%';   //表示以0开头
    where 列 like  '%0%';   //表示数据中包含0

    _:标识一个字符,可多次使用,示例:

    where 列 like '%0_';   //数据结尾第二位是0

    结果排序(对查询出的结果按照一列或多列进行升序还是降序排列  升序:asc  降序:desc  注意:不能使用中文的别名排序)

    where 条件 order by 列 [asc/desc]

    分页查询(beginIndex:标识从第几条数据开始   pageSize:标识每页显示的数据条数)

    where [条件] limit beginIndex,pageSize;
    ex:每页显示3条数据
    第一页: SELECT * FROM 表名 LIMIT 0,3    --0,1,2
    第二页: SELECT * FROM 表名 LIMIT 3,3    --3,4,5
    第三页: SELECT * FROM 表名 LIMIT 6,3    --6,7,8
    第四页: SELECT * FROM 表名 LIMIT 9,3    --9,10,11 
      ……
    第七页: SELECT * FROM 表名 LIMIT 18,3   --18,19,20

    beginIndex公式:(当前页数-1)*pageSize

    聚集函数(作用于一组数据,并对一组数据返回一个值)

    COUNT:统计结果记录数,若统计的是列,列中为Null,那么count将不会计算值
    MAX:  统计计算最大值
    MIN:  统计计算最小值
    SUM:  统计计算求和
    AVG:  统计计算平均值

    分组函数(注意:如果要对分组后的数据进行筛选,那么必须使用having关键字,条件写在having后)

    select 聚集函数 from 表名 where [条件] group by 列 having 分组后的条件

    Where和having的区别:
    Where: 先过滤已有的数据(数据是已经存在的),在进行分组,在聚集计算
    Having:先分组,在对每组进行计算,根据得到结果在过滤(分组把数据算出之后,在过滤)
    注意:使用having的时候,它是可以使用别名的

    多表查询:

    交叉连接:又名笛卡尔积,使用交叉连接会产生笛卡尔积
    假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

    select *  from 表1,表2

    内连接:过滤为空的数据(查询的实际上是两张表数据的交集部分)    目的 ==》解决笛卡尔积现象,正确查询了需要的数据

    select * from 表1,表2  where 表1.字段=表2.字段;  //隐式内连接,使用where条件消除笛卡尔积
    select * from 表1 [inner] join 表2 on 表1.字段=表2.字段;  //显式内连接,如果是多张表,则一直在join..on后依次添加join..on即可,inner关键字可被省略

    外连接:左外连接、右外连接、全外连接
    左外连接:以左边表为主,返回左边表中所有数据,若右表中无数据,则显示为NULL,请参考实际查询结果来理解

    select * from 表1 left [outer] join 表2 on 表1.字段=表2.字段;   //表1为左表,表2为右表,outer关键字可被省略

    右外连接:以右边表为主,返回右表中所有数据,若左表中无数据,则显示为NULL,结合实际查询结果来理解

    select * from 表1 right [outer] join 表2 on 表1.字段=表2.字段;  //表1为左表,表2为右表,outer关键字可被省略

    全外连接:返回涉及的多表中的所有数据,MYSQL中不支持该查询,仅限了解自连接:单表当作多表查询,直白的讲就是一张表中数据含有多种关系,使用多表查询的语法,来查询一张表,查询过程中一定要使用别名
    多用在分类数据、省市县分类数据、权限…

    select 表1.字段1,表2.字段2 from 表名 as 表1,表名 as 表2 where 表1.字段1=表2.字段2

    子查询:将一个查询结果作为另一个查询的对象,直白的讲就是SQL语句嵌套

    select * from (select * from 表名) as 别名
    select * from where 条件->条件中包含查询语句
    注意:1.查询结果的虚拟表必须取别名
         2.字段与关键字一样,冲突时,需要给字段名加``,(Esc键下面、1的左边)
         3.如果给虚拟结果表中的字段取了别名,则对虚拟结果表查询时,应该用 表别名.虚拟表字段别名

    插入数据:

    insert into 表名(字段1,字段2..) values(值1,值2…);
    注意: 1.如果插入的表中的主键是自增类型的,可以不用插入值
          2.如果主键是非自增 ,插入的数据则是填补主键字段值空余的值
          3.如果主键设置了自动递增,会从主键字段最大值开始插入数据

    其他插入方式:

    insert into 表名(字段1,字段2) values(值1,值2),(值1,值2);     //插入多条数据【MYSQL】
    insert into 表名 values(值1,值2);                    //针对全表所有字段进行插入操作
    insert into 表名(字段) select 字段 from 表2;         //查询结果插入
    insert into 表名 select 字段 from 表2;               //查询结果,全表插入

    修改数据:

    update 表 set 字段=值 where 条件;  //带条件修改指定数据,否则修改全表

    删除数据:

    delete from 表 where 条件;  //删除数据带条件指定数据,否则删除全表数据

    数据备份:

    在命令行窗口进行,若操作系统版本高,则使用管理员模式
    导出:

    mysqldump -u账户 -p密码 数据库名称>脚本文件存储地

    ex:         mysqldump -uroot -proot jdbcdemo> C:/shop_bak.sql
    导入:

    mysql -u账户 -p密码 数据库名称< 脚本文件存储地址

    ex:         mysql -uroot -proot jdbcdemo< C:/shop_bak.sql
    使用可视化导入导出:
    Navicat工具的导入和导出/Navicat工具的备份和还原

     数据索引:

    索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

    什么列适合建索引??
    1.表的主键、外键必须有索引;
    2.数据量超过30000的表应该有索引;
    3.经常与其他表进行连接的表,在连接字段上应该建立索引;
    4.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
    5.索引应该建在选择性高的字段上;
    6.索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

    sql语句创建和删除索引:
    创建索引: 

    CREATE INDEX 索引名称 ON 表名 (列名)

    删除索引:

    DROP INDEX 索引名 ON 表名 
    ALTER TABLE 表名 DROP INDEX 索引名

    mysql常用的数据类型:

    数值类型:INT、FLOAT、DOUBLE

    日期和时间类型:DATE、TIME、YEAR、DATETIME

    字符串类型:CHAR、VARCHAR、TEXT、LONGTEXT

  • 相关阅读:
    XAF 一对多关系<DC翻译博客二>
    XAF 在BOModel中实现接口<DC翻译博客六>
    XPO – (Gary's post)Stored Procedure Support Coming in V2010 Vol 2 Part1
    XAF 如何从Excel复制多个单元格内容到GridView
    XAF 如何实现对选择的单元格显示矩形框和多单元格的复制及粘贴
    XAF 如何扩展应用程序模型<二> 编辑ListView自动保存
    XAF 模型编辑器
    XAF 用代码扩展和自定义应用程序模型
    XAF 翻译领域构件(DC)技术目录
    XPO (Gary's post)Stored Procedure Support coming in V2010 Vol 2 (Part 2)
  • 原文地址:https://www.cnblogs.com/chao202426/p/11990327.html
Copyright © 2020-2023  润新知