• 测试常用sql


    一、新增

    1.1【插入单行】:insert  into <表名>    (列名) values (列值)

    1.2【将现有表数据添加到一个已有表】:insert into <已有表> (列名)  select <原表列名> from <原表名>

    例:insert into tongxunlu ('姓名','地址','电子邮件')
    select name,address,email
    from Strdents

    1.3【直接拿现有表数据创建一个新表并填充】:select <新建表列名> into <新建表名> from <源表名>

    例:select name,address,email into tongxuelu from strdents

    1.4【使用union关键字合并数据进行插入多行】:insert <表名> <列名> select <列值> union select <列值>

    例:insert Students (姓名,性别,出生日期)
    select '开心朋朋','男','1980/6/15' union
    select '蓝色小明','男','19**/**/**'

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    二、删除

    2.1【删除<满足条件的>行】:delete from <表名> where <删除条件>

    2.2【删除整个表】:truncate table <表名>

    使用DROP TABLE 指令会使整个表格就消失,而无法再被用了。

    使用 TRUNCATE TABLE 的指令,表格中的资料会完全消失,可是表格本身会继续存在。

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    三、修改

    update <表名> set <列名=更新值> where <更新条件>
    或者:查询语句后面+for update

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    四、查询

    4.1 查询:select <列名> from <表名> where <查询条件表达试>order by <排序的列名>asc或desc

      1)可以在查询中使用as更改列名

      2)查询空行:is null或者is not null来判断是否为空行;null值参与运算结果就会为空的

      3)模糊查询:like '%关键字%'          主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的

      4)  范围内查询:between 条件 and 条件

      5)in和exists:外表比内表大使用in,外表比内表小使用exists

      6)not in 和 not exists:使用not exists效率会更高 (参考来源:https://www.jianshu.com/p/df614c2c901b

    4.2 select  1  from table

    与select * from table 从作用上来说是没有差别的,都是查看是否有记录,一般是作条件查询用的。

    select 1 from 中的1是一常量(可以为任意数值),查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表

    4.3 查询返回限制行数

    例1:select top 6 name from a           查询表a,显示列name的前6行,top为关键字

    例2:select top 60 percent name from a  说明:查询表a,显示列name的60%,percent为关键字

    例3:select *  from a  where rownum=10  说明:返回10行,Oracle适用

    4.3 使用group by进行分组查询

    select studentID as 学员编号,AVG(score) as 平均成绩
    from student
    group by studentID
    说明:按strdentID字段分组,显示strdentID字段和score字段的平均值;select语句中只允许被分组的列为每个分组返回的一个值的表达式

    4.4 使用having子句进行分组筛选
    select studentID as 学员编号,AVG(score) as 平均成绩
    from student
    group by studentID
    having count(score)>1
    说明:显示分组后count(score)>1的行,由于where只能在没有分组时使用分组后只能使用having来限制条件

    4.5 多表联接查询

      1) 内联接

        select a.name,b.chengji   from a,b  where a.name=b.name

    或者: select a.name,b.chengji   from a inner join b  on (a.name=b.name)

    说明:    查询表a和表b中name字段相等的记录,并显示表a中的name字段和表b中的chengji字段

      2) 左联接、右联接

    LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行

    RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行

    select A.*,B.* from A   left  join B on(A.a1=B.a2)

    select A.*,B.* from A  right  join B on(A.a1=B.a2)

  • 相关阅读:
    WEB功能测试说明
    年轻的采访可以学到很多东西
    金融系列11《电子现金应用》
    vs2010调用matlab2011下的.m文件
    使用VS2010调用matlab的mat格式文件
    matlab mex入门简介
    MEX文件编写和调试
    MAT文件操作
    8.Redis 数据备份与恢复
    JAVA_OPTS设置
  • 原文地址:https://www.cnblogs.com/yinwenbin/p/10492236.html
Copyright © 2020-2023  润新知