当前位置:网站首页>MySQL Basics
MySQL Basics
2022-08-03 19:42:00 【#orange soda】
一、数据库的相关概念
1、数据库
◆ A database is a warehouse that stores and manages data.
◆ 数据库简称DB(DataBase).
简言之,数据库就是将数据存储在硬盘上,达到持久化存储的效果.
2、数据库管理系统
◆ 管理数据库的软件
◆ 简称DBMS(DataBase Management System).
◆ The database can be operated through the database management system,对数据库中的数据进行增删改查操作.
需要注意的是,数据库≠数据库管理系统.例如:MySQL,It is actually a database management system,rather than what we usually sayMySQL数据库.A database management system can contain multiple databases.
3、SQL
◆ SQL:英文名称->Structured Query Language,是一种结构化查询语言.
◆ 是操作关系型数据库的编程语言.
Databases can be divided into relational databases and non-relational databases according to how their data is stored,The difference between the two can be referred to关系型数据库和非关系型数据库的区别
◆ SQLDefines a unified standard for all relational databases,即可以使用SQL操作所有的关系型数据库管理系统.
二、MySQL
1、安装MySQL
◆ MySQL有两种安装方式.MySQL官网下载地址
zip版:Commonly known as the green version,登录MySQL官网,下载压缩包,After decompression, it will be presented directly in the form of a folder,不需要手动安装,But you need to manually configure it yourself.
msi版:在MySQL官网下载安装包,双击运行,进入安装界面,You can choose to install it according to your own needs.
2、启动MySQL服务
◆ 以管理员身份运行命令提示符
net start mysql //启动mysql服务
net stop mysql //停止mysql服务
◆ You can also open the Task Manager,在服务中找到MySQLRight-click on the service to turn the service on or off.
3、MySQL登录和退出
◆ 登录
打开命令提示符,输入mysql -u 用户名 -p 密码,回车,左边出现mysql>,It means the login is successful
◆ 退出
使用 exit / quit can exitmysql登录.
三、SQL概述
1、SQL通用语法
◆ SQL语句可以单行或多行书写,以分号结尾.
◆ MySQL数据库管理系统的SQL语句不区分大小写.
◆ SQL注释
单行注释:– 注释内容 或 # 注释内容(MySQL特有)
多行注释:/* 注释 */
2、SQL分类
◆ DDL(Data Definition Language):数据定义语言,用来定义数据库对象:数据库、表、列等.
◆ DML(Data Manipulation Language):数据操作语言,用来对数据库中表的数据进行增删改.
◆ DQL(Data Query Langusge):数据查询语言,用来查询数据库中表的记录(数据).
◆ DCL(Data Control Language):数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户.
四、DDL
DDL主要用来操作数据库,表等.
1、操作数据库
DDLOperating the database is mainly to add, delete, and query the database.
1.1、创建数据库
◆ 创建数据库
格式:CREATE DATABASE 数据库名称;
举例: 创建数据库db
create database db;
◆ 创建数据库(判断,Create if exists)
格式:CREATE DATABASE IF NOT EXISTS 数据库名称;
举例: 当数据库db不存在时,创建数据库db.
create database if not exists db;
一般使用第二种SQL来创建数据库,Check if the database exists before creating it.
1.2、查询数据库
格式:SHOW DATABASE;
1.3、使用数据库
◆ 使用数据库
格式:USE 数据库名称;
举例: 使用数据库db.
use db;
◆ 查看当前使用的数据库
格式:SELECT DATABASE();
举例: 查看当前使用的数据库.执行该SQLThe currently used database is returned after the statement,如执行完use db;After viewing the currently used database will returndb.
select database();
1.4、删除数据库
◆ 删除数据库
格式:DROP DATABASE 数据库名称;
举例: 删除创建的数据库db.
drop database db;
◆ 删除数据库(判断,如果存在则删除)
格式:DROP DATABASE IF EXISTS 数据库名称;
举例: If the database exists in the database management systemdb,then delete the databasedb.
drop database if exists db;
一般使用第二种SQL来删除数据库,Check whether the database exists before deleting.
2、操作表
2.1、数据类型
MySQL支持多种类型,可以分为三类:
◆ 数值
tinyint: 小整数型,占一个字节
int:大整数类型,占四个字节
eg:age int
double:浮点类型
使用格式:字段名 double(总长度,小数点后保留的位数)
eg:score double(5,2)
◆ 日期
date:日期值,只包含年月日.
eg:birthday date
datetime:混合日期和时间值,包含年月日时分秒.
eg:birthday datetime
◆ 字符串
char:定长字符串.
优点:存储性能高.
缺点:浪费空间.
eg:name char(10) 如果存储的数据字符个数不足10个,也会占10个空间.
varchar:变长字符串.
优点:节约空间.
缺点:存储性能底.
eg:name varchar(10) If the number of stored data characters is n,且n<10,The number of data characters is accounted forn个空间.
以上MySQLData types are not complete,Just some of the more commonly used data types,View all data types availableMySQL数据类型 | 菜鸟教程
2.2、创建表
格式:CREATE TABLE 表名(
字段名1 数据类型1,
字段名2 数据类型2,
…
字段名n 数据类型n
);
举例: 创建user表,包含id,username和password三个字段.
create table user(
id int,
username varchar(20),
password varchar(20)
);
Creating a table proposal also performs a judgment on whether it exists or not,如:create table if not exists user(…);
2.3、查询表
◆ Query the names of all tables in the current database
格式:SHOW TABLES;
举例: Switch to the system databasemysql下,Query the names of all tables under the database.
show tables;
◆ 查询表结构
格式:DESC 表名称;
举例: 查询数据库
desc user;
2.4、修改表
◆ 修改表名
格式:ALTER TABLE 表名 RENAME TO 新的表名;
举例: 修改db数据库下user表的表名为user_info.
alter table user rename to user_info;
◆ 添加一列
格式:ALTER TABLE 表名 ADD 列名 数据类型;
举例: 往user_info表中添加一列,字段名为status,数据类型为int型.
alter table user_info add status int;
◆ 修改数据类型
格式:ALTER TABLE 表名 MODIFY 列名 新数据类型;
举例: 修改user_info表中status字段的数据类型为varchar(2);
alter table user_info modify status varchar(2);
◆ 修改列名和数据类型
格式:ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
举例: 修改user_info表的status字段为email字段,字段类型为varchar(20).
alter table user_info change status email varchar(20);
◆ 删除列
格式:ALTER TABLE 表名 DROP 列名;
alter table user_info drop email;
2.5、删除表
◆ 删除表
格式:DROP TABLE 表名;
举例: 删除user_info表.
drop table user_info;
◆ 删除表时判断表是否存在
格式:DROP TABLE IF EXISTS 表名;
举例: 删除user_info表
drop table if exists user_info;
一般使用第二种SQL来删除表,Check if the table exists before deleting.
五、DML
1、添加数据
◆ 给指定列添加数据
格式:INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);
举例: 创建user表,同上创建,Add the following data to the table,id=1,username=zhangsan,password=123;id=2,username=lisi,password=234
create table if not exists user (
id int primary key,
username varchar(20),
password varchar(20)
);
insert into user(id,username,password) values(1,“zhangsan”,“123”);
insert into user(id,username,password) values(2,“lisi”,“234”);
给指定列添加数据,Fields not involved in adding will be automatically set to default values.例:
insert into user(id,username) values(4,“wangwu”);
◆ 给全部列添加数据
格式:INSERT INTO 表名 VALUES(值1,值2,…);
举例: 插入wangwu的信息,给全部列添加数据时valuesAll fields must be included,否则会报错.
insert into user values(3,“wangwu”,“789”);
◆ 批量添加数据
格式:
INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
INSERT INTO 表名 VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
举例: 插入张三,李四的信息.
insert into user(id,username,password) values(5,“张三”,“123”),(6,“李四”,“234”);
或
insert into user values(5,“张三”,“123”),(6,“李四”,“234”);
2、修改数据
格式:UPDATE 表名 SET 列名1=值1,列名2=值2,… WHERE 条件;
举例: 修改id为3The user information is 王五,456.
update user set username=“王五”,password=“456” where id=3;
3、删除数据
格式:DELETE FROM 表名 WHERE 条件;
举例: 删除user表中 “张三” 的数据.
delete from user where username=“张三”;
六、DQL
DQLMainly to query the content in the database.Its query form is more flexible,需要根据具体需求实现,Database query operations are also the most important ,需重点掌握.
数据准备:If necessary, please click this link to download the resource->SQL脚本,无需积分.
1、基础查询
1.1、语法格式
◆ 查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名; # 查询所有数据
◆ 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
◆ 起别名
AS # AS也可以省略
1.2、举例
◆ 查询name、age两列
select name,age from stu;
◆ 查询所有列的数据,列名的列表可以使用 * 替代
select * from stu;
◆ 查询地址信息
select * from stu;
◆ 去除重复记录
It can be seen from the previous query record,There are duplicate records in the found address information,The rendering is not good,可以使用distinctkeyword to remove duplicate records.
select * from stu;
◆ 查询姓名、数学成绩,并通过as关键字给math起别名,别名为 “数学成绩”
Database field names are generally named in English,After the query, the header is in English,可以使用asKeywords alias database field names,方便阅读.
select name,math as 数学成绩 from stu;
2、条件查询
2.1、语法格式
SELECT 字段列表 >FROM 表名 WHERE 条件列表;
◆ Conditional list operator
符号 | 功能 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN…AND… | 在某个范围内(左右都包含) |
IN(…) | 多选一 |
LIKE 占位符 | 模糊查询 _单个任意字符 %多个任意字符 |
IS NULL | The judgment value is NULL |
IS NOT NULL | The judgment value is not empty |
AND 或 && | 并且 |
OR 或 ‖ | 或者 |
NOT 或 ! | 非,不是 |
2.2、举例
◆ 查询年龄大于20岁的学生信息
select * from stu where age>20;
◆ 查询年龄等于20岁的学生信息
select * from stu where age=20;
◆ 查询年龄不等于20岁的学生信息
select * from stu where age!=20;
select * from stu where age<>20;
◆ 查询年龄大于等于20age and less than or equal to age30岁的学生信息
select * from stu where age>=20 && age<=30;
select * from stu where age>=20 and age<=30;
select * from stu where age between 20 and 30;
以上三种方式均可.
◆ 查询入学日期在“1998-09-01”到“1999-09-01”之间的学生信息
select * from stu where hire_date between “1998-09-01” and “1999-09-01”;
◆ 查询年龄等于18岁或者年龄等于20岁或者年龄等于22岁的学生信息
使用IN关键字
select * from stu where age in(18,20,22);
◆ 查询英语成绩为null的学生信息
需要注意的是,When judging whether the field value is empty不能使用=,需要使用IS NULL 或 IS NOT NULL来进行判断,否则会报错.
select * from stu where english is null;
◆ The query last name is“马”的学生信息
使用模糊查询
select * from stu where name like “马%”;
3、排序查询
3.1、语法格式
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
排序方式有两种:分别是:
ASC:升序排列(默认值)
DESC:降序排列
3.2、举例
◆ 查询学生信息,按照年龄升序排列
select * from stu order by age;
Sort by a field in ascending order without adding keywordsASC,The default is ascending order.
◆ 查询学生信息,按照数学成绩降序排列
select * from stu order by math desc;
◆ 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
select * from stu order by math desc,english asc;
4、聚合函数
4.1、概念
将一列数据作为一个整体,进行纵向计算.
4.2、聚合函数分类
函数名 | 功能 |
---|---|
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
4.1、聚合函数语法
SELECT 聚合函数名(列名) FROM 表;
注意:null值不参与所有聚合函数运算
4.2、举例
◆ 统计stuHow many students are in the table
select count(id) from stu; (8)
select count(english) from stu; (7)
Pass does not existnull和存在null的对比,可以看出,null值不参与聚合函数的运算,If a field and a row value are null的话,将不会被统计.可以用count(*)来实现,It is not possible for all data in a row to be null,This problem is thus avoided,Therefore, it is recommended to use it when querying the total numbercount(*)select count(*) from stu;
◆ 查询数学成绩的最高分
select max(math) from stu; (99.00)
◆ 查询数学成绩的最低分
select min(math) from stu; (56.00)
◆ 查询数学成绩的总分
select sum(math) from stu; (636.00)
◆ 查询数学成绩的平均分
select avg(math) from stu; (79.500000)
5、分组查询
5.1、语法格式
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
5.2、举例
◆ 查询男同学和女同学各自的数学平均分
select sex,avg(math) from stu group by sex;
◆ 查询男同学和女同学各自的数学平均分,以及各自人数
select sex,avg(math),count(*) as 总人数 from stu group by sex;
◆ 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
select sex,avg(math),count(*) as 人数 from stu where math>70 group by sex;
◆ 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的
select sex,avg(math),count(*) as 人数 from stu where math>70 group by sex having count(*)>2;
where和having的区别:
1、执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤.
2、可判断的条件不一样:where 不能对聚合函数进行判断,having 可以.
6、分页查询
6.1、语法格式
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
注意: 上述语句中的起始索引是从0开始
6.2、举例
◆ 从0开始查询,查询3条数据
select * from stu limit 0,3;
◆ 每页显示3条数据,查询第1页数据
select * from stu limit 0,3;
◆ 每页显示3条数据,查询第2页数据
select * from stu limit 3,3;
◆ 每页显示3条数据,查询第3页数据
select * from stu limit 6,3;
起始索引计算公式:
起始索引 = (当前页码 - 1) * 每页显示的条数
边栏推荐
- Postgresql snapshot optimization Globalvis new system analysis (performance greatly enhanced)
- 「游戏建模干货」建模大师几步操作,学习经典,赶紧脑补一下吧
- 虚拟机vmware设置桥接模式上网
- Benchmarking Lane-changing Decision-making for Deep Reinforcement Learning
- Unity获取canvas 下ui 在屏幕中的实际坐标
- 【统计机器学习】线性回归模型
- 虚拟机vmware设置nat模式上网
- dpkg强制安装软件
- 入门3D建模基础教程详细分解
- 基础软件与开发语言开源论坛| ChinaOSC
猜你喜欢
详解AST抽象语法树
小马智行起诉擎天智卡:索赔6000万 彭军称要斗争到底
2022年最新的Android面试大厂必考174题(附带详细答案)
Kettle 读取 Excel 数据输出到 Oracle 详解
告诉你0基础怎么学好游戏建模?
盘点在线帮助中心对企业能够起到的作用
CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
Internet Download Manager简介及下载安装包,IDM序列号注册问题解决方法
Teach you to locate online MySQL slow query problem hand by hand, package teaching package meeting
The ecological environmental protection management system based on mobile GIS
随机推荐
基于DMS的数仓智能运维服务,知多少?
FreeRTOS Intermediate
Handler source code analysis
软件测试技术之如何编写测试用例(3)
面试突击:什么是粘包和半包?怎么解决?
关于2022年度深圳市技术攻关重大项目的申报通知
梅科尔工作室-14天华为培训七
七夕之前,终于整出了带AI的美丽秘笈
百利药业IPO过会:扣非后年亏1.5亿 奥博资本是股东
网络协议-TCP、UDP区别及TCP三次握手、四次挥手
剑指 Offer II 044. 二叉树每层的最大值-dfs法
阿里巴巴政委体系-第七章、阿里政委培育
The ecological environmental protection management system based on mobile GIS
MySQL基础
MySQL 主从,6 分钟带你掌握!
Climbing Stairs (7/30)
阿里巴巴政委体系-第八章、阿里政委工作方法论
怎么将自己新文章自动推送给自己的粉丝(巨简单,学不会来打我)
手把手教你定位线上MySQL慢查询问题,包教包会
List类的超详细解析!(超2w+字)