SQL语言基础


SQL语言分类

1.数据定义语言(DDL)
 常用的DDL语句
 Create Table 创建数据库对象
 Create Index 创建数据库表索引
 Drop Table   删除数据库表
 Drop Index   删除数据库表索引
 Truncate     删除表中所有行业
 
 Alert Table  增加表列,重定义表列,更改存储分配
 Alert Table  ADD CONSTRAINT 在已有的表上增加约束

2.数据操纵语言(DML)
 Insert 增加数据行到表
 Delete 从表中删除数据行
 Update 更改表中数据
 Select 从表或视图中检索数据行

3.数据控制语言(DCL)
 DCL用于规定数据库用户的各种权限
 
 GRANT   将权限或角色授予用户或其他角色
 REVOKE  从用户或数据库角色回收权限
 Set ROLE 禁止或允许一个角色

4.数据库事务控制
 
 常用的事务语句包括
 
 COMMIT WORK 把当前事务更改永久化(写入磁盘)
 ROLLBACK 作废上次提交以来的所有更改

SQL语句基本语法
 
 每条SQL语句必须以分号结束.

 每条SQL语句可以单独写成一行,但为了清楚,也可以分成若干行.

 SQL语句对大小写不敏感,对于SQL语句的关键字(例如,Insert,Select 等),

表名、列名等,可以大小写混写;但是对列的内容是大小写敏感的。

别名

数据表名称 AS 数据表别名
或者是:
数据表名称 数据表别名

Eg:
 Use SAMPLE
 Select e.员工编号 ,e.员工姓名
 From 员工数据表 AS e

Select 语句
 Select 语句基本结构如下:
 Select  select_list
 [INTO new_table_name]
 From table_list
 [Where search_conditions]
 [GROUP BY group_by_list]
 [Having search_conditions]
 [ODER BY order_list[ASC|DESC]]
 
 1.DISTINCT关键字
  eg:
  Use SAMPLE
  Select DISTINCT 所属部门
  from 员工数据表
 2.TOP 关键字
 
From子句
 联接条件---on子句
 派生表---sp
 
 Select 员工数据表.员工编号,项目数据表.项目名称
 From 员工数据表 join 项目数据表 ON
 (员工数据表.员工编号 = 项目数据表.负责人)
 
 Select EMP.员工编号,EMP.员工姓名,SP.部门名称
 From 员工数据表 AS EMP ,
 (Select 部门数据表.部门编号,部门数据表.部门名称
 From 部门数据表
 Where 部门数据表.部门编号>2
 ) AS SP
 Where EMP.部门编号=SP.部门编号

Where 子句
 Where子句中查询和限定的条件可以是
 比较运算符(如常=、<>、<和>).
 范围说明(BETWEEN 和 NOT BETWEEN)。
 可选列表(IN、NOT IN)
 模式匹配(Like 和NOT Like).
 是否为空值(IS NULL 和 IS NOT NULL)。
 上述条件的逻辑组合(AND 、OR和NOT)。

GROUP BY 子句
  GROUP BY 子句的主要作用是可以将数据记录依据设置的条件分成多个组,
而且只有使用了GROUP BY

子句,SELECT中所使用的汇总函数(例如SUM、COUNT、MIN、MAX等)
才会起作用。
eg:
 Select 所属部门,AVG(工资) AS 平均工资 From 员工数据表 GROUP BY
所属部门
  HAVING 关键字
 HAVING子句将对GROUP BY 子句选择出来的结果进行再次筛选,最后输出符

合HAVING 子句中条件的记录。
eg:
 Select 所属部门,AVG(工资) AS 平均工资 From 员工数据表 GROUP BY
所属部门 HAVING 平均工资>2000
 
  Where 子句用来筛选From子句中指定的操作所产生的记录
  GROUP BY 子句将Where子句中结果惊醒分组
  HAVING 子句将从经过分组后的中间结果集中筛选记录
 
  ALL关键字
  CUBE关键字
  WITH CUBE 关键字的主要作用是自动对GROUP BY 子句中列出的字段进行
分组汇总运算。
 EG:
  Select 所属部门 ,性别,AVG(工资) From 员工数据表 GROUP BY
所属部门,性别 WITH CUBE
 
 ROLLUP 关键字
 
ORDER BY 子句
 
 ASC ---升序
 DESC --降序

COMPUTE 和COMPUTE BY 子句
 
使用UNION 子句
 UNION运算符可以用来将2个或多个查询结果集组合起来,成为一个结果集

。使用UNION运算符的结果集都必须满足下列条件:
 具有相同的结构
 字段数目相同
 结果集中相对应的数据类型必须兼容
 UNION运算符指定的格式如下:
  Select 语句
  UNION[ALL]
  Select 语句

汇总函数
 SUM函数
 AVG函数
 COUNT函数
 COUNT(*)函数
 MAX函数
 MIN函数

联接查询
  通过使用联接产寻可以根据各个数据表之间的逻辑关系从2个或多个
数据表中检索数据。
 
  如何提高Select语句的效率
  (1).使用EXISTS关键字检查结果集
  (2).使用标准的连接代替嵌套查询
  (3).有效避免整表扫描
 
  联接的类型
 
  内联接
  内联结的格式为:
  数据表1 INNER JOIN 数据表2 ON 联接表达式
  内联接将通过使用比较运算符根据需要联接的数据表的公共的字段
值来匹配二表中的记录。
  eg:
   Select * From 员工数据表 INNER JOIN 项目数据表
   ON 员工数据表.员工编号 = 项目数据表.负责人
 
 外联接
 外联接包括3种 左向外联接、右向外联接、完整外部联接

 左向外联接的格式为:
 数据表1 LEFT JOIN 数据表2 ON 连接表达式
 或者是:
 数据表1 LEFT OUTER JOIN 数据表2 ON 连接表达式
 使用左向联接进行查询的结果集将包括数据表1中所有的记录,而仅仅是连

接字段所匹配的记录,那么结果集想对应的有关数据表2的所有字段将为空值

.例如下面将检索员工数据表中所有记录,并将项目表中显得负责人字段匹配

的记录输出到结果集:
Select *
      From 员工数据表 LEFT JION 项目数据表
      ON  员工数据表.员工编号 =项目数据表.负责人

 右向外联接
 右向外联接的格式:
  数据表1 RIGHT JOIN 数据表2 ON 表达式
  或者是:
  数据表1 RIGHT OUTER JOIN 数据表2 ON 表达式
  和左向外联接相反.

 完整外联接
 完整外联接的格式
  数据表1 FULL JOIN 数据表2 ON 表达式 
  或者是:
  数据表1 FULL OUTER JOIN 数据表2 ON 表达式
 
 交叉联接
 交叉连接的格式为:
 数据表1 CROSS JOIN 数据表2
 如果在Select语句中没有使用Where子句,那么交叉联接将返回数据表1和数

据表2的卡笛尔积,即交叉联接返回数据表1中的所有记录,以及数据表1中所

有的记录与数据表2中所有句路的组合.结果集的记录数等于数据表1的记录

数目乘以数据表2的记录数目.

在From和Where分句中指定联接

嵌套查询
  嵌套查询指的是一个外层查询中包含一个内层查询.其中外层查询称为主

查询,内层查询称为子查询.
  使用IN 和 NOT IN 关键字
  Use SAMPLE
  Select 员工姓名
  From 员工数据表
  Where 员工编号 IN
  (Select DISTINCT 负责人
  From 项目数据表
  Where 结束日期<'January 1,1,2006')
 使用比较运算符
 主要是返回单个值
  Use SAMPLE
  Select 员工姓名
  From 员工数据表
  Where 员工编号 =
  (Select DISTINCT 负责人
  From 项目数据表
  Where 项目名称='Demo1')
 使用EXISTS 和 NOT EXISTS 关键字

数据更改
  Insert
  Update
  Delete
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值