数据操作

来源:互联网 发布:自动统计数字表格软件 编辑:程序博客网 时间:2024/06/16 10:13

数据修改

数据插入

1.插入元组:    insert into 表名[(属性列,...)]    values(),(),(),...;2.插入子查询结果:    insert into 表名[属性列名]    子查询注:    子查询的结果只需数据类型与插入表对应即可,无需列名对应

数据修改

update 表名set 属性列=取值[where ...];

数据删除

delete from 表名[where ...];

数据查询

注:当表指定了别名时,其他地方都要用别名当属性列执行了别名,其他地方还用原名

单表查询

select f(属性列名)[as 属性列别名],.... from 表名[where f(属性列名) ][order by [属性列名 (asc|desc)],[属性列名 (asc|desc)]...][group by 属性列名][having f(属性列)]select语句中f(属性列名):    1.distinct 语句作用范围为select子句所有属性列    2.聚集函数:(仅出现在select语句以及having子句)        2.1count(*):统计元组个数        2.2count([distinct]属性列名):统计属性列下非空元组个数(distinct表示重复值不计入结果)        2.3sum([distinct]属性列名)        2.4average([distinct]属性列名)        2.5max(属性列名):最大分量值        2.6min(属性列名):最小分量值where语句的<行选择条件>:    1.属性列 ? {属性列|常量}    2.属性列 [NOT] between 常量1 and 常量2    3.属性列 [NOT] like 字符串常量表达式(正则)        正则表达式:        _匹配任意一个字符        %匹配任意长度字符        []查询一定范围数据。[]用于指定一定范围内的任何单个字符,包括两端数据----------------------------------???        [^]用来查询不属于制定范围的任何单个字符---------------------------????        当匹配串中含有_%时,要使用escape'<换码字符>'制定取消通配符意义的换码字符    4.属性列 is[NOT] NULL    5.{属性列|常量} {[NOT]in|?{any|all}} {常量1[,常量2...]|(select 子句)}    6.[NOT] exists (select 子句)    7.<行选择条件> {and|or} <行选择条件>group by:    分组查询,若使用group by则select语句中的属性列必须来自group by的属性列(聚集函数属性列除外)having:    对分组进行统计,having语句必须在含有group by的子句查询语句中使用,不能单独使用。    having与where的区别是:where子句作用在分组之前选择符合条件的记录,而having子句作用在分组之后选择符合条件的分组结果执行顺序:    where语句选出元组    group by分组    select语句(distinct|聚集函数)    having子句

连接查询(多表查询)

注:    进行连接运算的表,必须存在着某种关系的公共列,连接运算实际是比较各表的公共列值,如果满足条件的连接产生组合输出行。连接操作的执行:    1嵌套循环法    2.排序合并法    3.索引连接法连接方式:    1.内连接??????等值连接 自然连接        实现一:from 表1 [inner] join 表2 on <连接条件>        实现二:[表一.]属性列 <比较运算符> [表二.]属性列    自连接(一种特殊的内连接)    2.外连接        左外连接、右外连接、全外连接

用TOP限制结果集

select [distinct] [top谓词] 属性列 from 表名......top谓词格式:    top n[percent][with ties]        n————前n        n[percent]————前%n        [with ties]————含并列使用时注意:    系统默认排列是按主键,使用top时考虑是否要用order by语句

嵌套查询

1.where子句嵌套查询在查询的条件子句含有select查询子句外层查询为父查询,内层为子查询子查询可以返回单列或多列记录子查询到对象可以使多个表,可以有条件子句和分组子句子查询允许嵌套子查询嵌套查询可分为不相关子查询和相关子查询注:    与=<>...比较晕算法相连的子查询,必须是返回非空的单值集合    子查询只能比较运算符的右边,不能再比较运算符的左边    如果子查询返回是空集火多值集合时,子查询只能用in,not in,any(有一个),all(所有),exists,not exists等比较运算符相连    exists运算符是先执行外层查询,然后执行内层查询    exists运算符和in,any,all所带的子查询方式基本相似,区别是:        不用指定匹配的列值,而用*作为选择列表        exists,all,any只能用于嵌套查询,而in,not in可以用于集合2.from子句中的嵌套查询查询结果作为一个表,然后用as指定表名