R0ot's Blog

分享代码,记录生活

0%

MYSQL的简单学习

MYSQL简介

  1. 关系型数据库
    MYSQL数据库是一个关系型数据库,关系型数据库就是指,建立在关系模型的基础上,由多张互相连接的二维表组成的数据库
  2. 数据模型
    通过客户端连接数据库管理系统(DBMS),通过DBMS创建数据库,再通过数据库创建数据表
  3. MYSQL启动与连接
    –启动,以管理员身份运行命令行net start mysql80,关闭net stop mysql80
    –连接,可以用mysql自带的客户端命令行运行,也可以在系统的命令行里输入mysql -u root -p

SQL语法

  1. 通用语法
    1. sql语法是以英文分号;结尾,可以多行书写,或使用空格来增强语句的可读性
    2. MYSQL数据库的语句不区分大小写,但是关键字建议使用大写
    3. 注释: 单行注释:--,# 多行注释:/* */
  2. 分类
    1. DDL 数据库定义语言
    2. DML 数据库操作语言
    3. DQL 数据库查询语言
    4. DCL 数据库控制语言

DDL

将DDL语句主要分为数据库,,字段来讲解

  1. DDL的数据库操作

    1. 创建新的数据库 create database 数据库名;
    2. 删除数据库 drop database 数据库名;
    3. 查询所有数据库 show databases;
    4. 查询当前数据库 select database();
    5. 使用,进入数据库 use 数据库名;
  2. 表操作
    在进行表操作时,必须先进入数据库中(use)

    1. 创建新的表
      1
      2
      3
      4
      5
      create table 表名(
      字段1 类型 [comment 注释], #有逗号,
      字段2 类型 [comment 注释], #[]表示里面可有可无
      last字段 类型 [comment 注释] #最后一个字段后面没有逗号
      )[comment 注释]; #语句结束需要用分号;
    2. 删除表 drop table 表名;
    3. 修改表名 alter table 旧表名 rename to 新表名;
    4. 查询当前数据库所有表 show tables;
    5. 查询指定表的建表语句 show creat table 表名;
  3. 字段操作

    1. 增加表中的字段alter table 表名 add 字段名 类型 [comment 注释] [约束];
    2. 删除表中的字段名alter table 表名 drop 字段名;
    3. 修改表中的字段数据类型alter table 表名 modify 字段名 新数据类型;
    4. 修改表中的字段名和字段类型alter table 表名 change 旧字段名 新字段名 新数据类型 [comment 注释] [约束];
    5. 查询表结构(所有的字段) desc 表名;

DML

DML是数据操作语言,主要对表中的数据进行增删改的操作

  1. 数据的增加

    1. 给指定字段添加数据
      insert into 表名(字段1,字段2,...) values(值1,值2,...); //指定字段添加一行数据
    2. 给全部字段添加数据
      insert into 表名 values(值1,值2,...); //有几个字段就要填写几个值,添加一行数据
    3. 指定字段批量添加数据
      insert into 表名(字段1,字段2,...) values(值1,值2,...),(值1,值2,...); //指定字段添加好几行
    4. 全部字段批量添加数据
      insert into 表名 values(值1,值2,...),(值1,值2,...); //values有几个括号就有几行值
    5. 注意: 字符串和日期型数据需要包含在引号中,数据的大小不能超过规定大小
  2. 数据的删除
    delete from 表名 [where 条件];
    delete删除的不是某一字段的值,而是符合条件的那一整行值,如果没有条件则删除全部数据。
    如果要删除某一字段的值可以用update将值改为NULL;

  3. 数据的修改
    update 表名 set 字段名1=值1,字段名2=值2,...[where 条件];
    条件控制着哪几行做修改,如果没有条件,则修改整张表格

DQL

DQL是数据查询语言,主要用来查询数据

  1. 基本查询

    1. 查询指定字段select 字段1,字段2,... from 表名;
    2. 查询所有字段select * from 表名; //*代表所有字段,但是不太直观
    3. 设置别名select 字段1[as 别名1],字段2 [as 别名2],... from 表名;
    4. 去除重复内容select [distinct] 字段列表 from 表名; 加上distinct即可
  2. 条件查询
    过滤不符合条件的数据

    1. select 字段列表 from 表名 where 字段1 条件 [and 字段2 条件...];
      条件:
    2. between 最小值 and 最大值 在最小值(包含)和最大值(包含)之间的结果
    3. in() 在只要满足in()中的其中一个条件的数据都会被打印出来
    4. like 占位符 占位符**_**代表一个字符(如__表示两个字符大小的数据), **%**代表任意个字符(如 %x 代表所有以x结尾的数据)
    5. is null,is not null 数据是null
    6. 其余常见>,<,>=,<=,=,!= 和 <>,and 和 &&,or 和 ||,not 和 !
  3. 聚合函数
    聚合函数都是作用于数据的某一列的(某一字段), 是某一列的运算(null值不参与所有聚合函数的运算)

    1. select 聚合函数(字段列表) from 表名;
    2. 常见聚合函数
  4. 分组查询
    select 聚合函数(字段列表) from 表名 [where 条件] group by 分组字段名(或聚合函数) [having 分组后再次过滤的条件];
    where 是分组前的过滤, group by 是分组, having 是分组之后的过滤
    where不能对集合函数进行判断,而having可以
    举个例子:
    select school,count(*) from student where age<16 group by school having count(student)>100;
    含义:查询所有年龄小于16的学生(select count(*) from student where age<16),并根据学校进行分组(group by school),统计各个学校的学生数量(count(*)),选出学生大于一百的学校(having count(student)>100)

  5. 排序查询

    1. 语法: select 字段列表 from 表名 order by 字段1 [desc],字段2 [desc];
    2. desc表示该查询结果为降序排序,如果不写,则默认是升序asc
    3. 如果有多个字段进行排序,当第一个字段相同时,再按照第二个字段的排序
  6. 分页查询
    分页查询的语法,不同的数据库有不同的实现,这里介绍mysql的limit
    语法: select 字段列表 from 表名 limit 起始值,查询数据数;
    注意: 起始值是以0作为开始,展示的数据是从(起始值+1)开始
    如第一页可以表示成:
    select age from user limit 0,5; //表示从第1条数据开始,展示后面的5条数据(包含第一条)
    例如
    select * from user limit 0,1; //表示展示这张表中第一行的的全部数据

  7. 编写顺序与执行顺序

    蓝色代表编写顺序,红色序号代表执行顺序

DCL

DCL是数据控制语言,主要作用是管理用户,控制访问权限

联合查询

联合查询(union查询),就是把多次查询的结果合并起来,形成一个新的查询结果集

1
2
3
select 字段列表 from 表a
union
select 字段列表 from 表b;

注意: union去重, union all不去重
对于联合查询的多张表的列数必须保持一致,字段类型也必须保持一致。