PyxYuYu/MyBlog

SQL语句(一)

PyxYuYu opened this issue · 0 comments

If you do what you love, you'll never work a day in your life.

0x01 SQL

  • SQL 语句对大小写不敏感
  • 查询
    • select * from 表名
      • 查询表中所有(列)数据
    • select distinct 列名 from 表名
      • 查询列中所有数据,返回唯一不同的值(去除重复值)
    • select 列名 from 表名 where 列 运算符 值
      • 运算符:= 、<> 、> 、< 、>= 、<= 、between 、like
      • <> 在某些版本的 SQL 中,也可以写成 !=
      • 例如:select * from Persons where FirstName='aa'
      • SQL 使用单引号包裹文本值(大部分数据库系统也可用双引号),如果是数值,不使用引号
      • andor 运算符用于基于一个以上条件对数据进行过滤
        • where 子语句中把两个或多个条件结合起来
    • select 列名 from 表名 order by 列名
      • order by 语句用于根据指定的列对结果集进行排序,默认按照升序对数据进行排序(asc 升序关键字),如果需要按照降序进行排序,可以使用 desc 关键字
    • 分页查询
    • select top number|percent 列名 from 表名 (适用于 MsSQL
      • 表中返回的规定数目的数据,用 top 规定返回的数据的数目
      • select top 每页显示的条数 * from 表名 where id not in (select top (当前页-1)*每页显示条数 id from 表名)
        • 每页要显示的条数,条件 id 不在(先查询出上一页的 id)
      • MsSQL 支持 top 子句,MySQLOracle 不支持,相同功能的语句如下
        • MySQL
           select 列名 from 表名 limit number
        
        • Oracle
           select 列名 from 表名 where rownum <= number
        
           //分页显示
           select * from (select A.*, rownum RN from (select * from B) A where rownum <= curpage*pagesize) where RN >= (curpage-1)*pagesize+1
        
    • 模糊查询
    • select 列名 from 表名 where 列名 like '%值%'
      • like 操作符用于在 where 子句中搜索列中的指定模式,上面就是搜索字符中包含一个"值"的数据,不管是在什么位置
      • 通配符,替代字符的符号,类似正则
        • %,替代一个或多个字符
        • _,仅替代一个字符
        • [charlist],字符列中的任何单一字符
        • [^charlist][!charlist],不在字符列中的任何单一字符
      • 通过使用 not 关键字,可以选取不包含指定模式的数据
    • `select 列名 from 表名 where 列名 in ('值1', '值2', ......)
      • in 操作符允许我们在 where 子句中规定多个值,即符合 in 中条件的数据都被查询出来
    • select 列名 from 表名 between '值1' and '值2'
      • between...and... 会选取两个值之间的数据,这些值可以是数值、文本或日期,可以结合 not 关键字显示范围之外的数据
      • 不同数据库对 between...and... 操作符的处理方式不同,有的介于之间不包括两者,有的包括,有的包括之前的
    • select 列名 from 表名 as 别名
      • 为表名称指定别名
    • select 列名 as 别名 from 表名
      • 为列名指定别名
  • 添加
    • insert into 表名 values ('值1', '值2', ......)
      • 向表中插入新的一行
    • insert into 表名 (列1, 列2, ......) values ('值1', '值2', ......)
      • 向表中指定列插入数据
    • alter table 表名 add 列名 类型
      • 向表中插入新的一列
  • 修改
    • update 表名 set 列名 = 新值, 列名 = 新值 where 列名 = 某值
      • 更新某一行中的列值,可以修改多个列值,不加 where,修改全部
    • alter table 表名 alter clolumn 列名 属性
      • 修改表中列的属性
  • 删除
    • delete from 表名 where 列名 = 值
      • 删除表中的行,不加 where,删除所有行,不会删除表,意味着表的结构、属性、索引都是完整的
    • drop database 库名
      • 删除数据库
    • drop table 表名
      • 删除表
    • truncate table 表名
      • 删除表格中的数据
    • truncate / delete / drop 区别
      • truncate :删除内容、释放空间,不删除定义
      • delete :删除内容,不释放控件,不删除定义
      • drop :删除内容,删除控件,删除定义