MySQL学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL学习笔记

数据库:

什么是数据库?

数据库提供一个存储空间用于存放各种数据(其中包括整型、文本、小数、日期等),我们可以将数据库看作是一个存储数据的容器。


数据管理管理系统:
专门用于创建和管理数据库的一套软件。介于操作系统和编程应用程序项目之间。数据库管理系统
  • Access 微软出品, 按键精灵、易语言
  • Sqlite 嵌入式数据 Android 51仿真、 C++(QT)
  • MsSql SqlServer 微软出品 Asp、Asp.net(C#)

1554856070698

  • MySQL 最早是一个大学生组织开发。 而后被德国的AB公司收购! 目前被Oracle收购!
  • 免费开源
  • 6.x之后进行商业收费!
    MySQL5.0 是myisam引擎
    MySQL5.5.5.65.7 是Innodb引擎
  • informax IBM 银行
  • Oracle 甲骨文 大型数据库:
  • 地位:
  • 全球第一大数据库厂商
  • 第二大软件供应商
  • Db2

RDBMS:

关系型数据库

Mysql

Oracle

SQlserver

非关系型数据库

nosql: not only sql 应用于云计算/大数据方面

关系型数据库和非关系型数据库的区别?

1 看 是否 是 二维表!

  • 有无元组
  • 行和列

下载数据库

安装数据库


1命令:

  1. 查询所有数据库
show  databases;

选择数据库

use 0315;

查询该数据库内 所有的表

show tables

Sql语言划分:

DDL 数据定义语言 Data Definition Language

关键字 描述
create 创建
alter 修改
drop 删除

DCL 数据控制语言 Data Control Language

关键字 描述
grant 赋予权限
revoke 撤销权限

DML 数据操纵语言 Data Manipulation Language

关键字 描述
insert 插入表数据
update 更新表数据
delete[荐 ]/ truncate 删除表数据

DQL 数据查询语言 Data Query Language

关键字 描述
select 查询

TCL 事务控制语言 Transaction Control Language

关键字 描述
begin transaction/savePoint 开启事务/保存点
rollback 回滚
commit 提交
数据库 、 表、 数据 有什么区别?

现有数据库、其次有表、再其次有数据记录


传统类型项目大致有:

缩写 中文描述
ERP 企业资源计划
CRM 客户关系管理
OA 办公自动化系统
MAIL 邮箱系统
BOS 商务操作系统
EHR 人力资源管理

权限管理系统最少要有五张表:

表一 表二 表三 表四 表五
用户 权限 角色 用户_角色 权限_角色

约束信息:

约束名称 中文名称 描述
主键 primary key 表里的唯一标识、自动递增 auto_increment
外键 foreign key 表与表之间关联关系
非空 not null 不许为空
唯一 unique 数据唯一性
检查 check
默认/缺省 defaulte 默认值

1.DDL 数据定义语言。
-- 删除数据库  如果存在则删除 否则跳过!
drop database if  EXISTS `crm01`;

create database  crm01;

use crm01;
-- 删除用户表  如果存在则删除 否则跳过!
drop table if  EXISTS user;

CREATE TABLE user(
  
id  int  primary key  auto_increment,
name VARCHAR(60) not null  unique,
pwd VARCHAR(60) not null,
sex char(6),
birthday date,
type varchar(50)  default '普通用户'
);

ALTER table user add `address` VARCHAR(255);

需求: 需要在user表基础上更改表名称位users{ 很少用!}

RENAME table user [to] users;

需求: 需要在刚才的user表的一列 addess 更改为 address

alter TABLE users CHANGE  addess  address varchar(50);

需求: 需要在刚才的user表的一列 address 长度更改为200

alter TABLE users MODIFY  address VARCHAR(200);

需求: 创建用户 用户名称叫 旺财! wangcai

create user  wangcai;

需求: 更改用户名称 原用户名称叫 旺财! wangcai 新为小强 xiaoqiang

rename user  wangcai to xiaoqiang ;

需求: 赋予小强权限 查询权限

-- *.* 是一个对象
-- 第一个* 表示任意数据库
-- 第二个* 表示任意表
GRANT SELECT ON *.* to xiaoqiang;

需求: 赋予小强权限

REVOKE SELECT ON *.* from xiaoqiang;

需求: 删除users表

drop table user;

需求:查询表中的所有数据

-- 固定格式: select * from  表的名称
-- `*` 代表的是表中的所有行和所有列
select * from users;

需求: 查询user表的表结构

-- 第一种方式
desc user
-- 第二种方式
show columns from users;

MySQL 注释:

  • 减号 减号 空格 --
  • 多行注释 以/*开头、*/结尾 示例代码:/**/
  • 注释代码: #
DML 数据操纵语言。
插入语句:

格式:

insert into 表名(字段1,字段2...) values ('字段1的值','字段2的值'...)

|–- 全部插入语句: 顾名思义 全部的字段

eg

insert [into] users values ('1','jack','123','男','1999-09-09','管理员');

|–- 部分插入语句: 顾名思义 部分的字段

eg: 注意:[] 不可以运用在语句中!

insert into users(name,pwd) values ('rose','1456');
insert into users(name,pwd) values ('王轩','1456');
insert into  users(name,pwd) values ('李旺','1456');
insert into users(name,pwd) values ('孙王娃','1456');
insert into users(name,pwd) values ('赵钱孙','1456');
insert into users(name,pwd) values ('冯陈褚','1456');

更新语句

格式:

update 表名 set 字段1 = 字段1新的值 ,字段2 = 字段2新的值 where id = 被修改数据的id

update users set birthday = '2000-02-02' , sex = '女'  where id = 2;
删除语句
delete  from users where id = 3 ;
DQL 数据查询语言。
单表查询:
查询语句:
select *  from users  ;
SQL优化:
在查询中尽量避免使用 `*` 符号
条件查询语句

需求: 查询id为2号的用户信息

select *   from users where id = 2 ;

需求:查询用户成绩在60~80区间
select * from users where grade BETWEEN 60  and 80;
空值查询语句

需求: 查询出生日期为空的用户的信息

select * from users where birthday  is  null  ;
去重查询语句 – > 多表查询 根据 用户性别查询各自信息

需求: 查询不重复显示用户性别的信息

select *   from users ;
排序查询语句

需求: 在用户表进行安装id倒序排序查询

select  *   from users order by id desc ;

需求: 在用户表进行安装id升序排序查询

select  *   from users order by id asc ;
模糊查询语句

``_叫做占位符。 代表任意一位数据%` 叫做通配符。代表任意长度、任意数据

需求: 在用户表进行查询姓王的用户信息

select * from users where name like '王%' ;

需求: 在用户表进行查询姓名是五位长度的用户信息

select * from users where name like '_____' ;

需求: 在用户表进行查询姓j,名称最后为y的用户信息

select * from users where name like 'j%y' ;
多条件查询 | And | Or

需求: 在用户表进行查询性别为男且类型是管理员的用户信息

select * from users where sex ='男' and type = '管理员';

需求: 在用户表进行查询性别为女或类型是管理员的用户信息

select * from users where sex ='女' or type = '管理员';

需求: 在用户表进行查询性别为女或类型是管理员 并且出生日期为空 的用户信息(性别为女且出生日期为空 | 类型是管理员且出生日期为空)

select * from users where (sex ='女' or type = '管理员') and birthday is null;

And 和Or 同用。MySQL中,AND的执行优先级高于OR 可以使用括号进行修整优先级顺序

函数
单行函数
连接符函数
 -- 创建用户个人信息表
CREATE TABLE users(
id INT ,
NAME VARCHAR(20),
phone VARCHAR(20),
PRIMARY KEY(id)
);
-- 插入用户
INSERT users VALUES('1001','张三','13497854715'),('1002','张三','18505545515');

SELECT * FROM users;

-- 需求: 将个人信息进行"加密"显示
SELECT NAME,phone,CONCAT(LEFT(phone,3),'****',RIGHT(phone,4)) AS newPhone FROM users;

左填充[ lpad ] | 右填充 [ rpad ]
截取字符串函数 [ substring ]
替换函数 [ replace ]
聚合函数/组函数
关键字 中文描述
Max 最大值函数
Min 最小值函数
Sum 求和函数
Avg 平均值函数
Count 统计函数

☆ 数据库集群!!!

负载均衡


扩展:Oracle 数据类型:

  1. 数值型
1. 整数和浮点  
    1. number(5) 表示一共有五位数、  其区间是  -99999~99999
        2. number(5,2) 表示一共有五位数、小数部分占据两位数 其区间是  -999.99~999.99

字符串类型

1. char   固定长度
    2. varchar2  可变长度


日期

1. date
    2. 时间戳
  1. lob(大对象数据类型)
    blob 存储二进制类型的Lob ;适用于 存放图片、音频、视频等资源 最大可存放的空间是4G
    clob

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
存储 关系型数据库 MySQL
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
152 0
|
2月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
138 6
|
2月前
|
SQL 关系型数据库 MySQL
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
83 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
|
2月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
77 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
73 1
|
4月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
62 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
4月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
181 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
4月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
44 6
|
4月前
|
SQL 关系型数据库 MySQL
MySQL学习笔记
这篇文章是一份关于MySQL数据库操作的学习笔记,涵盖了数据库的终端操作、数据类型、建表约束、事务处理以及SQL的连接查询等基础知识点。
|
4月前
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
77 4