• MySQL概念


    b5032d1e2ec147288edf36b27d586ce0.gif原理定义概念

     

    定义

    数据库(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

  • 相关阅读:
    Vue重新渲染组件的最佳方式是什么?
    ThinkPHP高仿蓝奏云网盘系统源码/对接易支付系统程序
    C# ManualResetEvent 类分析
    【设计模式深度剖析】【3】【行为型】【职责链模式】| 以购物中心客户服务流程为例加深理解
    Himall商城- web私有方法
    如何将一三两行数据中电话号码相同的数据(标签-spark)
    第九章-线程
    python+vue_django编程语言在线学习平台
    常用python模板
    局部刷新,例如,列表中只更新 收藏图标
  • 原文地址:https://blog.csdn.net/weixin_57763462/article/details/133623945