SQL(structured query language)结构化查询语言

一、SQL语句分类

  1. 数据查询语句:select
  2. DML,数据操作语句:insert,update,delete,merge
  3. DDL,数据定义语句:create,alert,drop,truncate
  4. DCL,数据控制语句:grant,revoke
  5. 事物控制语句:commit, rollback,savepoint

二、数据类型

  1. 字符串类型:
    char(n),定长字符串,表示数据不足n时,以空格填充;
    varchar2(n),变长字符串,数据不足n的时候,以实际为准;
    因此,对于长度较为固定的字符串,char类型会使得查询效率高,但是对于长度变化大的会浪费较多空间,选择varchar比较好。
  2. 数值类型:integer或int,float
  3. 日期类型:date

三、基本查询语句

  1. 最简单的select语句
    select *,列名[别名] from 表名
  2. 字符串连接
    用 || 连接查询列表,也可以自己添加字符串,字符串常量在SQL中用单引号表示
  3. 包含算数运算的select语句
    一般针对数值,有时也可针对日期类型
  4. 字段别名
    在字段后面给定别名即可,也可用as+别名表示
  5. 去掉重复值
    distinct关键字,值得注意的是,distinct必须写在最前面,并且其作用范围为全部的所选列

四、带限制条件的查询语句

  1. where中的运算符
    1)关系运算,>,<,>=,<=,=,<>,!=,与一般的程序语言不同的是,等于就只有一个等号,<>,!=都表示不等于
    2)逻辑运算,and,or,not,优先级顺序为,not,and,or,与一般程序语言相同
    3)between…and,常用在数值与日期类型上,值得注意的是,包括边界值
    4)in运算,一般后面跟着个列表,如下代码块1:
    5)like模糊查询,一般适用于字符串,通配符常用的有%和_两个,百分号表示0个或多个字符,下划线表示一个字符,SQL 通配符必须与 LIKE 运算符一起使用。
    还有[charlist]和[^charlist],[!charlist]表示其中包括中括号中的单一字符以及不包括两种。
    说到通配符就必须再考虑其转义的情况,使用escape来标识是否为通配符
    6)用is来判断null,不能用等号来判断例如,x is null,x is not null
    7)order by,对数据进行排序,asc表示升序,desc表示降序。值得注意的是,order by只能出现在整个语句的最后,可以针对多个列进行排序,首先判断第一个属性,第一个属性相同再判断第二个属性,根据第二个属性定义的升序和降序来排列。
--代码块1
select * from someTable
where someColumn in (1,2,3)

五、数据库连接查询

  1. 内连接,inner join,inner可以省略。也可以将自己与自己连接,用以获取同一个表中不同的信息。
  2. 外连接,内连接时,若一方的连接列值找不到,则放弃整条记录,外连接则不同,若找不到,则用null代替。
    1)left outer join,可以省略outer,表示若左边连接值未能在右边找到,就用null替代。
    2)right outer join,与左外连接同理。
    3)full outer join,同时使用左右外连接的性质。
  3. 其他连接
    1)cross join,表示生成笛卡尔积。
    2)natural join,自然连接,对几个表中列名完全相同的一个或多个等值列产生等值连接。当字段相同,但类型不同会导致反馈类型不匹配,可以使用using来设置用于等值连接的确定字段。