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 自学笔记
图片[2]-Mysql 自学笔记

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 删除表

清空表数据

删除表

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%';

查看表结构

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 运算符

5.1 算数运算符

图片[3]-Mysql 自学笔记

5.2 比较运算符

图片[4]-Mysql 自学笔记
图片[5]-Mysql 自学笔记
图片[6]-Mysql 自学笔记

5.3 逻辑运算符

图片[7]-Mysql 自学笔记
图片[8]-Mysql 自学笔记

5.4 运算符优先级

图片[9]-Mysql 自学笔记

5.5 函数

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

5.5.1 单行函数

数值函数

图片[10]-Mysql 自学笔记

字符串函数

图片[11]-Mysql 自学笔记

时间函数

图片[12]-Mysql 自学笔记
图片[13]-Mysql 自学笔记
图片[14]-Mysql 自学笔记

流程控制函数

图片[15]-Mysql 自学笔记
图片[16]-Mysql 自学笔记

5.5.2 多行函数(聚合函数)

图片[17]-Mysql 自学笔记

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
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容