MySQL学习笔记

       本篇文章主要是本人对学习情况的一个总结,不足之处,欢迎补充😊。

一.MySQL概述

1.1.数据库相关概念

        数据库(DataBase):存放数据的容器,主要存储在磁盘当中。

        数据库管理系统(DataBase Management System):对数据库进行操作的软件。

        SQL(Structured Query guage):结构化查询语言。操作关系型数据库的语言,定义了一套操作关系型数据库的统一标准。

1.2.MySQL数据模型

        1.2.1.关系型数据库

         MySQL是关系型数据库,个人觉得关系型数据库重点注意关系二字,关系指的是不同二维表(有行有列,Excel表就是二维表)之间存在这关系

        例如:学生表和课程表就存在着关系,一个学生可以选择多门课程,同时一门课程也可以被多个学生选择,这种关系叫做多对多关系,当然关系型数据库中还有一对多多对一关系。

                                        学生-课程 信息表

        1.2.2.数据模型

        

        通过MySQL客户端连接DBMS,然后通过DBMS操作数据库。

        使用SQL语句对数据库中的数据库,表,字段进行操作。

        一个数据库服务器中可以包含多个数据库,一个数据库中可以包含多张表,一个数据表中可以包含多个字段。

二.SQL(Structured Query Language)

2.1.SQL的分类

        DDL:Data Definition Language,数据库定义语言,主要是定义数据库,表,字段。

        DML:Data Manipulation Language,数据库操作语言,对数据库表中的数据进行增删改。

        DQL:Data Query Language,数据库查询语言,对数据库表中的数据进行查询。

        DCL:Data Control Language,数据库控制语言,用来创建数据库角色并分配权限。

2.2.DDL

        Data Definition Language,数据库定义语言,主要是定义数据库,表,字段。

        2.2.1.数据库操作

        (1)查询所有数据库

show databases;

 

        目前展示的是MySQL中自带的数据库,主要保存了MySQL的基本信息。

        (2)查询当前数据库

select database();

        展示目前所能操作的数据库,目前没有选择任何数据库。

        (3)创建数据库

create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];

        [ ]内的代表可有可无。 

        示例:

create database niu;

        这只是最简单的创建方式,同时,也可以指定一些其他的信息。

        (a)当我们再次创建同名数据库的时候:

create database niu;

        很明显,报错了。

        当我们加上if not exists

create database if not exists niu;

        数据库创建成功了,但是数据库还是原来的niu。

        if not exists 代表的是当不存在niu数据库的时候才会创建。

        (b)而default charset 字符集 代表的是,我们可以指定具体的字符集。

        (c)collate 指定字符集下不同字符的比较规则,包括对大小写的敏感程度,以及转化成二进制后进行比较等 。

        (4)删除数据库

drop database if exists niu;

         if exists 和 if not exists 用法类似,主要是有无not,根据语义可以推断出具体使用哪一种。

        (5)切换数据库

use 数据库名;

        2.2.2.表操作 

                2.2.2.1.查询创建

        (1)查询当前数据库的所有表

show tables;

        注意:执行此项操作之前,一定要切换到需要操作的数据库。

        (2)查看指定表结构

use sys; #切换到 sys数据库
show tables; #展示所有表
desc session; #查看session表结构

        (3)查询指定表的建表语句

show create table session; #session是一个数据库名

        (4)创建表结构

create table tb_user(
id int comment '编号',
name varchar(50) comment '姓名',
age int comment '年龄',
gender varchar(1) comment '性别'
) comment '用户表';

#create table 表名(
字段名 字段类型 注释
)注释
                 2.2.2.2.表字段的数据类型

        (1)数值类型

类型大小描述
TINYINT1byte
SMALLINT2byte
MEDIUMINT3byte
INT/INTEGER4byte
BIGINT8byte
FLOAT8byte
DOUBLE8byte
DECIMAL

        根据数据类型的实际情况进行选择,年龄一般不会太大,因此,选择TINYINT是最正确的选择,也可以加上unsigned扩大TINYINT的容量。

        (2)字符串类型

类型大小描述
CHAR0-255byte定长字符串
VARCHAR0-65535byte变长字符串

        同样,也是根据具体情况具体进行选择。

        (3)日期类型

类型大小范围格式描述
DATE31000-01-01 至  9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至  838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME8

1000-01-01 00:00:00 至

9999-12-31 23:59:59

YYYY-MM-DD

HH:MM:SS

混合日期和时间值
TIMESTAMP4

1970-01-01 00:00:01 至

2038-01-19 03:14:07

YYYY-MM-DD

HH:MM:SS

混合日期和时间值,时间戳
                2.2.2.3.修改表字段信息

        (1)添加字段

alter table 表名 add 字段名 类型 comment 注释 [约束]

         示例:

alter table tb_user add QQ varchar(10) comment 'QQ账号';

        (2)修改数据类型

alter table 表名 modify 字段名 新数据类型

         示例:

alter table tb_user modify QQ varchar(11);

        (3)修改字段名和数据类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

        示例:

 alter table tb_user change QQ weixin varchar(30) comment '微信';

        (4)删除字段

alter tbale 表名 drop 字段名;

        示例:

 alter table tb_user drop weixin;

        (5)修改表名

alter table 表名 rename to 新表名

        示例:

 alter table tb_user rename to tb__user;
                 2.2.2.4.删除表操作

        (1)删除表

drop table [if exists] 表名;

         示例:

drop table tb__user;

        (2)删除的同时又重新创建

        此项操作用于快速清空表中的数据,索引等。

truncate table 表名;

        示例:

truncate table tb_user;

 2.3.DML

        2.3.1.添加数据

        (1)给指定字段添加数据

insert into 表名(字段名1,字段名2) values(值1,值2);

        示例:

        添加一条

insert into tb_user values(1,'牛犇',20,'男');

        批量添加

insert into tb_user values(1,'牛犇',20,'男'),(2,'牛永成',55,'男');

         2.3.2.修改数据

update 表名 set 字段名 = 值 [where 条件];

        示例: 

update tb_user set age = 18,gender = '女' where name = '牛犇';

        2.3.3.删除数据 

delect from 表名[where 条件];

        示例:

delete from tb_user where name = '牛犇';

        如果不指定条件,那么就删除所有数据。同理,update也是。 

2.4.DQL

         数据库查询语言,查询的时间是远远高于增删改的,因此,查询也是SQL优化的重要部分。

         2.4.1基本语法

        一条查询SQL的具体结构

select
from
where
group by
having
order by
limit

        真正的执行顺序

from
where
group by
having
select
order by
limit

         2.4.2.基础查询

        (1)查询多个字段

select * from 表名
select 字段 from 表名

        (2)字段设置别名

select 字段名 as 别名 from 表名;

         别名会展示出来,as可以省略。

        (3)去除重复记录

select distinct gender from emp;

        2.4.3.条件查询

        (1)语法

select 字段 from 表名 where 条件;

         (2)条件

比较运算符

功能
>

大于

>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
betweent...and在某个范围之间(小-大)
in(...)在in之后的列表中的值,多选一
like 占位符一般用于模糊匹配
is null

是null

逻辑运算符功能
and 或 &&并且(多个条件同时成立)
or 或 ||或者(多个条件成立一个即可)
not 或!

        2.4.3.聚合函数

        将一列数据看作一个整体,进行计算

        (1)count()

select count(*) from 表名;

         count(*)获取有多少行数据,查询效率是最高的。

        (2)max()

select max(列名) from 表名;

        max()对某一列求最大值。

        (3)min()

select min(列名) from 表名;

        min()对某一列求最小值。 

        (4)avg()

select avg(列名) from 表名;

        avg()对某一列求平均值。 

select sum(列名) from 表名;

        sum()对某一列进行求和。

        注意:NULL值不参与任何聚合函数的运算。 

        2.4.4.分组查询

                跟在group by 后面的语句。一般搭配聚合函数使用

select gender,count(gender) from emp group by gender;

                

        group by 前面是where,后面是having ,where 是对分组前进行过滤,having是对分组后的信息进一步过滤.

        示例:查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3工作地址

 select workaddress, count(*) as address_count from emp where age < 45 group by workaddress having count(workaddress) >= 3;

        2.4.5.排序查询 

        排序字段通过order by字段来指定,需要排序的字段以及排序的方式。

        (1)排序方式

        默认为asc (升序),也可以指定为desc(降序),当需要指定多个排序字段时,现根据第一个字段进行排序,如果相同,就根据第二个字段进行排序。

        案例:根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序

 select * from emp order by age asc,entrydate desc;

 

        2.4.6.分页查询

        (1)语法

select 字段 from 表名 起始索引,查询记录数;

        注意事项:起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数;

                          分页查询是数据库的方言,不同的数据库有不同的实现,mysql中是limit;

                          如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10;

        案例:查询第二页的数据,每页展示10条数据

select * from emp limit 10,10;

        

2.5.DCL 

        DCL是数据库控制语言,只要用来管理数据库成员,以及数据库的访问权限。

        2.5.1.管理用户

        (1)查询用户

select * from mysql.user;

           

        数据主要部分host代表用户可以访问的主机,如果为localhost,代表只能访问当前主机,是不可以远程访问其他主机的。user代表的是访问该数据库的用户名。在mysql中通过host和user来标识一个用户。

        (2)创建用户

create user '用户名'@'主机名' identified by '密码';

        (3)修改用户密码

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;

        (4)删除用户

DROP USER '用户名'@'主机名' ;

 三.函数

 

 

 

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值