MySQL基础 - 学习笔记

一、什么是数据库

用于存储和管理数据的仓库。

数据库有许多版本,MySQL是其中之一它是一款开源的、免费的。小型的数据库。MySQL 6.x开始要收费。

SQLLite数据库常用于嵌入式系统、手机应用和浏览器中

特点

一个文件系统,持久化存储数据,且方便管理数据。使用统一的SQL方法操作数据库。

二、SQL基本概念和通用语法

SQL:结构化查询语言

国际化标准组织置顶的一种定义的操作所有关系型数据库的规则,每一种数据库的操作方式主体上相同,但存在不同之处,这些不同之处成为每种数据库的方言

SQL通用语法

1、SQL语句 可单行或多行书写,以分号;结尾

2、使用空格 ,和缩进Tab来增强可读性

3、MySQL数据库的SQL语句不区分大小写

4、3种注释方式:

  • 单行注释: -- 注释内容# 注释内容(MySQL特有),注意--#之后均有一个空格
  • 多行注释: /* 注释内容 */

基本数据类型

数据类型实例说明
整数类型tinyInt很小的整数
smallint小的整数
mediumint中等大小整数
int(integer)(常用)普通大小整数
浮点数类型float单精度浮点数
double(常用)双精度浮点数
decimal(m.d)压缩严格的定点数
日期类型yearYYYY 1901~2155
timeHH:MM:SS -838:59:59 ~ 838:59:59
dateYYYY-MM-DD 1000-01-01-9999-12 ~ 3
datetimeYYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12~31 23:59:59
timestampYYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07UTC
字符串char(M)M为0~255的整数
varchar(M)M为0~65535之间的整数
BLOBtinyblob允许长度为0~255字节
blob允许长度为0~65535字节
mediumblob允许长度为0~167772150字节
longblob允许长度为0~4294967295字节
CLOBtinytext允许长度为0~255字节
text允许长度为0~65535字节
mediumtext允许长度为0~167772150字节
longtext允许长度为0~4294967295字节
二进制varbinary(M)允许长度0~M个字节的变长字节
binary(M)允许长度0~M个字节的定长字节

三、登录MySQL

如果没有启动mysql,那么首先在打开我的电脑,按照以下顺序手动启动mysql,否则会报错无法连接到mysql,因为mysql没有启动
在这里插入图片描述

然后以管理员身份运行命令提示符

–>转到MySQL文件下的bin目录

–>输入 mysql -u root -p

–>输入自己设置的密码

–>登录成功

在这里插入图片描述

退出数据库登录: exit; 记得去启动数据库的地方手动关闭数据库

四、数据库的增删查改(CRUD)操作

写在前面,以下四个MySQL的系统默认数据库不要去乱动

在这里插入图片描述

语言分类

1、 DDL: 操作数据库、表

关键字:create、drop、alter等

2、 DML: 增删改表中的数据

关键字:insert、delete、update等

3、 DQL: 查询表中数据

关键字:select、where等

4、 DCL: 定义数据库的访问权限和安全级别、创建用户

关键字:GRANT、REVOKE等

DDL:操作数据库、表

1、操作数据库:CRUD

1.1、C(Create): 创建

操作语句
创建数据库create database databaseName;
创建数据库时判断待创建的数据库是否存在,若不存在则创建create database if not exists databaseName;
创建数据库时设置其使用的字符集create databases databaseName character set xxx;

综合语句:创建数据库时可以根据需要先判断是否存在再创建并设置其使用的字符集 -->
create databases if not exists databasesName character set xxx

示例:

在这里插入图片描述

1.2、R(Retrieve): 查询

操作语句
查询所有数据库名称show databases;(注意语句最后的英文分号!)
查看某个数据库的字符集: 查询某个数据库的创建语句show create databases databaseName;

1.3、U(Update): 修改

操作语句
修改数据库的字符集alter databases databaseName character set 字符集名称;

1.4、D(Delete): 删库跑路

操作语句
删除数据库drop database databaseName;
先判断删除drop database if exists databaseName;

1.5、使用数据库

操作语句
查询当前正在使用的数据库名称select database();
使用某个数据库use databaseName;
2、操作表

2.1、C(Create): 创建表

创建一个变量的格式为: 变量名 数据类型

操作语句
创建表create table 表名(列名1 数据类型1, 列名2 数据类型2, ..., 列名n 数据类型n);
复制表create table 复制出的表 like 被复制的表;
创建数据举例int: age int(注意顺序)
double: score double(5,2)(需要用括号设限制,括号内数字意思是,一共5位小数,小数点后保留2位)
date: 2022-11-13 date
datetime: 2022-11-13 16:48:52 datetime
timestamp(时间戳): yyyy-mm-dd hh:mm:ss timestamp,若对某个部分不赋值或者赋值为null,则会自动使用当前系统时间
varchar(字符串类型): name varchar(20),括号内为该数据可容纳最大字符数

示例:

在这里插入图片描述

2.2、R(Retrieve): 查询表

操作语句
查询某个数据中所有的表的名称show tables;
查询某个表的结构desc 表名;

示例:

在这里插入图片描述

2.3、D(Delete): 删除表

操作语句
删除表drop table tableName;
删除之前判断是否存在drop table if exists tableName;

2.4、U(Update): 修改表

操作语句
修改表名alter table nameNow rename to newName;
修改标的字符集alter table tableName character set utf8;
添加一列alter table tableName add 列名 数据类型
修改列名称举例:alter table tableName change 列名 新列名 新数据类型;
修改列数据类型alter table tableName modify 列名 新数据类型;
删除列alter table tableName drop 列名;

DML:增删改表中数据

1、添加数据 - insert

1.1、语法: insert into tableName(列名1, 列名2, ...列名n) values(值1, 值2, ...值n);

1.2、注意事项:

  • 列名和值要一一对应
  • 如果 tableName 后不加列名,那么会默认给所有列名添加值,即: insert into tableName values(值1, 值2, ...值n);
  • 除了数字类型, 其他类型需要使用引号(``或者"")引起来
2、删除数据 - delete

2.1、语法: delete from tableName [where 条件] --> delete from Users where userId=5;

2.2、如果不加[where]条件,则会删除表中全部记录 --> delete from Users --> 效率低

2.3、先删除表,再创建一个一模一样的空表: TRUNCATE TABLE tableName --> 效率高

3、修改数据 - update

3.1、语法: update tableName set 列名1 = 值1, 列名2 = 值2, ... [where条件]

eg.update Users set identify="VIP", discount=0.6 where id=5; --> 在 表Users 中修改 id=5 的数据的 identify 为 “VIP”, discount 为 0.6

3.2、注意事项: 若不加[where条件],那么会删除表中全部记录

DQL、查询表中的记录

语法

语句说明
select字段列表
from表名列表
where条件列表
group by分组列表
having分组之后的条件
order by排序
limit分页限定

基础查询

  • 查询语法: select 列名 from tableName;
  • 去除重复的结果集: 使用distinct(根据字符去除) --> select distinct 列名 from tableName;
  • 起别名: 列名操作 as 别名 或者 列名 别名 --> select name, math s数学, chinsese as 语文 from subjects;
  • 多个字段查询: 各字段之间用,分隔,如果查询所有字段,则用*代替字段列表
1、排序查询

1.1、语法: order by 子句 --> order by 排序字段1 排序方式1, 排序字段2, 排序方式2...;

2.2、排序方式:

  • ASC: 升序排列,默认
  • DESC: 降序, 需要手动设置

eg.select * from Users order by money DESC, stickness ASC;

3.3、注意:

设置多个排序条件时,当前面的排序规则相同,才会依次调用后面的排序规则

2、聚合函数

解释: 将一列数据作为一个整体,进行纵向的计算

2.1、MySQL中自带的5个聚合函数

聚合函数功能语法
count计算个数select count(列名) from tableName;
max计算最大值类比count
min计算最小值类比count
sum计算和类比count
avg计算平均值类比count

2.2、聚合函数计算时会排除NULL值,解决方法(以count为例):

  • IFNULL函数: select count(ifnull(rent, 0)) from Users; --> 若rent为null,则将其替换为0
  • 选择不包含null的列进行计算
  • *:只要一列数据有一个不为null,那么就算一列有效数据 , count(*)
  • 主键: count(id)
3、分组查询

3.1、语法: group by 分组字段; --> select identify, sum(rent), count(id) from group where rent>500 by identify;

3.2、注意:

  • 分组之后查询的字段: 分组字段、聚合函数
  • where 和 having 的区别: where 在分组前进行限定 - 若不满足条件则不参与分组; having 在分组之后进行限定 - 若不满足结果则不会被查询出; where 后不可以跟聚合函数,但 having 可以。
4、分页查询

4.1、语法:limit 开始的索引, 每页查询的记录条数; --> select * from Users limit 0,5;

开始的索引 =(当前页码-1) * 每页显示的条数

4.2、注意: limit是一个MySQL方言

5、条件查询

5.1、where后跟子句

5.2、运算符

  • > 、< 、<= 、>= 、= 、<>(不等于)
  • between …and… 取一个闭合区间
  • in 集合 --> in (1,2,3,)
  • like - 模糊查询
  • is NULL 判断值为null只能用is
  • and 或者 &&
  • or 或者 ||
  • not 或者 !

5.3、like - 模糊查询

根据某类数据中的某个特征,在表中进行查询,得到含有该特征的所有值,除了特征需要给出外,其他部分(特征值的前或后)都用占位符 --> _代表一个字符,%代表任意多个字符

eg1.select * from Users where name like '路%' --> 查询 name 数据中第一个字符为 路 的人,%不管字符数,就是说 路 字后面的字符数任意,

eg2、select * from Users where name like "_鸣%" --> 查询 name 数据中第二个字符为 鸣 的人,一个_代表一个字符的占位符

eg3、select * from Users where name like '___' --> 查询 name 数据中为三个字符的人

数据库的约束

多表之间的关系

范式 - 设计表时设置一些规则和规范,使表的设计更加合理

数据库的备份和还原

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六时二一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值