【知识笔记】Mysql 自学笔记

概念

MySQL是一款开源的关系型数据库管理系统,以其高性能、可靠性和易用性而广泛应用于互联网项目和应用程序中。它支持多用户同时操作,提供强大的查询功能和数据安全性,特别适合处理大规模数据的存储和管理。作为LAMP(Linux、Apache、MySQL、PHP/Perl/Python)架构的核心组件之一,MySQL常被用于网站和Web应用的后台数据库。

数据库分类

  • 关系型数据库(SQL)
    • Mysql Oracle SqlServer DB2 SQLite
    • 通过表和表,行和行之间的关系进行数据的存储
  • 非关系型数据库(NoSQL)
    • Redis MongDB
    • 非关系型数据库,对象存储,通过对象的自身属性来决定

DBMS(数据库管理系统)

  • DBMS(Database Management System,数据库管理系统)是用于定义、创建、管理和操纵数据库的软件系统。它允许用户与数据库进行交互,帮助管理数据的存储、修改、查询和删除操作。DBMS通过提供用户友好的接口,使得数据能够被高效、可靠地存储和管理,保证数据的一致性和安全性。
  • 数据库管理系统,例如:Navicat、PhpMyadmin等

基础知识

表中的列类型

数值型

  • tinyint 1个字节
  • smallint 2个字节
  • int 四个字节
    • 常用的
  • big 8个字节
  • float 浮点数 4个字节
  • double 浮点数 8个字节
  • decimal 字符串形式的浮点数
    • 金融计算一般用这个

字符串

  • char 0-255长度
  • varchar 可变字符串 0-65535
    • 常用的
  • tinytext 微型文本 2^8-1
  • text 文本串 2^16-1

时间日期

  • date YYYY-MM-DD 日期
  • time HH:MM:SS 时间
  • datetime YYYY-MM-DD HH:MM:SS
    • 最常用的日期时间格式
  • timestamp 时间戳

null

  • 没有值,未知,不要使用NULL进行运算,结果为NULL

表中的字段类型

Unsigned

  • 无符号整数
  • 该列不能声明为负数

zerofill

  • 使用0来填充,不足的位数用0来填充

自增

  • 通常理解为自增,自动在上一条记录的基础上+1
  • 通常用来设计唯一的主键,必须是整数类型

非空(int not null)

  • 假设设置为not null,如果不赋值就会报错!
  • 如果不填写值默认就是null

默认

  • 设置默认的值

基本命令

1 操作数据库

  • 新建一个数据库
create database <database name>;
  • 删除数据库
drop database <database name>;
  • 查看所有数据库
show databases;
  • 切换使用数据库
use <databases>;
  • 查看当前使用的数据库
SELECT DATABASE();
  • 查看某个数据库的信息
show create database <database>;
  • 查看指定数据库所有的表
show tables from <database>;
  • 显示当前数据库中,某张表的结构
desc <table name>;
  • 直接删除数据库
drop database <database>;
  • 判断是否有数据库后再进行删除
drop database if exists <database>;

2 操作表

2.1 创建表

在MySQL中创建表的基本语法如下:

CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    ...
);

这里是一个具体的创建表的实例:

CREATE TABLE employees (
    id INT NOT NULL AUTO_INCREMENT,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    phone_number VARCHAR(15),
    hire_date DATE,
    salary DECIMAL(10, 2),
    department_id INT,
    PRIMARY KEY (id),
    FOREIGN KEY (department_id) REFERENCES departments(id)
);

在这个例子中,我们创建了一个名为 employees 的表,它包含以下列:

department_id:整型,作为外键,引用 departments 表的 id 字段。

id:整型,不允许为空,自动递增,作为主键。

first_name 和 last_name:字符串类型,最大长度为50,不允许为空。

email:字符串类型,最大长度为100。

phone_number:字符串类型,最大长度为15。

hire_date:日期类型。

salary:十进制类型,最多10位数字,小数点后2位。

图片[1] - 【知识笔记】Mysql 自学笔记 - 极核GetShell
图片[2] - 【知识笔记】Mysql 自学笔记 - 极核GetShell

2.2 修改表

修改表,在表里添加一列

alter table <table name> add <column name> <字段类型>;

修改表中的列名

alter table <table name> change <old column name> <new column name> <类型>;

修改表中字段的类型

alter table <table name> modify <column name> <字段类型>;

删除表中的一列

alter table <table name> drop <column name>;

修改表名称

alter table <old table name> rename <new table nmae>;

2.3 删除表

清空表数据

truncate table <table name>;

删除表

drop table <table_name>;

3 操作数据

3.1 插入数据

插入单条数据

insert into <table name> values(
<value>,...,<value>
);
mysql> insert into User values(
    -> 3,'guest','guest'
    -> );

同时插入多条数据

insert into <table name>(<column name1>,<column name2>,...) values (
<column name1>,<column name2>,...,
<column name1>,<column name2>,...
);
mysql> insert into User(id,username,password) values
    -> (1,'sibei','sibei'),
    -> (2,'sinan','sinan');

3.2 修改数据

修改表中的的所有数据

update <table name> set <column name1>='<value>',<column name2>='<value>';
mysql> update User
    -> set username='sibei',password='sibei';

修改表中的的所有数据,另外加上条件判断

update <table name> set <column name1>='<value>',<column name2>='<value>' where <条件语句>;
mysql> update User
    -> set username='sinan',password='sinan'
    -> where username='sibei';
mysql> update User
    -> set username='sibei',password='sinan'
    -> where username like 'si%' and password = 'sibei';

3.3 删除数据

删除表中的所有数据

delete from <table name>;

删除符合条件的行内中的数据

delete from <table name> <条件语句>;
delete from User where id = 2;

4 查询操作

普通查询操作

//算数
select 1+2;

//查询数据库版本
select version();

指定表进行查询数据

select * from <table name>;
select <column name> from <table name>;

指定表进行查询数据,并且加一些判断条件进行过滤

select <column name> from <table name> where <判断条件>;
select * from User where id = 1;
select * from User where id = 1;
select * from User where username like 'si%';

查看表结构

desc <table name>;

5 运算符

5.1 算数运算符

图片[3] - 【知识笔记】Mysql 自学笔记 - 极核GetShell
mysql> select 100,100+1,100-1,3*5,100/0,5 div 3;

+-----+-------+-------+-----+-------+---------+
| 100 | 100+1 | 100-1 | 3*5 | 100/0 | 5 div 3 |
+-----+-------+-------+-----+-------+---------+
| 100 |   101 |    99 |  15 | NULL  |       1 |
+-----+-------+-------+-----+-------+---------+

5.2 比较运算符

图片[4] - 【知识笔记】Mysql 自学笔记 - 极核GetShell
图片[5] - 【知识笔记】Mysql 自学笔记 - 极核GetShell
图片[6] - 【知识笔记】Mysql 自学笔记 - 极核GetShell

5.3 逻辑运算符

图片[7] - 【知识笔记】Mysql 自学笔记 - 极核GetShell
图片[8] - 【知识笔记】Mysql 自学笔记 - 极核GetShell

5.4 运算符优先级

图片[9] - 【知识笔记】Mysql 自学笔记 - 极核GetShell

5.5 函数

MySQL 中的函数用于执行特定的操作并返回结果。函数通常可以在 SQL 查询中作为表达式的一部分使用。内置函数分为单行函数和多行函数

5.5.1 单行函数

数值函数

图片[10] - 【知识笔记】Mysql 自学笔记 - 极核GetShell

字符串函数

图片[11] - 【知识笔记】Mysql 自学笔记 - 极核GetShell

时间函数

图片[12] - 【知识笔记】Mysql 自学笔记 - 极核GetShell
图片[13] - 【知识笔记】Mysql 自学笔记 - 极核GetShell
图片[14] - 【知识笔记】Mysql 自学笔记 - 极核GetShell

流程控制函数

Pasted image 20240703164431
Pasted image 20240703165617

5.5.2 多行函数(聚合函数)

图片[17] - 【知识笔记】Mysql 自学笔记 - 极核GetShell

5.6 高级查询

分组查询

SELECT 分组列,分组列,聚合函数
FROM 表名
[WHERE 条件]
[GROUP BY 分组列,分组列 ... HAVING 分组后条件];

# having是分组后的条件 where是分组前的条件
# having只能在group by后面出现 where 随时可以出现
# having比较一般(99.999)都是聚合函数  where可以是任何参数的比较
# having可以使用select后面查询到的列的名称 || having在分组之后执行! 查询结果已经有了! 我们可以进行复用 
# 而where不能复用select列 where早于select列名

排序查询

SELECT 列,列,函数
FROM 表名
[WHERE 条件]
[ORDER BY 排序列 ASC | DESC ,排序列 ASC | DESC ...];

分页查询

SELECT 列,列,函数
FROM 表名
[WHERE 条件]
[LIMIT [位置偏移量,]行数];

5.7 多表查询

多表查询的重点是将多表数据利用多表查询语法合并单张虚拟表,按照多表合并的方向,可以分为:水平合并语法垂直合并语法

UNION联合查询

联合查询需要合并的结果集之间的列数和对应列的数据类型相同

select <column name1>,<column name2> from <table name> union select <column name1>,<column name2> from <table name>
mysql> select * from Address union select username,password from User;
+----------+----------+
| username | Address  |
+----------+----------+
| sibei    | 翻斗花园 |
| sibei    | sibei    |
| sinan    | sinan    |
+----------+----------+
THE END
想说的话 1  QQ & 微信交流群: 点击查看加群方式
2  本站运营不易,以真心❤️换真心💕,如果帮助到你,可以 推荐给朋友 或者 开通金贝会员 支持一下本站!
3  请不要进行任何非授权的网络攻击,如果造成任何损失均由使用者本人负责,与本站和原作者无关!
点赞84 分享
茶谈区 共5条

请登录后发表评论