数据库基础

1.SQL发展

  1. mysql:由瑞典 MySQL AB 公司开发,目前属于 oracle 旗下公司。其主表采用索引组织表,其主备复制属于物理复制,优点:体积小、速度快、总体拥有成本低,开放源码。
  2. SQL Server:Microsoft 公司推出的关系型数据库管理系统,只能在windows上进行运行。
  3. oracle:由甲骨文公司开发的,其主表支持堆表,也支持索引组织表,性能较好,但很多服务需要收费。
  4. pg:适用于更加严格的企业应用场景;mysql适用于数据可靠性要求较低的互联网场景。pg和其他数据库最大的区别是可以加载不同的插件,它包括了可以说是目前世界上最丰富的数据类型的支持;其次,目前PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。

SQL语言由4部分组成

  1. 数据定义语言DDL(Data Definition Language) 包括数据库、基本表、视图和索引等,扩展DDL还支持存储过程、函数、对象、触发器等的定义 DDL包括3类语言,即定义、修改和删除 create/drop/truncate/alter
  2. 数据操纵语言DML(Data Manipuplation Language)检索和更新:insert/delete/update/select
  3. 数据控制语言DCL(Data Control Language) 对象授权、用户维护、完整性规则定义和事务定义 grant/revoke/commit/rollback 4.其它 嵌入式SQL语言和动态SQL语言的定义 重新组织、备份与恢复

2.SQL查询

SELECT共有6个子句,其中SELECT和FROM是必须的,其它是可选项,必须严格按照如下顺序排列: SELECT [ALL | DISTINCT] <目标列表达式> [AS] [<别名>]                  

                            [, <目标列表达式> [AS] [<别名>] ... ]

            FROM {<表名> | <视图名> | <查询表>} [AS] [<别名>]              

                            [, {<表名> | <视图名> | <查询表>} [AS] [<别名>] ... ]

            [ WHERE <条件表达式> ]

            [ GROUP BY <列名1>] [, <列名2> ... ]    

            [ HAVING <条件表达式> ]

            [ ORDER BY <列名表达式> [ASC | DESC]                        

            [, <列名表达式> [ASC | DESC] ... ] ]

(1) <目标列表达式>可以是下面的可选格式:   [ {<表名> | <别名>}.]*   [ {<表名 >| <别名>}.]<列名>   <函数>    <聚合函数>

(2) FROM子句指定查询所涉及的表、视图或查询表,为操作方便,常给表取一个别名,称为元组变量

(3) WHERE子句给出查询条件,随后的<条件表达式>中可以使用下面的谓词运算符:

       比较运算符:>,>=,<,<=,=,<>,!=;  

      逻辑运算符:AND,OR,NOT;  

      范围运算符:[NOT] BETWEEN...AND;  

      集合运算符:[NOT] IN;  

      空值运算符:IS [NOT] null;  

      字符匹配运算符:[NOT] LIKE;  

      存在量词运算符:[NOT] EXISTS。

      在WHERE <条件表达式>中可以包含子查询,但不可以直接使用聚合函数,若要使用聚合函数,必须引出一个子查询。

SQL语句执行顺序

      1.FROM 子句:执行顺序为从后往前、从右到左。数据量较少的表尽量放在后面。

      2.WHERE子句:执行顺序为自下而上、从右到左。将能过滤掉最大数量记录的条件写在WHERE 子句的最右。

      3.GROUP BY:执行顺序从左往右分组,最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉。

      4.HAVING 子句:消耗资源。尽量避免使用,HAVING 会在检索出所有记录之后才对结果集进行过滤,需要排序等操作。

      5.SELECT子句:少用*号,尽量取字段名称。ORACLE 在解析的过程中, 通过查询数据字典将*号依次转换成所有的列名, 消耗时间。

      6.ORDER BY子句:执行顺序为从左到右排序,消耗资源。

1.比较运算 >、>=、<、<=、=、<>(或!=)

2.范围查询 BETWEEN...AND、NOT BETWEEN...AND IN、NOT IN

3.空值查询 IS null、IS NOT null   注意:IS不能用“=”替代

4.字符匹配查询 [NOT] LIKE <匹配字符串> [ESCAPE <换码字符>] 通配符%和_ %表示任意长度的字符串    如:‘ab%’     ‘zhang%ab’ _表示任意一个字符  如:‘ab_’   ‘a__b’

5、排序查询 Order By子句 当在查询表中数据时,记录比较多,有可能需要进行排序,此时可以使用 order by子句。 语法:ORDER BY <表达式1> [ASC | DESC]  [, <表达式2> [ASC | DESC] ... ] 注意: 可以通过一个或多个字段排序。 排序规则: ASC:升序 ,DESC: 降序,默认是升序排序。

6、Distinct 去重 有的时候我们需要对重复的记录进行去重操作,比如,查询表中有哪些职位,此时,一种职位只需要显示一条记录就够。 位置:必须写在select关键字后

7、分组查询 Group By 子句 分组查询与分组函数(聚合函数):有的时候,我们可能需要查询表中的记录总数,或者查询表中每个部门的总工资,平均工资,总人数。这种情况需要对表中的数据进行分组统计。需要group by子句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值