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

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

sql server命令符 sql命令_字段

 

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

sql server命令符 sql命令_数据_02

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

sql server命令符 sql命令_sql server命令符_03

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:这个例子还不如不写!)

 

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

sql server命令符 sql命令_sql server命令符_04

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全部运行。

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