MySql | 基础知识 | 学习笔记

1. 数据库的基本知识

数据库顾名思义就是存储数据的仓库,而 MySql 则是数据库中关系数据库的一种,它主要是以二维表的结构来存储数据
image.png

2. 数据库的操作

数据库主要是利用 SQL 语句对数据库,表进行增删改查等操作。
SQL 通用语法

  1. 单行或者多行书写,以分号结束

image.png
没写分号时,mysql 会认为语句没有输入完整,则不会执行语句。
image.pngimage.png
只有写了分号时则可以正常执行语句

  1. 可以使用空格或者缩进来增强语句的可读性
  2. mysql数据库中,SQL语句不区分大小写,关键字建议使用大写
  3. 注释(注释不影响 SQL 语句的执行)
    1. 单行注释 # –
    2. 多行注释, /* */

SQL 语句的分类

  1. DDL 数据定义语言,用来定义数据库对象(数据库,表,字段)
  2. DML 数据操作语言,用来对数据表中的数据进行增删改
  3. DQL 数据查询语言,用来查询数据库中表的记录
  4. DCL 数据控制语言,用来创建数据库用户,控制数据库的访问权限

在执行数据库所有操作之前,先登录数据库

-- 该命令执行之后,输入登录密码即可登录数据库
mysql -u root -p

注意:以上命令主要是以数据库管理员的身份进行登录的(拥有所有数据库相关的操作权限),该命令也可以作为数据库安装和配置是否成功的检验方式之一,以下表示登录成功
image.png

DDL-数据库操作

  1. 查看数据库
-- 查看当前全部的数据库名
show databases;
  1. 创建数据库
-- 创建新的数据库
CREATE database [IF NOT EXISIT] 数据库名字 [DEFAULT CHARSET utf8mb4]

-- MySql8 以上的版本在创建时候的默认编码是'utf8mb4'

注意:在执行以上 SQL 语句的时候 数据库名字不需要加单引号 ’ ',否则会出现以下报错
image.png

  1. 选择数据库
-- 表示下面将会对数据库 admin 进行操作
use admin

出现以下这种情况之后就可以对数据库 admin 中进行表操作
image.png
注意:这里可以不用加分号 ;

  1. 删除数据库
-- 删除数据库
DROP database admin;

当出现下列情况之后证明数据库删除成功
image.png
执行前后对比
image.pngimage.png

DDL-表操作

  1. 查看一个当前数据库中的所有表名
SHOW tables;

注意:在执行以上语句之前需要选择相应执行的数据库名称,如下图
image.png

  1. 创建表结构
-- 创建表
CREATE TABLE 表名称(
  column_name1 datatype [COMMENT '注释'],
  column_name2 datatype
)[CHARACTER SET 编码格式];

column_name1 表示要创建的列名,datatype 表示存储数据的类型
注意:表名称不能加单引号 ’ ',不然如下图
image.png
如果是以下这张图则说明建表成功
image.png

  1. 查看表结构

查看表结构一共有三种命令

-- 查看当前表结构
DESCRIBE itjiange;

-- 和上面的命令类似(是上面命令的简写)
DESC itjiange;

image.png

-- 主要用于显示指定表的创建语句,包括表的结构、列定义、约束等详细信息。
SHOW CREATE TABLE itjiange;

image.png

  1. 删除表
-- 从数据库中删除表,在执行这条命令之前确保已经选中了该表所在的数据库
DROP TABLE 表名;

执行成功的结果如下
image.png

  1. 给数据库中的表添加一列
ALTER TABLE 表名称 add [column] 列名(字段名) 类型; 

执行alter table copy add column name varchar(10);
image.png

  1. 修改列的数据类型
ALTER TABLE 表名称 modify [column] 列名(字段名) 类型;

执行alter table copy modify column name char;,表示将copy表中的name字段的数据类型从原来的varchar(10)更改为现在的char
image.png

  1. 修改列的名称
ALTER TABLE 表名称 RENAME column 旧列名 to 新列名;

执行alter table copy rename column name to c_name;
image.png
注意:column不能省略

  1. 同时修改列名称和数据类型
ALTER TABLE 表名 CHANGE [column] 原字段名 新字段名 新数据类型;

执行alter table copy change column c_name name varchar(10);
image.png

  1. 删除列
ALTER TABLE 表名 DROP [column] 列名(字段名);

image.png

  1. 修改表名
RENAME TABLE 旧名称 TO 新名称;
-- 或者
ALTER TABLE 表名称 RENAME TO 新名称;

image.png

  1. 删除表
DROP TABLE [if existx] 表名;

此操作是将表删除了包括表中的数据

  1. 截断表
TRUNCATE TABLE 表名;

该操作是将表删除后(包括表中的数据)然后再新建一个结构相同的新表

  1. 创建和某表结构一样的新表
CREATE TABLE 表名 LIKE 要复制的表;

image.png-
注意:这里数据是不会被复制的,仅复制表结构

DQL-条件查询

  1. 条件过滤
SELECT * FROM 表名称 WHERE 列名(字段名) =;

执行select * from dept where dept_name = '开发部门';主要是为了查询dept表中,字段名dept_name等于开发部门的所有数据
image.png

SELECT * FROM 表名称 WHERE 列名(字段名) BETWEEN 数值1 AND 数值2;

该语句相当于 数值 1 < = 列名 ( 字段名 ) < = 数值 2 数值1<=列名(字段名)<=数值2 数值1<=列名(字段名)<=数值2 数值 2 < = 列名 ( 字段名 ) < = 数值 1 数值2<=列名(字段名)<=数值1 数值2<=列名(字段名)<=数值1

  1. 算数运算
-- 可以将表中查询出来的两个字段的结果进行相加运算
SELECT 字段1 + 字段2 FROM 表名称;

-- 修改的时候也可以进行算术运算
UPDATE 表名称 SET 字段1 + 字段2;
  1. NULL 值查询
SELECT * FROM 表名称 WHERE 字段名 IS NULL;

SELECT * FROM 表名称 WHERE 字段名 IS NOT NULL;

注意:这里的NULL无法通过等值操作进行查询,只能用isNULL表示空值,它并不是一个字符串型所以在 SQL 中不能加引号

  1. 模糊查询
-- LIKE 表示模糊查询,在这里“ _ ”表示只占一位的任意字符,“ % ” 表示占零位或多位字符
SELECT * FROM 表名称 WHERE 字段名 LIKE '_k%';
  1. 逻辑运算
-- 在这里的逻辑运算符可以是 <,=,<=
SELECT * FROM 表名称 WHERE 字段名 >=;

-- 在这里的 AND 表示且 & 的意思
SELECT * FROM 表名称 WHERE 字段名 IS NULL AND 字段名 <;

-- 在这里的 OR 表示或 | 的意思
SELECT * FROM 表名称 WHERE 字段名 IS NULL OR 字段名 <;
  1. 排序
-- 这里的 DESC 是按照字段名从大到小降序排列
SELECT * FROM 表名称 ORDER BY 字段名 DESC;

-- 这里的 ASC 是按照字段名从小到大升序排列
SELECT * FROM 表名称 ORDER BY 字段名 DESC;
  1. 分页查询
-- a 表示起始行,b 表示一页显示的数据的条数
SELECT * FROM 表名称 LIMIT a, b;

假设 n 表示第 n 页,则 a = ( n − 1 ) ∗ b a=(n-1)*b a=(n1)b

  1. 单行函数
-- CONCAT() 方法可以将字段1和字段2进行拼接
SELECT CONCAT(字段1, 字段2) FROM 表名称;
  • LENGTH(字段) 可以计算字段长度
  • UPPER(字段) 可以转换字段大写
  • LOWER(字段) 可以转换字段小写

DML-数据管理

  1. 插入数据
-- 写法一:指定列名
INSERT INTO 表名称 (列名1, 列名2, ...) VALUE(1,2, ...);

-- 写法二:不指定
INSERT INTO 表名称 VALUE(1,2, ...);

写法一中要插入的值的顺序和前面列名的顺序一致,值的类型也和前面列名对应的数据类型一致,值的个数和前面列名一致即可。而写法二中插入的值必须和表中所有字段相一致

  1. 更新数据
UPDATE 表名 SET 字段名运算 [WHERE ...]
  1. 删除数据
DELETE FROM 表名 [WHERE ...]

DCL-用户管理

  1. 查看当前登录的用户
SELECT user() [FROM dual] /*user() 是一个函数*/

dual是一个虚拟表,from dual语句主要作用是为了保持查询语句的完整性
该语句执行之后可得到当前登录数据库的用户的用户名
image.png

  1. 创建新用户
CREATE user 用户名@'IP 地址(例如:192.168.4.31)' IDENTIFIED BY '密码';

如果这里的用户地址是本机以外的地址(外1),则外1可以访问本机的数据库了。(前提是同一局域网下,并且还需关闭局域网防火墙

  1. 修改用户密码
-- 语句一
ALTER user 用户名@'IP 地址' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;

-- 语句二
ALTER user 用户名@'IP 地址' IDENTIFIED with mysql_native_password BY '';

将更改指定用户的密码
语句一中PASSWORD EXPIRE NEVER是设置密码永不过期。
语句二中with mysql_native_password是 MySQL 的默认身份验证插件,它使用经过加密的密码存储在用户表中。在最新的 MySQL 版本中,它提供了更好的安全性。

  1. 查询用户信息
SELECT user,host FROM mysql.user;

用户的信息都保存在 MySql 自带的数据库 mysql 的 user 表中,所以我们可以利用 DQL 查询语句进行表查询操作

  1. 用新用户登录
# 这里可以利用新创建的用户名进行登录
mysql -u 用户名 [-h 'IP 地址'] -p;

注意:新创建的用户只有登录数据库的权限并没有任何操作数据库的权限,所以我们还需要为新创建的用户授予数据库操作等方面的权利

  1. 为用户授权
  • 查询用户的权限
SHOW GRANTS FOR 用户名@'IP 地址';
  • 为用户授予权限
GRANT ALL ON *.* TO 用户名@'IP 地址';

这条语句主要用来给用户赋予所有数据库和所有表的所有操作权限,其中all表示所有权限,*.*中第一个*号表示所有数据库名称,第二个*号表示所有表名称
这里的ALL表示所有权限,可以替换为具体需要授予的权限,例如grant select, insert on * . * to '用户名'@'%'表示给用户赋予所有数据库好表的查询和增加的权限

在这里可授权的权限有四种:
① all(全部权限)② select(查询权限)③ delete(删除权限)④ insert(增加权限)

  • ‘%’ 表示任意 IP 地址都可以访问
# 这里也可以利用 DML 语句设置 IP 地址
UPDATE mysql.user SET host='%' WHERE user='用户名';
  • 刷新用户权限
flush privileges

执行该语句可以重新加载权限表,以确保对用户和权限的更改立即生效

  1. 删除用户
# 删除用户
DROP user 用户名@'IP 地址';

3. 数据库的备份

mysqldump [选项] 数据库名 [表名] > 地址

选项说明:

参数名缩写含义
–host-h主机地址
–port-P服务器端口号
–user-uMySQL 用户名
–pasword-pMySQL 密码
–databases-B指定要备份的数据库
–all-databases-A备份mysql服务器上的所有数据库
–no-data-d不备份数据,默认为备份数据
–comments-i是否有信息备注,默认为打开的,使用–skip-comments 关闭
  1. 只备份表结构
mysqldump -u root -p -d 数据库名 表名 > 存储地址 + 文件名称.sql --例如:e:\database\data.sql
  1. 备份多个数据库
mysqldump -u root -p -B 数据库1, 数据库2 > 存储地址 + 文件名称.sql
--例如:e:\database\data.sql
  1. 备份数据和结构
# 就是去掉 只备份表结构语句的 -d
mysqldump -u root -p 数据库名 表名 > 存储地址 + 文件名称.sql
  1. 将查询的结果集保存为文件
# 写法一
mysql -u root -p -e "select * from 数据库.表名" > 存储地址 + 文件名称.sql

# 写法二
mysql -u root -p -e "select * from 表名" 数据库名 > 存储地址 + 文件名称.sql
  1. 通过备份好的文件还原数据
# 方式一,在登录数据库之前即可操作
mysql -u root -p 新数据库名 < 存储地址 + 文件名称.sql

# 方式二,在登录数据库后选中数据库,然后将数据还原到所选中的数据库中
source 存储地址 + 文件名称.sql;

4. 细节

细节一

整形数据加引号后mysql可以自己把字符串型数据转换成整型数据,例如:

SELECT * FROM table_name WHERE name_int = '20';

这样也是可以正常查询出结果的

细节二

当表名或字段名和关键字冲突时可以用符号 `` 将表名字段名进行包裹,如果查询的字段名是
select,表是table时,可以写成select和table,例如:

SELECT `select` FROM `table`

注意:在创建表的时候,字段名或者表名最好避免使用关键字

自己浅浅整理的学习笔记,如果有问题还请多多指出,感谢诸位大佬
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
CSDN是一个技术交流平台,里面有许多关于各种编程语言和数据库的学习资料和笔记。而MySQL是其中一种常用的关系型数据库管理系统,也是开放源代码软件之一。 在CSND上,MySQL笔记是指关于MySQL数据库的学习和使用的笔记和教程。这些笔记包含了MySQL数据库的基本概念、安装配置、SQL语句的使用、数据表的设计和管理、索引使用、数据备份和恢复等方面的知识。学习MySQL笔记可以帮助开发者更好地理解和应用MySQL数据库。 MySQL笔记主要可以分为以下几个方面来介绍和学习: 1. 数据库基础知识学习数据库的基本概念和原理,了解关系型数据库的特点以及MySQL的特点。 2. 安装和配置:学习如何在不同操作系统上安装和配置MySQL数据库,包括设置用户名、密码和端口等。 3. SQL语句的使用:学习SQL语句的基本语法和常用命令,包括查询、插入、更新、删除等操作。 4. 数据表的设计和管理:学习如何设计和创建数据表,包括选择适当的数据类型、设置主键和外键等。 5. 索引的使用:学习如何创建和使用索引来提高查询效率和数据访问速度。 6. 数据备份和恢复:学习如何进行MySQL数据库的数据备份和恢复,包括全量备份和增量备份等。 通过学习MySQL笔记,开发者可以掌握MySQL数据库的基本操作和高级功能,提高数据管理和查询的效率。此外,还可以了解MySQL数据库的优化技巧和性能调优方法,提升数据库的性能和稳定性。 总之,通过CSDN上的MySQL笔记,开发者可以系统地学习和掌握MySQL数据库的相关知识,从而更好地应用于实际的项目开发中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

傻笑不累

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

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

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

打赏作者

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

抵扣说明:

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

余额充值