zoukankan      html  css  js  c++  java
  • sql总结

    一.where后面可接的查询条件:

    1)sql in查询,查询在符合条件list里的数据,list可以是(select子查询)

    2)sql not in查询,不再符合条件list里的数据

    3)like模糊查询:通配符%代表一个或多个通配字符。_代表通配一个字符。

     但like模糊查询,只能指定具体字符,指定明确的string值,不能匹配变量字段做模糊参数,如果 需要用字段变量做模糊匹配,就要用到concat()函数

    4)like+concat('%',name):字段变量值作为模糊参数查询

    5)字段=等号查询,not 字段=等号查询,或者字段<>值,也代表不等于.

    列出非软件专业的所有学生的学号及名字。

    select sid,name 

    from student 

    where 专业<>"软件专业"

    select sid,name 

    from student 

    where not 专业="软件专业"

    6)区间查询between x and y

    7)and连接多个条件。

    :列出1号课成绩大于80分的学生的学号及成绩

    具体值:一号课,>80分

    select sid,score 

    from score 

    where courseID = "1号课" and score >“80”

    二.sql语句书写经验

    1.需求里描述“每个”,"所有"等信息时,基本 都要用group by分组了。如;列出每个用户的存款余额,列出各机构的每日交易额。列出各个课程的平均分。

    :列出各科成绩的最高分,最低分,平均分,和选课人数

    select courseID,max(score) as "最高分",min(score) as "最低分",avg(score) as "平均分",count(distinct(surdentID)) as "总人数"

    from score_tbl

    group by courseID

    2.distinct也是函数,用法是distinct(字段),必须用括号包起来字段

    3.from后面也可以加select子查询,因为每个子查询的结果也是一张表,只是临时表而已。

    4.只要需求里有具体变量值出现了,那么就要在sql语句里匹配具体值信息,如:如工资多于2300元的员工需要向北京发货。salary > 2300 and  地址=‘北京’

    5.inner join内连接可以省略inner书写的,直接a join b就代表内连接

    6.表连接,join的on条件是写在from从句里的,而不是where从句。如select name from tableA a join tableB b on a.id=b.id

    7.使用数据库函数时,尽量用别名as命名,注意是需要as关键字的。如:select sid as "学号",avg(score) as "平均分" from score_t group by sid

    8.having条件只用来修饰group by的结果,没有group by是不能用having的。

    having与where的区别是having可以对接数学函数avg().count(),max()等。而where是不能的。

    9.from后面是可以接一个查询么?:可以的,sql查询出来的就是一张表,而from就是从某张表里查数据。注意要用()将子查询包起来,便于查看

    10.注意要用()将子查询包起来,便于查看。

    select * from (select * from table_a a where a.name="David") temp left join tableB b on temp.id = b.id;

    (temp也是一张表,临时表也可以起别名)

    11.temp也是一张表,临时表也可以起别名

    三.表连接

    1.自然连接:自然连接是通过where指定外键连接字段,只显示符合条件的所有记录。自然连接只显示符合条件的所有记录。

    2.内连接:内连接,可以省略写inner join的inner,直接写a join b就代表内连接。内连接也是只显示符合条件的所有记录。

    3.左外连接

    4.右外连接

    四.如何提高数据库的运行效率?

    1.降低范式,增加冗余。适当增加冗余课题提高查询的效率,但写的效率也降低了。因为多次写了。

    2.适当使用存储过程,存储过程只需要编译一次,后面在数据库里可多次运行。降低数据库的编译

    3.将一些复杂运算,在应用里做。减少数据的运算压力

    4.引入分表:水平分表或垂直分表

  • 相关阅读:
    Python杂记
    设置Python打印格式
    SFTP和FTS协议的区别
    C#6.0语法糖剖析(一)
    .NET Framework 4.0之Tuple(元组)
    以Self Host的方式来寄宿Web API
    以Web Host的方式来寄宿Web API
    IIS在默认情况并不支持对PUT和DELETE请求的支持
    ASP.NET Web API 特性
    在Windows下编写并运行第一个ASP.NET 5 Preview Web API程序
  • 原文地址:https://www.cnblogs.com/panxuejun/p/9065288.html
Copyright © 2011-2022 走看看