MySQL学习笔记

MySQL学习笔记


  1. 为什么要学习数据库

    通常用于保存数据的容器:

    数组 集合(内存,一段电就没了) 文件 (可以实现永久存储,但如果存在大量文件时就很不方便查询,也很不方便管理)…

    这时候就需要管理数据的软件 --数据库管理系统


  2. 数据库相关概念

    • DB,DBMS,SQL

      DB就是数据库,数据库是要反复使用,所以数据库是有组织的,它不像垃圾桶混乱无序

      DBMS就是数据库管理系统,也就是平时人们常说的“数据库”,常见的数据库管理系统有MySQL,Oracle,DB2,SqlServer等

      相关数据库管理系统的排名可到DB-ENGINES查询

      2020.8.1最近的排名为

      1.Oracle 2.MySQL 3.Microsoft SQL Server

      SQL就是结构化查询语言,专门用来与数据库通信的语言

      SQL的优点:

      1. 不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL

      2. 简单易学

      3. 虽然简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作


  3. 数据库存储数据的特点

    数据库的特点

    1. 将数据放到表中,表再放到库中

    2. 一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性

    3. 表具有一些特性,这些特性定义了数据在表如何存储,类似java中“类”的设计

    4. 表由列组成,我们也称为字段,所有表都是由一个或多个列组成的,每个类似java中的“属性”

    5. 表中的数据是按行存储的,每一行类似于java中的“对象”


  4. 初始化MySQL

    • MySQL产品的介绍

      Mysql数据库隶属于Mysql AB公司,总部位于瑞典,后来被oracle收购

      优点

      成本低,开放源代码,一般可以免费试用

      性能高, 执行很快

      简单,很容易安装和使用

      DBMS分为两大类

      基于共享文件系统的DBMS(Access)

      基于客户机-服务器的DBMS(Mysql,Oracle,SqlServer)

      MySQL的版本

      社区版(免费)

      企业版(收费)

      http://dev.mysql.com/downloads/mysql

    • MySQL安装和卸载

      卸载:

      由于本人用得是window所以只以window为例子

      在控制面板>程序>程序和功能中删除所下载的mysql程序,这一步是删除不干净的,

      还得在c盘中Programdata>mysql中删除mysql的数据,还得在mysql安装的文件中删除干净,如果还是不干净就从注册表中删除,注册表应该删除如下:

      HKEY_LOCAL_MACHINE\SYSTEM\ControlSet00I\Services\Eventlog\Application\MySQL 目录
      HKRY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目录
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 目录
      HKRY_LOCAL_MACHINE\SYSTEM\CurrentControl001\Services\MYSQL日录
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl002\Services\MYSQL目录
      HKRY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MYSQL目录
      C:\Documents and Settings\All User\Application Data\MySQL目录(隐藏的目录)

      最简单的方法就是用工具删除干净,如360软件

      安装:

      安装包的连接

      截图

      根据自己的系统来决定选择哪个

      截图

      更加具体的过程,限于本人已经安装,没有安装的可以参考

      如果安装过程出现失败可以先别卸载,可以在安装目录内>bin目录下MySQLlinstanceConfig.exe文件双击后重新配置下。

    • MySQL服务的启动和停止

      启动:打开 控制面板\所有控制面板项\管理工具\服务

      截图

      或者在DOS窗口 启动net start mysql(这个为mysql的名称就是安装mysql软件时) 停止 net stop mysql,上面的操作必须以管理员的身份进行操作

    • MySQL服务的登录和退出

      mysql需要配置环境变量

      登录:在DOS中输入 mysql -uroot -p(这个以自己的在安装时来定)

      退出:在DOS中输入 quit

      或者是用SQLyog软件

    • MySQL的常见命令和语法概念

      常见命令如下:

      查看数据库的版本

      select version(); 或者是在DOS中在没有进入mysql中下 mysql --V

      查询数据管理系统中有多少个数据库

      show datebases;

      使用指定数据库

      use 数据库名;

      查询指定数据库中有多少张表

      show tables;

      查询指定表的结构

      desc 表名;

      查看正在使用哪个数据库

      select datebase();

      在mysql是不区分大小的,但是通常情况下关键字是大写,表名,库名,列为小写

      查询结束时加;


  5. DQL语言的学习

    • 基础查询

      语法为:

      查询字段

      select 查询列表 from 表名;

      特点:查询列表可以是:表中字段,常量值,表达式,函数

      ​ 查询的结果是一个虚拟的表格

      查询单个字段如:

      select name from student

      查询多个字段如:

      select name old from student(就是在select后面定义要查询的多个字段,字段之间用空格隔开)

      查询全部字段

      select * from student

      查询常量值 就是显示常量值

      查询表达式如

      select 1000*20;

      查询函数如

      select version();

      起别名如

      select 100*20 as result 可以为 select 100 * 20 result 如果别名中有空格可以加单引号也可以加双引号

      去重:

      select distinct 相关列名

      +号的作用:

      运算符(加运算,当一方为数值型试图会将其它类型转化为数值型然后进行加法运算,当一方为null时值为null)

      concat用法:就是拼接

      select concat(‘a’,‘b’,‘c’)

    • 条件查询

      语法

      select 查询列表 from 表名 where 筛选条件;

      分类

      一. 按条件表达式筛选

      条件运算符:>,<,=,!=,<>(这个是不等于),>=,<=,<=>(这个是安全等于)

      按逻辑表达式:&&,!,||,and,or,not

      模糊查询:like,between,and,in,is null,if null(?,0)

      模糊查询例子:(%为通配符)

      select * from student where lastname like ‘%a%’

      like的特点:

      %任意多个字符,包含0个字符,_单个字符,特殊字符表示可以用转义\,也可以自定义转义关键字为escape

      例子:

      select * from student where name like ‘%a %' escape ' ’;

      其他注意点:

      between and 特点包含两个临界值,它和<,>经常替代使用

      or,如果or过多的话可以用in来代替,in相当于=,所以它不支持通配符,in有点像数学的枚举

      安全等于<=>后面可以加null,也可以加常量

    • 排序查询

      语句:

      select * from student where 筛选条件 order by 排序列表 asc(升序)|desc(降序),如果后面不写默认是升序

      order by 后面可以加字段 多个字段 表达式 函数 别名

    • 常见函数

      函数概念:类似java中方法,将一组逻辑语句封装在方法中,对外暴露方法名

      调用:select 函数名(实参列表)【from 表】

      特点:叫什么,干什么

      分类:单行函数(做处理),分组函数(做统计的,也叫统计函数)

      常见函数:字符函数,数学函数,日期函数,其他函数,流程控制函数

      字符函数(有点类似于java的String对象中的方法):

      length():

      用于获取指定字符串的长度(字节),例子:select length(‘中国’);

      concat ():

      拼接字符串,例子:select concat(‘中国’,‘必胜’);

      upper(),lower():

      大写字符串,小写字符串,例子:select upper(‘aaaaa’); select lower(‘AFDFDDD’);

      substr(),substring():

      截取子字符串,例子:select substr(‘adfsafa’,2);select substr(‘sfsafas’,1,3); 字符串指的是被截取的对象,第一数字为开始在哪一位截取,在mysql中索引是从1开始的,第二个数字表示截取几个

      instr():

      返回子字符串第一次出现的索引,如果找不到返回0,例子:select instr(‘skjaskjla’,‘ja’);

      trim():

      去除前后的空格,例子:select trim(’ 中国 ');

      lpad():

      左填充指定字符,例子:select lpad(‘道’,10,‘佛’); 第一个字符串为定点,数字为填充个数,最后一个字符串就是填充物

      rpad():

      右填充指定字符,例子同上类似

      replace():

      用指定子字符串替代字符串中指定的子字符串,例子:select replace(‘helloworld’,‘world’,‘grils’); 第一个为主字符串,第二个为被代替子字符串,第三个为代替子字符串

      数学函数:有点类似于Math类

      round():

      四舍五入,例子:select round(2.25,1); 第一个数值为要四舍五入的对象,第二个数字为多少保留多少个小数,如果当不保留小数时第二个数字可以不要

      ceil():

      向上取整,例子,select ceil(1.222);

      floor():

      向下取整,与上面类似

      truncate():

      截断 ,例子: select truncate(1.222,3);第一位数值为被截断者,第二位为保留小数位数

      mod();

      取余,例子: select mod(5,2);5为被除数,被除数为正数余就是正数

      日期函数:

      now():

      返回当前系统时间+日期,无参数,select now();

      curdate():

      返回系统日期,不含时间,无参数,同上

      获取指定部分的年,月,日,时,分,秒,格式例子:select year(now());

      str_to_date():将日期格式的字符床妆化为指定类型的日期格式:select str_to_date(‘9-12-1999’,’%m-%d-%y’)

      date_format:将日期换成字符

      date_format(‘2018/2/6’,’%Y年%m月%d日’)

      其他函数:

      select version();

      select datebase();

      select user();

      流程控制函数:

      if(a,b,c):

      如果a成立就为b,不成立就为c,例子:select if(5>1,1,2);

      case();有点类似于switch

      语法为:select case 要判断的表达式

      ​ where 常量1 then 要现实的值或语句;

      ​ where 常量1 then 要现实的值或语句;

      ​ else 要现实的值或语句;

      ​ end

      类似于if else if的case():

      case()

      where 语句 then 语句或字段;

      where 语句 then 语句或字段;

      where 语句 then 语句或字段;

      else 语句 then 语句或字段;

    • 分组函数

      功能用于统计,被称为统计函数

      sum求和,avg平均值,max最大值,min最小值,count统计个数

      使用例子如下

      select sum(表的列名),avg(表的列名)。。。。类推

    • 分组查询

      分组查询格式为

      select 分组查询列表 from 表名 where 筛选条件 ground by 分组字段 having 后续操作;

      特点:

      分组前筛选条件为 where ,分组前的筛选条件涉及实在表,分组后筛选条件为having,是指分组函数运算后的,涉及分组函数的筛选条件就是

    • 连接查询(涉及两表查询的方式)

      连接查询分类:

      内连接:等值连接 非等值连接 自连接

      等值连接:例子如下

      select name,boyname

      from boys,beauty

      where beauty.boyfriend_id=boys.id;

      上面另一种写法为:遵守标准为sql99

      select name,boyname

      from boys

      inner join beauty

      on beauty.boyfriend_id=boys.id

      (这种格式的写法基于SQL99标准,相关格式如下)

      select 查询列表

      from 表1 别名 【连接类型】

      join 表2 别名

      on 连接条件

      【where 筛选条件】

      【grounp by 分组】

      【having 筛选条件】

      【order by 排序条件】

      连接类型:

      内连接:inner

      外连接:

      ​ 左外:left 【outer】

      ​ 右外:right 【outer】

      ​ 全外:full【outer】

      交叉连接:cross

      非等值连接:不是直接根据相同列的含义来将表连接在一起,不是直接=的关系,比如一个员工的工资位于哪个阶段,所处的阶段是根据员工的工资去寻找它位于哪个两个标准工资之间,然后两个标准工资处于哪个阶段,得出员工的工资在哪个阶段,例子如下:

      select salary,grade_level

      from employee e

      join job_grades g

      on e.‘salary’ between g.‘lowest_sal’ and g.‘highest_sal’;

      自连接:

      特点就一张表扮演多个角色,查得都是自己

      例子如下:

      select e.last_name,m.last_name

      from employees e

      join employees m

      on e.‘manager_id’=m.‘employee_id’;

      外连接:左连接 右连接 全外连接

      作用:用于查询一个表有,另一表没有的记录

      例如查询哪个部门没有员工

      select d.* ,e.employee_id

      from departments d

      left outer join employees e

      on d.‘department_id’=e.‘department_id’

      where e.‘employee_id’ is null;

      交叉连接

      就是笛卡尔连接,就是一表中m条记录与另一张表n条记录相连接,m*n

      外连接的特点:

      外连接的查询结果为主表中的所有记录:

      ​ 如果从表中有和它匹配的,则显示匹配的值,没有则显示为null

      ​ 外连接查询的结果=内连接+主要中有从表中没有的记录

      判断主表的方式为连接方式

      全外连接=内连接的结果+表1中有表2中没有+表2中有表1中没有(Mysql中不支持全外连接)

    • 子查询

      概念:出现其他语句中的select语句,称为子查询或内查询,外部查询语句为主查询

      分类:

      按子查询出现的位置

      select后面:仅仅支持量子查询

      from后面:支持表子查询

      where或者having后面:量子查询,列子查询,行子查询

      exits后面:表子查询

      标量子查询(结果为一行一列)

      表子查询(结果通常是多行多列)

      列子查询 (结果通常为一列多行)

      行子查询 (结果为一行多列)

      一.where 或 having后面:(多行多列,一行一列,一行多列)

      特点:子查询放在小括号内,子查询一般放在条件后面,标量子查询一般搭配单行操作符使用 >, < ,>=,=,<>,列子查询:一般搭配着多行操作符使用 in,any/some,all

      例子:

      select *

      from employees

      where salary > (select salary from employees where last_name =‘Abel’);

      相关视频链接

    • 分页查询

      应用场景:当要显示的数据,一页显示不全,需要多页提交sql请求

      格式为

      select 查询列表

      from 表

      【join type join 表2】

      on 连接条件

      where 筛选条件

      group by 分组字段

      having 筛选条件

      order by 排序字段

      limit 【offset】 size

      offset为显示条目的起始索引(从0开始)

      size要显示条目个数

      相关视频连接

    • union联合查询

      将多条查询语句的查询结果合并成一个结果

      特点:查询的列数相同,列名顺序相同

      语法

      查询语句1

      union

      查询语句2

      相关视频链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值