目录
第一章 数据库概述
1.为什么要学习数据库?
2.数据库的相关概念
3.ORM(Object Relational Mapping)思想
4.表与表的记录之间存在哪些关联关系
第二章 基本的SELECT语句
1.SQL的分类
2. SQL基本规则
3.导入现有的数据表、表的数据
4.最基本的SELECT语句
第三章 运算符
1.算术运算符
2.比较运算符
3.逻辑运算符
4.位运算符
第四章 排序与分页
1.基本排序
2.使用order by对数据排序
3.分页
4.where、order by、limit声明顺序
5.mysql新特性:offset
6.注意
第一章 数据库概述
1.为什么要学习数据库?
 1.为了将内存中的数据持久化
         持久化:把数据保存到可掉电式存储设备中以供之后使用。数据持久化意味着将内存中的数据保存到硬盘中加以固化
 2.为何使用数据库来存储
         原因:数据库中可存储数据类型多样化;容易操作其中存储的数据;可以存储的数据量更大  
 2.数据库的相关概念
 
 1.DB-DataBase
        数据库;本质是一个文件系统
 2.DBMS-Database Management System
        数据库管理系统;一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制
 3.SQL:Structured Query Language
        结构化查询语言;专门用来与数据库通信的语言
 4.关系型数据库和非关系型数据库
 关系型:存储的复杂数据结构存在一定的关系模型
 非关系型:
         键值型数据库:Redis
         文档型数据库:MongoDB
         搜索引擎数据库:Elasticsearch
         列式数据库:HBase
         图型数据库:InfoGrid  
 3.ORM(Object Relational Mapping)思想  
 
 E-R模型:entity- relationship
 E-R模型三个主要概念:实体集、属性、联系集
         1.数据库中的一个表- Java中的一个类
         2.表中的一条数据-类中的一个对象
         3.表中的一列-类中的一个对象  
 4.表与表的记录之间存在哪些关联关系  
 
一对一关系、一对多关系、多对多关系,自关联
第二章 基本的SELECT语句
1.SQL的分类
 1.DDL:数据定义语言
 CREATE、ALTER、DROP、RENAME、TRUNCATE
 2.DML:数据操作语言
 INSERT、DELETE、UPDATE、SELECT
 3.DCL:数据控制语言
 COMMIT、ROLLBACK、SAVEPOINT、GRANT、REVOKE
2. SQL基本规则
1.sql可以写在一行或者多行
 2.每条命令以 ;或 \g 或 \G 结束(这两个表示转置)
 3.关键字无法缩写或分行
 4.标点符号:
         字符串、时间类型都需要使用单引号
         列的别名使用双引号
 5.建议关键字变量为大写,表名数据库名小写
 6.SQL注释
         #单行注释、单行注释:
- -(后面必须有空格)
/**/多行注释
3.导入现有的数据表、表的数据
1.source  文件的全路径名
 举例:命令行中输入:source d:\atguigudb.sql;
 2.基于具体的图形化界面工具导入
4.最基本的SELECT语句
 1.select 字段1,字段2… from …表名
 2.*:表中所有的字段
 3.列的别名:AS-全称:alias(别名)
 三种方法
select emp_id empId,
last_name AS lname,
department_id "部门ID"
from emps; 
4.去除重复行:DISTINCT
 select distinct 字段…from 表名…
SELECT DISTINCT department_id
From employees; 
5.空值参与运算:null不等同于0,‘’;空值参与运算:结果也一定为空
 6.着重号:1左边的符号;当表名与关键字重复时加入着重号
 7.查询常数:字段里写常数即可
SELECT 'XXX' , salary 
FROM employees; 
 8.显示表结构:describe 表名;显示表中字段的详细信息
DESCRIBE table; 
 9.过滤数据:字符串用单引号执行
 SELECT字段…FROM表名…WHERE过滤条件
SELECT last_name,manager_id
FROM employees
WHERE employee_id = 176; 
 
第三章 运算符
1.算术运算符
1.加 +
 sql中+没有连接作用,只表示加法运算;字符串会转换为数值,不能转换为数值就为0
DUAL:一个伪表
#结果:1001
SELECT 100 + 1
from DUAL;
SELECT 100 + '1'
from DUAL;
#字符串转换为数值
SELECT 100 + 'a'
from DUAL;
#null参与运算结果为null
SELECT 100 + NULL
from DUAL; 
2.减 -
 3.乘 *
 4.除 / ;div
         一般除不尽,结果都是浮点型;
        分母为0结果为null
 5.余 %;mod
         结果的符号和被模数有关
2.比较运算符
1.比较为真返回1;比较为假返回0;其他返回false
 2.比较运算符:
等于:= ;<=>:安全等于
        不等于: <> != :这两个都是null
         大于/小于:< <= >= >
         若都是都是字符串,按照ansi比较规则进行比较
 3.只要有null参与比较,结果就为null
 4.ISNULL为函数;IS NULL为比较运算符
SELECT salary
FROM emps
WHERE pct IS NULL;
SELECT salary
FROM emps
WHERE ISNULL(pct)  
6.between条件一 and条件二
 条件一要小于条件二
闭区间
SELECT emp_id
FROM emps
WHERE salary BETWEEN 6000 AND 8000 
7.LIKE:模糊查询
 % :代表不确定个数的字符
 _ :代表一个不确定的字符
SELECT last_name
From emps
WHERE last_name LIKE '%a%'
SELECT last_name
From emps
WHERE last_name LIKE '_a%' 
 8.REGEXP 、 RLIKE:正则表达式
SELECT 'start' REGEXP 'ar'
FROM DUAL; 
 
3.逻辑运算符

注意:and的优先级是高于or的
4.位运算符
一定范围内,每左移一位,乘以2;每右移一位,除以2

第四章 排序与分页
1.基本排序
如果没有使用排序操作,默认情况下查询的数据是按照添加数据的顺序显示
2.使用order by对数据排序
1.升序:ASC(ascend)
SELECT emp_id 
FROM emps
ORDER BY salary ASC; 
2.降序:DESC(descend)
SELECT emp_id 
FROM emps
ORDER BY salary DESC; 
3.order by后没有指明排序方式,则升序
4.列的别名只能在order by中使用
SELECT emp_id empId
FROM emps
ORDER BY empId; 
5.二级排序
SELECT emp_id 
FROM emps
ORDER BY salary DESC,dept_id ASC; 
6.where需要声明在from后面,order by前
3.分页
1.在mysql中使用limit实现数据的分页显示limit 数据偏移量 条目数
2.每页显示pagesize条记录,此时显示第pagenumber页:公式:limit (pagenumber-1)*pagesize,pagesize
#每页显示20条记录,此时显示第2页
SELECT emp_id,last_name
From emps
LIMIT 20,20; 
 
4.where、order by、limit声明顺序
SELECT emp_id
FROM emps
WHERE salary > 100
ORDER BY salary DESC
LiMIT 10,10; 
 
5.mysql新特性:offset
#表中100条数据,显示第32与第33条数据
SELECT emp_id
FROM emps
LIMIT 31,2;
#使用OFFSET来实现
SELECT emp_id
FROM emps
LIMIT 2 OFFSET 31; 
 
6.注意
LIMIT只能在MYSQL、SQLite、PGSQL中使用;
在SQL SErver、DB2、Oracle中无法使用



















