概念
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位。
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 算数运算符
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 比较运算符
5.3 逻辑运算符
5.4 运算符优先级
5.5 函数
MySQL 中的函数用于执行特定的操作并返回结果。函数通常可以在 SQL 查询中作为表达式的一部分使用。内置函数分为单行函数和多行函数。
5.5.1 单行函数
数值函数
字符串函数
时间函数
流程控制函数
5.5.2 多行函数(聚合函数)
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 |
+----------+----------+
- 最新
- 最热
只看作者