当前位置:Gxlcms > 数据库问题 > MySQL数据库-SQL学习

MySQL数据库-SQL学习

时间:2021-07-01 10:21:17 帮助过:25人阅读

      A点:select 子句中只能写3中元素,(1) 常数(也就是123,字符串等)(2) 聚合函数(count,distinct,avg,sum,min,max等)(3) group by 指定的列名。         正对3说明:select name,price,count(1) from product group by price。对价格进行分组,并进行统计相同价格的商品数量。如果在列中写了group by之外的列名name,那么现在有2个商品价格相同的物品,牙刷10元,牙膏10元,那么name列是显示牙刷呢还是显示牙膏呢??       B点:不能使用列的别名,因为sql的执行顺序为from→where→group by→having→select→order by,列别名是在select中取的,当执行到group by时还没有读取到select中取的别名,因此也就识别不到列别名了。       C点:group by 无法进行排序       D点:where子句中不能使用聚合函数,聚合函数可以使用在select,having,order by。     where 只能对行内特定的值进行筛选,对组进行筛选需要使用having,having能够使用的元素同group by A点一致。     在having和where中都能够使用的条件,最好放在where中,我的理解是按照sql的执行顺序来执行的话,先在where这里把数据进行筛选后,使数据减少有利于提升后续group by和having的性能。     order by 列 esc|desc,进行排序,一般写在sql语句的最后,可以同时制定多个列进行排序。对于NULL的排序一般出现在开头或者结尾。order by可以使用聚合函数。

  第四章

     增删改查,其中新增时可以从别的表中直接拷贝选取的列,需要注意的是新表列的属性需要与旧表一致,在拷贝旧表时也可以使用select where 对数据进行筛选。

     事务:这里这是简单的提了事务的特性,即ACID,开始事务start transaction,提交事务commit,回滚事务rallback,注意DDL语句无法进行回滚。

  第五章

    视图,把一组需要经常使用的select语句可以保存为视图,这样每次访问时使用视图名即可,不需要重新书写sql语句。

    子查询,将用来定义视图的select语句直接用于from子句中。sql此时的执行顺序为优先执行子查询中的语句。

    标量子查询:必须只能返回一条结果,能够用于的地方有select,group by,having,order by。

    关联子查询,用A表关联A表进行查询,还需要学习

  第六章

    算术函数:+-*/,ABS()绝对值,MOD(被除数,除数)取余,ROUND(对象数值,保留的小数点)

    字符串函数:concat(str1,str2,..)拼接,LENGTH(str)字符串长度,LOWER(str)小写,REPLACE(原字符,被替换字符,替换内容),SUBSTRING(str FROM 起始位置 FOR 截取的个数),UPPER大写转换

    日期函数:CURRENT_DATE当前日期,CURRENT_TIME当前时间,CURRENT_TIMESTAMP当前日期和时间,EXTRACT(元素日期 FROM 日期)截取日期

    转换函数:CAST(转换当前的值 AS 转换后的值类型)

    谓词:LIKE,模糊查询 ‘%a‘ ‘%a%‘ ‘a%‘,列 between a  and b,IS NULL 为空,IS NOT NULL不为空,IN 为OR的简单用法。EXISTS?还需要学习

    CASE:CASE  WHEN 当满足条件 THEN 以什么结果进行显示  ELSE 其他情况时进行显示 END,需要进一步学习

  第七章

    两表并集, A UNION B,将两表进行合并且去重复。需要注意的事项:两表的列数与类型必须一致,ORDER BY 需要放在最后使用一次。 UNION ALL 两表合并不去重,效率比UNION要高,因为少了一步去重。

    联结:

      内联结:select * from a inner join b on a.id=b.id,其中on为两表之间关联的键,也就是将两表联结条件。

      外联结:

        左外联结:select * from a left join b on a.id=b.id

        右外联结:select * from a right join b on a.id=b.id

        on的含义和内联结一致,不同之处在于会以join前的表为主表,查询除了两表共有的结果外还会把主表中剩余的部分也进行显示。

  其余章节

    第8章的主窗口函数与GROUPING运算符MySql不支持,本次主要是学习MySQL所以并没有进行深入学习。第九章主要讲述的是如何使用JAVA程序连接数据库,这个部分已经熟悉,所以不再学习。

MySQL数据库-SQL学习

标签:com   aci   avg   nod   无法   action   不同   之一   number   

人气教程排行