zoukankan      html  css  js  c++  java
  • 数据库个人笔记(3) -- 基础篇

    ## 数据库的查询

    > 当用户登陆到SQL server 2008 时,即被指定到一个数据库,一般为 master 数据库,但是要想使用我们自己的数据库,就要进行转换。语句为 use database name,其中 database name 是要选中为当前数据库的数据库名称。

    ```sql
    例如:
    use pxscj
    go
    (将数据库选定为 名为 pxscj 数据库)
    ```
    选定数据库后接下来我们就开始来学习查询。
    sql 最基本的语句 “ select ”
    规则如下:


    其中,使用 ‘ * ’ 来表示一个表中的所有行。
    例:

    ```sql
    use pxscj
    go
    select *
    from xsb
    go
    查询 pxscj 数据库中的 xsb 表 的全部内容
    ```
    使用select语句选择一个表中的某些列,各列之间要以逗号(,)分割
    例:

    ```sql
    select 姓名,专业,总学分
    from xsb
    go
    在 xsb 表中查询各个学生的姓名,专业,总学分
    ```

    sql server 2008中还能一次执行多个查询。


    其中 还可以定义列别名。

    ```sql
    查询 xsb 表中各个学生的学号,姓名,总学分,并且依次将标题指定为:number,name,mark
    select 学号 as number,姓名 as name,总学分 as mark
    from xsb
    go

    其中 as 也可以用 ‘=’ 来带替

    number = 学号 顺序相反
    当 替换名中含有空格时, 要用''来括起来

    'Student number' = 学号
    ```

    - 与select 连用的 where 子句

    where 是 select 的查询条件,where 语句必须紧跟在from子句的后面,

    ```sql
    查询 xsb 表中学号为‘081101’的同学的情况
    select *
    from xsb
    where 学号 = '081101'
    ```
    也可以用于比较

    ```sql
    查询 xsb 表中 总学分 大于50 的同学的情况
    select *
    from xsb
    where 总学分 > 50
    go
    在 where 语句中 还可以引入逻辑运算符例如 not and or
    ```

    替换查询中的数据

    - 要替换查询中的数据,则要使用查询中 case表达式
    - 格式为:

    例:

    ```sql
    use pxscj
    go
    select 学号,姓名,等级 =
    case
    when 总学分 is null then '尚未选课'
    when 总学分 < 50 then '不及格'
    when 总学分 >= 50 and 总学分 <=53 then '及格'
    else '优秀'
    end
    from xsb
    where 专业 = '计算机'
    go
    ```

    - 消除重复行
    对表只选择某些列时,会出现重复行,为了消除重复的数据,我们使用 distinct

    ```sql
    select distinct 学号,总学分
    from xsb
    ```

    - 限制结果集返回行数

    如果select 语句返回的结果集非常的多,那么可以使用 TOP 选项限制其返回的行数。

    例:

    ```sql
    select top 6 姓名,专业,总学分
    from xsb
    go
    ```
    **聚合函数**

    - 最重要,最常用的五个 : SUM AVG MAX MIN COUNT

    ```sql

    select count(*) as '学生总数'
    from xsb

    select sum(成绩) as '课程101的总成绩'
    from xsb
    where 课程号 = '101'

    select avg(成绩) as '课程101的平均成绩'
    from xsb
    where 课程号 = '101'
    select max(最大成绩) as '课程101的最大成绩'
    from xsb
    where 课程号 = '101'

    select min(最小成绩) as '课程101的最小成绩'
    from xsb
    where 课程号 = '101'
    ```

    - 模式匹配 (模糊搜索)

    ```sql
    select *
    from xsb
    where 姓名 like '王_'
    go
    查询xsb 表中姓王 的同学的情况
    ```

    - 范围比较 (in)

    ```sql
    select *
    from xsb
    where 专业 in ('计算机','通信工程')
    go
    查询 xsb 表中专业为 ‘计算机’或‘通信工程’ 专业学生的情况。
    ```


    **下一篇 写子查询**

     
  • 相关阅读:
    MySQL架构优化:定时计划任务与表分区
    关于mysql 删除数据后物理空间未释放(转载)
    Mysql删除数据后磁盘空间未释放的解决办法【转】
    Mysql 自动备份脚本
    迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上)【转载】
    Redis学习笔记(二)-key相关命令【转载】
    干货分享:MySQL之化险为夷的【钻石】抢购风暴【转载】
    Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https【转载】
    业务零影响!如何在Online环境中巧用MySQL传统复制技术【转】
    VNC轻松连接远程Linux桌面
  • 原文地址:https://www.cnblogs.com/haoshaoqian/p/11978709.html
Copyright © 2011-2022 走看看