MySQL概念

原理定义概念

定义

数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库

数据库是长期储存在计算机内、有组织的、可共享的数据集合

分类:

(1)非结构化数据:

数据相对来讲没有固定的特点,这种数据非常不便于检索

但是生活中很多都是非结构化数据

(2)半结构化数据:

数据之间有着相同的存储结构 属性:值

每一条数据的属性可以不同

张三:

三号学生

李四:

(3)结构化数据

创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据

数据之间有着相同的存储结构 属性 值

同一个结构模型中每一条数据的属性都是相同的,但是值有可能不同,这些数据非常便于存储和管理

于是针对这些数据,专门设计一套数据存储的软件,现在我们说的数据库主要用来存储这些数据

产品

sqlserver -->微软

Mysql -->Java-->Oracle收购

免费

Oracle-->Oracle

收费

DB2-->IBM 份额很少

问题

我们所有的数据库都放在软件中

我们要获取到数据,就需要使用软件给我们提供的访问数据的接口

最痛苦的就是程序员,我们就要为存储数据学习不同的数据库

于是有人开始倡导:使用统一的操作数据库的方式

SQL

sql一般指结构化查询语言(Structured Query Language),简称SQL.

全世界所有的结构化数据库都适用

分类

DQL:Data Query Language 数据查询语言

定义数据库的一些组件 表 索引 视图 自增序列...

DML:Data Manipulate Language 数据操纵语言

数据库的增、删、改、查

DDL:Database Definition Language 数据定义语言

Create Drop Alter

DCL:Data Control Language 数据库控制语言

权限

事务的提交:commit

事务的回滚:rollback

SQL语言属于第四代语言,而java c++ 才属于第三代

安装

官网

https://www.mysql.com/

https://dev.mysql.com/downloads/mysql/

MySQL安装

安装路径

C:\Program Files\MySQL\MySQL Server 8.0

root密码 123456

端口 3306

数据库已经安装完成并可以使用了,但是现在就是操作不方便

进入mysql数据库的命令

(1)cmd 进入到doc窗口

(2)输入 cd C:\Program Files\MySQL\MySQL Server 8.0\bin

(3) mysql -u root -p

​ 输入密码:123456

(4)show databases;

(5)use mysql

(6)select host,user from user;

安装mysql的访问工具

navicat 收费的 ,我们需要进行简单的破解

破解之前必须关闭杀毒软件

数据库连接错误

1045 用户名和密码不匹配 用户名root 密码 123456

2003 连接不到mysql服务器,很常见的是因为启动失败

概念

关系模型中常用的概念

关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名

元组:可以理解为二维表中的一行,在数据库中经常被称为记录

属性:可以理解为二维表中的一列,在数据库中经常被称为字段

域:属性的取值范围,也就是数据库中某一列的取值限制

关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成

关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, ... ... ,属性N),在数据库 中成为表结构

scott用例表

emp 员工信息表

字段名 中文 类型 空? 默认值 克其他说明

EMPNO🔑 雇员编号 int(11) 否 主键

ENAME 雇员名称 varchar(255) 是

JOB 岗位工种 varchar(255) 是

MGR 上级 int(11) 是

HIREDATE 雇佣日期 date 是

SAL 工资 decimal 是

COMM 奖金|津贴 decimal 是

DEPTNO 部门编号 int(11) 是 外键,dept表的deptno 关联

dept部门信息表

字段名 中文 类型 空? 默认值 其他说明

DEPTNO🔑 部门编号 int(11) 否 主键

DNAME 部门名称 varchar(255) 是

LOC 地址 varchar(255) 是

salgrade薪资区间表

字段名 中文 类型 空? 默认值 其他说明

GRADE 等级 int(11)

LOSAL 最低薪资 int(11)

HISAL 最高薪资 int(11)

二、SQL-DQL语句

格式

select 列名*N from 表名 where 查询条件1 and/or 查询条件2 group by 列 Having 分组条 件 Order by 排序

规则

sql在书写的时候除了查询条件之外,大小写都可以

select * from user where uname ='zs';

SELECT * FROM USER WHERE UNAME = 'zs';

保持大小写风格

去公司之后需要看其他员工SQL大小写

-- 属于SQL语句的注释

所有的查询条件为字符串时,需要用''进行修饰,否则就会当做列名去处理

select查询列和别名

-- 查询所有员工信息(*通配符,默认查询所有的列)

select * from emp;

-- 查询员工的姓名

select ename from emp;

-- 查询员工的薪资 select sal from emp;

-- 查询员工的姓名和薪资

select ename , sal from emp;

select ename sal from emp;

select ename sal comm from emp;

-- 查询员工的姓名和薪资,推荐使用单引号

select ename '员工姓名', sal "薪资" from emp;

-- 查询到的数据可以直接进行运算

select ename ,sal ,sal * 12 from emp;

select ename ,sal ,comm ,(sal+comm) * 12 from emp;

select的条件查询

普通条件查询 = > < != <> >= <=

-- 查询员工编号为7369的员工

select ename,sal from emp where empno = 7369;

-- 查询员工姓名叫做

SMITH select ename,deptno,job from emp where ename = 'SMITH';

select ename,deptno,job from emp where ename = 'smith';

-- 查询薪资大于2000的员工姓名

select ename from emp where sal > 2000;

-- 查询工作为SALESMAN

select * from emp where job = 'SALESMAN';

-- 查询部门在20的员工

select * from emp where deptno = 20;

-- 查询薪资不等于2000的员工

select * from emp where sal != 2000;

select * from emp where sal != 2000;

in 在某个范围中查找

-- 查询 员工编号 为 7369 7788 7881的员工信息

select * from emp where empno in (7369,7788,7881);

-- 查询 员工编号除了 7369 7788 7881之外的所有员工信息

select * from emp where empno not in(7369,7788,7881);

-- 查询除了10,20部门之外的所有员工

select * from emp where deptno not in (10,20);

null值查询

-- 查询不发放津贴的员工信息

select * from emp where comm is null;

-- 查询发放津贴的员工信息

select * from emp where comm is not null;

范围比较

-- 查询薪资范围在1000-4000之间的员工信息 [1000.4000]

select * from emp where sal between 1000 and 4000;

模糊查询 % _

-- 查询名字中有S的员工

select * from emp where ename like '%S%';

-- 查询名字最后一个字符是S

select * from emp where ename like '%S';

-- 查询名字第一个字符是S

select * from emp where ename like 'S%';

-- 查询名字第二个字符是A

select * from emp where ename like '_A%';

-- 查询名字中有%的员工

select * from emp where ename like '%\%%';

-- 查询名字第8 188个字符是A,这是需要一些特殊的手段-》函数

-- % 代表任意字符的任意次数 _任意字符的一次

多条件联合查询 and or

(1)and 必须前后同时满足条件才能返回结果

(2)or前后有一个满足条件就能返回结果

-- 查询在20部门并且薪资大于2000的员工

select * from emp where deptno =20 and sal >2000;

-- 查询在20部门或者薪资大于2000的员工

select * from emp where deptno = 20 or sal >2000;

--查询不在20部门并且薪资小于2000的员工

select * from emp where deptno <> 20 and sal <2000;

select结果排序 order by

使用asc是升序排列(默认),使用desc可以降序排序

单列

-- 按照薪资进行排序(默认升序)

select * from emp order by sal;

-- 按照薪资进行排序(降序)

select * from emp order by sal desc;

-- 按照薪资进行排序(升序)

select * from emp order by sal asc;

-- 按照津贴进行排序(null排在最前面)

select * from emp order by comm;

多列

-- 多个排序的列

select * from emp order by deptno,sal;

-- 多个排序的列(部门升序 薪资降序)

select * from emp order by deptno,sal desc;

-- 多个排序的列(工作,薪资)

select * from emp order by job,sal;

select结果分页

-- 每次查询前N行

SELECT

*

FROM

emp

LIMIT 4;

-- 查询第N页,每页显示M个

select * from emp limit 0,3;

select * from emp

相关推荐
DCTANT42 分钟前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
程序员岳焱2 小时前
Java 与 MySQL 性能优化:MySQL全文检索查询优化实践
后端·mysql·性能优化
喜欢敲代码的程序员3 小时前
SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分离版:项目搭建(一)
spring boot·mysql·elementui·vue·mybatis
钢铁男儿3 小时前
C# 委托(调用带引用参数的委托)
java·mysql·c#
叁沐3 小时前
MySQL 02 日志系统:一条SQL更新语句是如何执行的?
mysql
RunsenLIu4 小时前
基于Vue.js + Node.js + MySQL实现的图书销售管理系统
vue.js·mysql·node.js
码不停蹄的玄黓4 小时前
MySQL Undo Log 深度解析:事务回滚与MVCC的核心功臣
数据库·mysql·undo log·回滚日志
Arthurmoo4 小时前
Linux系统之MySQL数据库基础
linux·数据库·mysql
好奇的菜鸟4 小时前
如何在Ubuntu上检查MySQL是否启动并放开3306端口
mysql·ubuntu·adb
Tangcan-4 小时前
【MySQL】 内置函数
mysql