数据库 | SQL

SQL(结构化查询语言) 是用于访问和处理数据库的标准的计算机语言。

用于访问处理的数据库有 Mysql、Oracle、DB2等,Mysql 在 Web 中会常用到,而 Oracle、DB2 是目前大多数金融公司的首选。

 

第一步:简单了解数据库

数据库是由表、关系、操作组成

    存储数据:表、约束、触发器
    操作数据:insert、update、delete T-sql 函数 存储过程 触发器
    查询数据:select
 
数据类型
    整数:int, smallint, tinyint, bigint;
    浮点数:real, float, decimal;
    二进制:binary, varbinary;
    逻辑:bit;
    字符:char, nchar, varchar, nvarchar;
    文本和图形:text, ntext, image;
    日期和时间:datetime, smalldatetime;
    货币:money, smallmoney
 
数据库的创建和删除;数据库表的创建、修改和删除
 
数据完整性
    实体完整性:Primary Key, Unique Key, Unique Index, Identity Column;
    域完整性:Default, Check, Triggers, Procedure;
    Create Table中得全部列级和表级约束
 
5 种约束:主键约束(Primary Key Constraint)、默认约束(Default Constraint)、检查约束(Check Constraint)、唯一性约束(Unique Constraint)、外键约束(Foreign Key Constraint)
 
数据库规范化:
    将数据库的结构精简为最简单的形式;
    从表中删除冗余列;
    标识所有依赖于其他数据库的数据
 
数据库三范式:
    第一范式,无重复的列;
    第二范式,非主属性非部分依赖于主关键字;
    第三范式,属性不依赖于其他非主属性

 

第二步:先不断练习初级命令

一些最重要的 SQL 命令

  • SELECT(distinct) - 从数据库中提取数据(唯一)
  • UPDATE - 更新数据库中的数据
  • DELETE - 从数据库中删除数据
  • INSERT INTO - 向数据库中插入新数据
  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

 

SQL的4个部分:
    数据定义语言DDL(Data Definition Language)
    用来定义数据的结构:create、alter、drop
    数据控制语言DCL(Data Contral Language)
    控制数据库组建的存取许可、存取权限等命令:grant、revoke
    数据操纵语言 DML(Data Manipulation Language)
    数据操作:insert、update、delete
    数据查询语言DQL(Data Query Language):select
 
SQL中的运算符:算术运算符、位运算符、比较运算符、逻辑运算符、通配运算符、字符串连接符、赋值运算符

 

简单查询
简单查询,使用TOP子句
查询结果排序 order by
带条件的查询 where,使用算术表达式,使用逻辑表达式,使用 between 关键字,使用 in 关键字,模糊查询 like
在查询中使用聚合函数:sum(x), avg(x), min(x), max(x), count(x), count(*)
使用分组查询 group by,having子句
distinct关键字
列别名

 

拾遗:

select A.x+A.y as sum from A where (A.x+A.y) > 100;

 

第三步:进阶

持续更新……

尽量使用 JOIN 进行表的连接,永远不要在 FROM 后面使用逗号连接表。(表引用) 

DISTINCT 的确是一种很耗费资源的操作(不要滥用)

尽管没有严格的规定说明你何时应该使用 IN ,何时应该使用 EXISTS ,但是这些事情你还是应该知道的:

  • IN比 EXISTS 的可读性更好
  • EXISTS 比IN 的表达性更好(更适合复杂的语句)
  • 二者之间性能没有差异(但对于某些数据库来说性能差异会非常大)

not IN、EXISTS

派生表:

  取个名:from (select name from gradelist)namelist

 

posted on 2015-10-11 00:16  Excavator  阅读(144)  评论(0编辑  收藏  举报

导航