提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
MYSQL基础简述
文中示例所需资源:
点击下载
提取码:6666
数据库
概述
-
数据库:就是数据仓库,其本质是一个文件系统,按照特定的格式将数据存储起来,用户可以独一数据库中的数据进行增删改查的操作。
-
数据库管理系统:简称DBMS,只一种操作和管理数据库的大型软件,用来建立,使用和维护数据库,对数据库进行统一管理和控制,保证数据的完整性和安全性,用户通过数据库管理系统来访问数据库表中的数据
-
常见的数据库
-
Mysql:Oracle
-
Oracle:Oracle
-
DB2:IBM
-
SQLServer:微软
-
SyBase:SYBase
-
-
Dept(部门表)
-
deptno:部门编号
-
dname:部门名称
-
loc:部门地址
-
-
Emp(员工表)
-
empno:员工编号
-
ename:姓名
-
job:工作岗位
-
mgr:经理编号
-
hiredate:入职日期
-
sal:薪水
-
comm:奖金
-
deptno:部门编号(与部门表中的deptno关联)
-
-
SalGrade
-
grade:薪水等级
-
losal:最低薪水
-
hisal:最高薪水
-
SQL(结构化查询语言)
-
简介
-
是操作和检索关系型数据库的标准语言
-
20世纪70年代由IBM公司开发,目前用于所有关系型数据库
-
-
分类
- 数据查询语言(DQL):主要包括select语句,用于从表中检索(查询)数据
- 数据操作语言(DML):主要Insert,update和delete,用于添加,更新和删除表中数据
- 事物处理语言(TPL):主要包括commmit和rollback,用于数据提交和回滚
- 数据控制语言(DCL):主要包括grant,reboke,用于进行授权和回收授权
- 数据定义语言(DDL):主要包括create,drop,alter,用于定义,销毁和修改数据库对象
-
sql语句书写规则:
-
不区分大小写
-
可以单行书写,也可以多行书写,建议多写,增加代码可读性
-
简单查询语句
- select*from dept;
- 语句:一条完整的sql命令
- 子句:部分sql语句,通常是由关键字加上其他语法元素构成
- 关键字:sql语言保留的字符串,比如:select、from
- 选择列
- 查询所列:*
- 查询部分列:select deptno,dname from dept;
- 算数运算符:+、-、*、/
- navicat中注释快捷键:
- 添加注释:选中内容,ctrl+/
- 取消注释:选中内容,ctrl+shift+/
- 空值:null
- 空值是一种无效的,未赋值的或不可用的值(不确定的值)
- 空值不同于零或者空格
- 任何包含空值的算数表达式预算后的结果为空值
- 列别名
- 用来重新命名列的显示标题
- 列别名的方法
- 列名 (空格) 列别名
- select ename,sal,comm,sal+comm,sal*12 年薪
- 列名 as 列别名
- select ename,sal,comm,sal+comm,sal*12 as 年薪
- 列名 (空格) 列别名
- 注意:如果列别名中包含空格需要使用双引号把列名括起来
- select ename,sal,comm,sal+comm,sal*12 “年 薪”
- 消除重复行:DISTINCT(去行)
- select DISTINCT job
限制数据行查询
-
语法规则
-
使用where子句限定返回的记录
-
where子句放在from子句后
-
select 列的列表
from 表名
where 条件
-
-
比较预算符
- =、>=、>、<、<=、<>(不等于)
- 比较日期:日期数据使用单引号括起来,格式符合日期要求(‘1982-01-01’ , ‘1982/01/01’ )
-
字符串数据要使用单引号括起来默认不区分大小写(跟排序规则有关)
-
特殊比较运算符
- between…and…确定范围,在两个值中间(包含比较值)
- select ename,HIREDATE 入职日期
FROM emp
where HIREDATE BETWEEN ‘1982-01-01’ AND ‘1985-12-31’
- select ename,HIREDATE 入职日期
- in(列表):确定集合
- – select ename,empno
– from emp
– WHERE ename in(‘WARD’,‘BLAKE’,‘SCOTT’)
- – select ename,empno
- like:模糊查询
- select ename
from emp
WHERE ename like ‘S%’ - 使用通配符来代替未知信息
- %:可以代替任意长度的字符(0到任意多个)
- _(下划线):可以代替任意一个字符
- select ename
- is null:判断是空
- select ename,comm
from emp
WHERE comm is null
- select ename,comm
- between…and…确定范围,在两个值中间(包含比较值)
-
逻辑运算符:and,or,not
- select *
from emp
WHERE ename = ‘scott’ or sal > 3000
- select *
-
运算符的优先级(括号的优先级最高)
排序
- order by{ 列表 | 表达式 | 别名 }[ asc | desc ]
- asc:升序,默认值,desc:降序
- SELECT *
from emp
order by sal ASC(叫表达式)- 别名排序
- SELECT ename,sal 月薪
from emp
order by 月薪 ASC - 多列排序
- SELECT ename,sal 月薪
from emp
order by 月薪,empno desc(先按月薪,月薪相同,排后按编号排)
- SELECT *
- 子句的执行排序:from where select (order by)
- MySQL中null为最小(注意:Oracle中null最大)
- 可以按照select后列的顺序号排序,顺序号从1开始
- 注意:排序的列可以不出现在select
- SELECT empno,ename,COMM
from emp
order by 3 desc
- SELECT empno,ename,COMM
- 注意:排序的列可以不出现在select
Limit子句
-
top N:limit N
-
分页:limit startindex,N
-
注意:起始索引为0,所以使用用时-1
-
每页3条记录,要显示的二页数据 7521,7654,7934
pageNum(第几页), pageSize(每页最多行数)
select*
from emp
order by sal
limit 3,3分页语句:limit(pageNum-1)*pageSize,pageSize
-
-
执行语句: from where select(order by) limit
注释
三种方式:
- – 注释 (单行)
- #注释 (单行)
- / * 多行注释 * / (多行)