zoukankan      html  css  js  c++  java
  • SQL入门及常用命令

    1、数据库常用命令可以分为两大类:DDL和DML

      1、DDL语句(data definition language):针对于数据库的表or列名的命令。主要分为增删改三部分。

     2、DML语句(data manipulation language):针对于具体数据的命令。主要分为增删改查四部分。(测试用的最多的就是查)

    3、函数:在SQL里面还经常用一些基本的函数(函数一般使用在select和having后面)

    4、基础提升:

    上面有说过,SQL语句中,用的最多的就是select了。基本格式为 select *(查询的数据,*表示全部)from 表名 where 条件。

    而一条比较完整的sql大概形式为 select * from 表名 where 条件  group by 分组字段 having 条件 order by 排序字段 limit 分页数量    #这里不包括子查询和多表联查。

      1、思路:

        1、首先from 表名 ,然后where 条件 对全表数据做筛选。返回第一次筛选的结果。

        2、针对第一次筛选的结果,使用group by进行分组,返回第二个结果。

        3、针对分组的结果,使用having进行筛选,返回第三个结果。

        4、针对返回的第三个结果,进行select。返回第四个结果集。

        5、然后对于第四次返回的结果,order by 进行排序。返回第五个结果

        6、最终,针对第五次返回的结果。limit进行分页处理。展示成最终的效果。

      例子:在emp表找到工种clerk人数大于等于2的部门编号,并按人数降序排序,显示前10行数据。

       select * from (select bumen_id,count(1) as num from emp where gongzhong = 'clerk' group by bumen having count(1) >=2 ) t order by num desc limit 10

      ---(ps:这个例子还不如不写!)

    子查询和多表连接查询的格式如下:

    5、自己碰到过的一些面试问题(比较有印象的):

      1、truncate table 和delete的区别:

      答:delete会发起事务,可以回滚。可以有where过滤条件。属于dml语句,删除效率低。

        truncate不会发起事务,无法回滚。不能有where条件,即默认删除全表数据。属于ddl语句。删除效率高。但是危险。且如果表中有列是其他表外键的引用列。则不能使用truncate。否则会报错。

      2、谈谈like:

      答:like一般用于模糊查询。在条件不是十分肯定时,可以用,比如表有些字段为json的,我们需要查询json内是否包含某字符串时,一般用like(如:where config LIKE "%t.cn%")。

        条件前后加%表示前后可以为任意字符。效率低。

        但是like不能走索引。对于大数据量表来说。一般不用like。

      3、用过union嘛?

      答:当然。经常用。公司对于量大的数据,基本都是有分表的。比如订单表。我们分上百个表。比如我要查多个表的数据。这个时候就可以用union。它的作用就是把我写的查的多个表的sql全部运行。

      然后把结果汇总显示。(当然,前提是你要查的多个表字段都是相同的)

  • 相关阅读:
    C++/CLI中的资源清理(Destructor,Finalizer
    c++/cli 之数据库操作
    利用139,189,yahoo等邮箱短信提示来免费发短信提示
    小例子复习下委托的应用
    c++/cli 之日志记录
    c++/cli 之异步Socket完成端口实例
    C++/CLI, Finalize and Dispose
    C/C++的位运算符操作
    实现自定义控件与背景图完全重叠
    RichTextBox与NotifyIcon简单模仿QQ效果
  • 原文地址:https://www.cnblogs.com/cbslock/p/10009969.html
Copyright © 2011-2022 走看看