zoukankan      html  css  js  c++  java
  • sql必知必会(第四版) 学习笔记

    还有一个《Sqlserver2008技术内幕》的笔记,也很好!~

    http://www.cnblogs.com/liupeng61624/p/4354983.html

    温习一遍简单的sql语法,把自己掌握还不够的地方,做了些笔记....

    1 去重复关键词,distinct

        select distinct sname from student;

    2 限制结果top的用法

         select top 5 id from student 获取前五条记录

         可以利用top来写sql分页语句

    3 排序order by

        select * from student order by id,name desc;

        默认是升序 asc,若是降序要在列名后标明desc

        order by语句在sql句尾,在where语句后面出现

    4 where

       操作符 =,<> !=(不等于),>,>=,<,<=,!(不小于),!>(不大于)

                 BETWEEN......(在...之间)

                  is NULL(空值)

          AND 条件与

          OR   条件或 

          注意: and的结合优先级高于or,所以where后面多条件时候最好用括号写清楚

    5 IN,NOT

         select * from student

         where id in(1,2,3)

          where 条件中的NOT表明否定其后跟的任何条件,也就是筛选的是where条件外的数据

    6 通配符匹配过滤

        Like...模糊匹配

       select * from student

        where name like '汪%'

       选出汪姓 的同学,其中 % 代表匹配任意次,_ 代表匹配单个字符,[]表示匹配中括号里面的字符

    7 as 利用as起别名,简便写法

      

    8 聚合函数

        利用一些简单的聚合函数汇总数据

       AVG()  计算平均值

       Count() 计算 个数

       Max() 最大值

       Min() 最小值

    9 分组数据

      select COUNT(*) as 人数, Kind as 科目类型
      from Course
      Group by Kind

    Having的用法,和where的区别就是where是在检索时过滤行的,而Having是用来过滤分组的

    如上,在sql句末加上,Having Count(*) > 2 那么就是要筛选出人数大于2的组了

    另外一种理解,where是对数据分组前进行过滤,而Having 是对数据分组后进行过滤,where中排出的行就不包括在分组中了,从而影响到Having子句中基于这些值过滤掉的分组。

    至此简单回顾下select子句及其顺序

      句子                   说明                       是否必须使用

    ---------       -----------------       -------------------------

    select            要返回的列或者表达式         是

    from             从中检索数据的表                仅在从表中选择数据使用

    where           行级的过滤                          否

    group by       分组说明                             仅在按组计算聚合时使用

    Having          组级过略                              否

    Order by        输出排序顺序                       否

        以前一直弄不清,group by,having...一起怎么使用的,现在清楚了许多。

    10 子查询

           不多说了,就是一级级嵌套查询下去

    11 联结表 多表查询

        对于关系表而言,那么就是一种数据存放在对应的一张数据表中,避免数据的重复,比如把产品相关信息放在一张Products表中,产品对应的供应商相关信息放在另一张供应商表Vendors中。

      如果我们要通过产品查询其对应的供应商Vendor的相关信息,要么使用之前的子查询,这样就过于繁琐,所以我们要使用表的连接查询。

       多表的连接有自然连接,通过join来连接的左外连接和右外连接。

    12 组合查询 

        union

    select * from StuCou
    where StuNo = 1
    union
    select * from StuCou
    where StuNo = 2 

    等价于

    select * from StuCou
    where StuNo = 1 or StuNo = 2

    13 插入数据

        insert [into] Student  values('1','King',13,'浙江杭州')

         这样的话,就是插入一整行数据,要求插入数据个数和数据表中定义的个数要一致

       或者可以这么写

       insert into Student(stu_id,stu_name,stu_age,stu_address,stu_score)

       values(1,'King',13,'浙江杭州',100);

       values中的值和前面的属性一一对应

        从一个表复制到另一个表

         insert * into class1 from class

         那么数据库会新建一个名为class1的数据表然后把class中的数据复制到class1中。

        如果你想将class表中的部分新数据导入到class1中的话,那么你可以这么写

        insert into class1(列1,列2,列3)

        select 列11,列22,列33

        from class

        但是如果行中有不能为null的属性,就不能这么做了

    14 更新和删除数据

       update ,delete

       update 表名

        set 列名 ='值'

       where 条件

        值得注意的是,更新操作往往会因为,表与表之间的约束关系发生冲突

      delete from 表名

      where 条件

      delete是删除表的内容

       若想删除整张表中的内容,那么delete from 表名

       更快的删除表中所有行,而且速度更快

        truncate Table  这样删除不用记录数据的变动所以删除更快

    15 创建表,更新,删除

         create table 表名(

             列名 数据类型 说明(null/not null),

             ...

            )

         更新表

         给表增加一列

        Alter Table 表名

        ADD 列名, 数据类型

        Drop Column 列名   --删除一列

       删除表

       Drop Table 表名

  • 相关阅读:
    spring与springmvc父子容器
    spring容器BeanFactory简单例子
    spring整体架构
    css中".",",",“~”和“>”符号的意义
    CSS中的块级元素与行级元素
    java反射和动态代理
    thymeleaf的fragment例子
    编写一个简单的 JDBC 程序
    http://localhost/ 或 http://127.0.0.1/ 报错:HTTP 404 的解决办法
    教你如何清除 MyEclipse/Eclipse 中 Web Browser 和 Switch Workspace 的历史记录
  • 原文地址:https://www.cnblogs.com/zzt-lovelinlin/p/4465903.html
Copyright © 2011-2022 走看看