●查询语句

DDL(数据定义语言)

  Create、Drop、Alter

DML(数据操纵语言)

  CRUD(增加(Create)、读取(Retrieve)(重新得到数据)、更新(Update)和删除(Delete))

DCL(数据控制语言)

增加数据

  insert into 表 values ('值')    --into可以省略,值可以写多个,用逗号隔开,不过要对应列

  例:insert into fruit values ('k008','梨','3','莱阳','3','100','')

    insert  fruit(Ids,Name,Source,Price) values ('k008','梨','莱阳','3')    --增加数据时,当说明了表的列名,那么后面的值必须与之对应

删除数据

  delete from 表    --清空表内数据

  truncate table 表    --截断表

  以上两种方式都可以清空表内数据,不同之处在于,truncate不会产生日志,并且可以初始化自增长列。

  删除指定数据:

  delete from 表 where 条件表达式     --条件表达式一般是:列名 运算符 值。多个条件可以用and或or连接

  例:delete from Fruit where Name='梨'

修改数据

  update 表 set 列名=值,列名=值,…… where 条件表达式

  例:update Fruit set Price=3,Stack=4 where Name='葡萄'

查询

  查询表中多个列

  select 列,列,…… from 表

  用符号*查询全部列

  select * from 表

  查询结果中添加列

  select Price as '价格',Price*Weight as '总价',…… from fruit    --查询结果中修改列的显示名称,列名处可以写表达式,as可以省略;此处总价为添加列

  where,根据条件查询

  select 列名 from 表 where 条件表达式

  例:select name from fruit where price between 2 and 5    --从表fruit(水果)中查找price(单价)在2跟5之间的name(名称)

    上一行中  price between 2 and 5  相当于  price>=2 and price<=5

  用dictinct消除重复部分

  例:select distinct dept_id from employee where e_wage>7000    --列出工资大于7000的员工所属部门的编号

  用in关键字

  例:select name from fruit where price in (2,3)    --查询价格为2或3的水果名称。如果值是字符串,那么要加单引号

    上一行中  price in (2,3)   相当于  price=2 or price=3

  使用通配符,where子句中用like进行字符串匹配查询

  %    表示零个或多个字符    ‘a%’,‘a’后面可接任意字符串

  _    代表一个字符        ‘a_b’,‘a’与‘b’中间可以有一个字符

  []    表示在某一范围的字符   [0-9],0到9之间的字符

  [^ ]   表示不再某一范围的字符

  例:select e_name,dept_id from employee where like '王_'    --查找公司中姓王且全名为两个字的员工的姓名及所在部门的编号

  用order子句对结果排序,默认排序为升序,如果要按降序排序,那么在列名后边添加desc(默认升序是asc)

  例:select e_name from employee where job_level='2' order by e_wage    --查询工作级别为2的员工的姓名,查询结果按工资排序

  例:select p_id,p_name,cost,quantity from products where dept_id='1003' order by cost desc,quantity    --查询有编号1003部门生产的产品编号、名称、成本、库存数量,结果按成本降序、库存数量升序排列

  统计函数

    AVG(),算术平均值,只适用于数值型的列

    例:select AVG(price) as '平均价' from fruit    --求各种水果单价的平均值

    COUNT(),返回与选择表达式匹配的列中不为NULL 值的数据个数。COUNT(*)指定了与判别式匹配的所有行,COUNT(列名) 则指定了列值的个数。

    例:select COUNT(name) from fruit

    MAX(),返回最大值,适用于数值型、字符型、日期型的列

    例:select MAX(price) from fruit

    MIN(),返回最小值,适用于数值型、字符型、日期型的列

    例:select MIN(price) from fruit

    SUM(),求和,()里可以进行运算。只适用于数值型的列

    例:select SUM(price) from fruit

  查询结果分组

    group子句

    select后边只能跟统计函数或跟 group by 后边儿的列相同

    例:select name,price from fruit group by price    --按价格分组,并显示名字跟价格

    having子句

    例:select dept_id, count(*) from employee where e_wage >= 6000 group by dept_id having count(*) > 1    --查询有多个员工的工资不低于6000 的部门编号

    where用于分组前筛选数据,having用于分组后筛选数据。

  在select语句中where,group by,having子句和统计函数的执行次序如下:
  1、Where子句从数据源中去掉不符合其搜索条件的数据行;
  2、group by 子句搜集数据行到各个组中;统计函数为各个组计算统计值;
  3、having子句去掉不符合其组搜索条件的各组数据行。
 

begin tran

(修改数据的语句)

rollback    --修改数据出错时,rollback返回(begin tran)

附:

筛选列(投影)

筛选行(筛选)

行(记录,元组)

列(字段,属性)

原文地址:https://www.cnblogs.com/phantom-k/p/3957026.html