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 特性
来源: https://www.cnblogs.com/enonly/p/9292142.html