《SQL必知必会》读书笔记

SQL 必知必会

了解SQl

数据库基础

数据库

数据库是一个以某种有组织的方式存储的数据集合

数据库应用软件被称为数据库管理系统(即DBMS)

表是一种结构化的文件,可用来存储某种特定类型的数据,数据库中的每个表都有一个名字来标识自己。这个名字是唯一的。

列和数据类型

表由列组成。列存储表中某部分的信息。

每个列都有相应的数据类型,限制该列种存储的数据

数据类型:定义列中可以存储哪些数据种类

表中的一个记录

主键

表中的每一行都应该至少有一列可以唯一标识自己

表中的任何列都可以作为主键,只要满足一下特点:

  • 任意两行都不具有相同的主键值
  • 每一行都必须有一个主键值,且主键不能为空
  • 主键列中的值不允许修改或者更新
  • 主键值不能重用(如果某行从列表中删除,它的主键不能赋给以后的新行)

什么是SQL

SQL是结构化查询语言 Structured Query Language

一种专门来与数据库沟通的语言

检索数据

检索单个列

如:
select prod_name from Products

检索多个列

select pord_id,prod_name,prod_price from Procucts

列名之间用逗号分开

检索所有列

select * form Products

给定通配符(*)则返回表中所有的列

建议:一般而言,除非你确实需要表中的每一个列,否则最好别使用*通配符。虽然通配符能让你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能

检索不同的值

select distinct vend_id from Products

distinct 关键字,指示数据库只返回不同的值,它必须放在列名的前面

限制结果

SqlServer

select top 5 prod_name from Products

MySql、MariaDB、PostgreSQL、SQLite

select prod_name from Products limit 5 offset 5

返回特定数量的行

排序检索数据

关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序由任何意义。

子句:SQL语句由子句构成

Order by子句的位置:

在指定一条Order by 子句是,应该保证它是select语句中最后一条子句

过滤数据

使用where 子句,指定搜索条件进行过滤。
where 子句必须在表面之后给出

操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
!< 不小于
> 大于
>= 大于等于
!> 不大于
BETWEEN 在制定的两个值之间
IS NULL 为空值

高级数据过滤

使用 and 来联结多个查询条件(且)
使用 or 来来联结多个查询条件(或)

用通配符进行过滤

创建计算字段

使用函数进行处理数据

汇总数据

分组数据

使用子查询

联结表

创建高级联结表

组合查询

插入数据

更新和删除数据

创建和操纵表

使用试图

使用存储过程

为什么要使用存储过程

  • 通过把处理封装在一个易用的单元中,可以简化复杂的操作
  • 由于不要求反复建立一系列的处理步骤,因而保证了数据的一致性
  • 简化了对变动的管理
  • 存储过程通常以编译过的形式存储,所以DBMS处理命令所需的工作量比价少,提高了性能

总而言之,就是 简单、安全、高性能

但是缺点就是不同DBMS中的存储过程语法有所不同,所以编写可移植的存储过程几乎是不可能的

管理事务处理

使用事务处理,通过确保成批的SQL 操作要么完全执行,要么完全不执行,来维护数据库的完整性

术语介绍:

  • 事务:指一组SQL语句
  • 回退:指撤销指定SQL语句的过程
  • 提交:指将未存储的SQL语句结果写入数据库表
  • 保留点:指事物处理中设置的临时占位符,可以对它发布回退

事务中的开始和结束

begin transaction
commit transaction

回退

rollback

使用保留点

save transaction delete1
rollback transaction delete1

使用游标

高级SQL特性

猜你喜欢

转载自www.cnblogs.com/enonly/p/9292142.html