目录
第一章 数据库概述
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中无法使用