当前位置:网站首页>MySQL1
MySQL1
2022-07-24 18:51:00 【小新没蜡笔m】
目录
数据库相关概念
数据库
- 存储数据的仓库,数据是有组织的进行存储
- 英文:DataBase,简称DB
数据库管理系统
- 管理数据库的大型软件
- 英文:DataBase Management System,简称DBMS
SQL
- 英文: Structured Query Language,简称SQL,结构化查询语言
- 操作关系型数据库的编程语言
- 定义操作所有关系型数据库的统一标准
MySQL数据模型
关系型数据库
关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库。
优点
- 都是使用表结构,格式一致,易于维护。
- 使用通用的SQL语言操作,使用方便,可用于复杂查询。
- 数据存储在磁盘中,安全。
SQL
SQL简介
- 英文: Structured Query Language,简称SQL
- 结构化查询语言,一门操作关系型数据库的编程语言
- 定义操作所有关系型数据库的统一标准
- 对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言"
SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾。
- MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
- 注释·单行注释:--注释内容或#注释内容(MySQL特有).多行注释:/*注释*/
SQL分类
- DDL(Data Definition Language)数据定义语言,用来定义数据库对象:数据库,表,列等
- DML(Data Manipulation Language)数据操作语言,用来对数据库中表的数据进行增删改
- DQL(Data Query Language)数据查询语言,用来查询数据库中表的记录(数据)
- DCL(Data Control Language)数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户

DDL——操作数据库
1.查询
SHOW DATABASES;

2.创建
- 创建数据库
CREATE DATABASE 数据库名称;
- 创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXISTS数据库名称;

3.删除
- 删除数据库
DROP DATABASE 数据库名称;
- ·删除数据库(判断,如果存在则删除)
DROP DATABASE IF EXISTS数据库名称;
4.使用数据库
- 查看当前使用的数据库
SELECT DATABASE();
- 使用数据库
USE 数据库名称;
DDL --操作表
- 创建(Create)
- 查询(Retrieve)
- 修改(Update)
- 删除(Delete)
查询表
- 查询当前数据库下所有表名称 SHOW TABLES;
- ·查询表结构 DESC表名称;
创建表
- CREATE TABLE 表名(
字段名1数据类型1,
字段名2数据类型2,
.....
字段名n数据类型n
);
注意:最后一行末尾,不能加逗号
数据类型
MySQL支持多种类型,可以分为三类:
- 数值
- 日期
- 字符串


create table student( id int, name varchar(10), gender char(1), birthday date, score double(5,2), email varchar(64), tel varchar( 15), status tinyint );
删除表
- 删除表 DROP TABLE表名;
- 删除表时判断表是否存在 DROPTABLE IF EXISTS表名;
修改表
1.修改表名
ALTER TABLE表名RENAME TO新的表名;
mysql> alter table student rename stu;
Query OK, 0 rows affected (0.01 sec)⒉添加一列
ALTER TABLE 表名ADD列名数据类型;
mysql> alter table stu add address varchar(50);
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 03.修改数据类型
ALTER TABLE表名MODIFY 列名新数据类型;
mysql> alter table stu modify address char(30);
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 04.修改列名和数据类型
ALTER TABLE 表名CHANGE列名新列名新数据类型;
mysql> alter table stu change address addr varchar(50);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 05.删除列
ALTER TABLE 表名DROP列名;
mysql> alter table stu drop addr;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0DML
添加数据
1.给指定列添加数据
INSERT INTO表名(列名1,列名2,-.)VALUES(值1,值2,.-);
2.给全部列添加数据
INSERT INTO表名VALUES(值1,值2,);
3.批量添加数据
INSERT INTO表名(列名1,列名2.….)VALUES(值1,值2...),(值1,值2...),(值1,值2....;INSERT INTO表名VALUES(值1,值2,...),(值1,值2...),(值1,值2..)..;
修改数据
1.修改表数据
UPDATE 表名SET列名1=值1,列名2=值2,... [WHEREI条件];
注意:修改语句中如果不加条件,则将所有数据都修改!
删除数据
1.删除数据
DELETE FROM表名[WHERE条件];
注意:删除语句中如果不加条件,则将所有数据都删除!
-- 查询所有数据
SELECT
*
FROM
stu;
-- 给指定列添加数据 INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);
INSERT INTO stu (id, NAME)
VALUES
(1, '张三');
-- 给所有列添加数据,列名的列表可以省略的
INSERT INTO stu (
id, -- 编号
NAME,-- 姓名
sex,
birthday,
score,
email,
tel,
STATUS
)
VALUES
(
2,
'李四',
'男',
'1999-11-11',
88.88,
'[email protected]',
'13888888888',
1
);
INSERT INTO stu
VALUES
(
2,
'李四',
'男',
'1999-11-11',
88.88,
'[email protected]',
'13888888888',
1
);
INSERT INTO stu
VALUES
(
2,
'李四',
'男',
'1999-11-11',
88.88,
'[email protected]',
'13888888888',
1
),(
2,
'李四',
'男',
'1999-11-11',
88.88,
'[email protected]',
'13888888888',
1
),(
2,
'李四',
'男',
'1999-11-11',
88.88,
'[email protected]',
'13888888888',
1
);
select * from stu;
-- 修改数据 UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件] ;
-- 将张三的性别改为女
update stu set sex = '女' where name = '张三';
-- 将张三的生日改为 1999-12-12 分数改为99.99
update stu set birthday = '1999-12-12', score = 99.99 where name = '张三';
-- 注意:如果update语句没有加where条件,则会将表中所有数据全部修改!
update stu set sex = '女';
-- 删除 DELETE FROM 表名 [WHERE 条件] ;
-- 删除张三记录
delete from stu where name = '张三';
delete from stu;
DQL
- 基础查询
- 条件查询(wHERE)
- 分组查询(GROUP BY)
- 排序查询(ORDER BY)
- 分页查询(LIMIT)
基础查询
1.查询多个字段
SELECT字段列表FROM表名;
SELECT * FROM表名; --查询所有数据
2.去除重复记录
SELECT DISTINCT字段列表FROM表名;
3.起别名
AS: AS也可以省略
条件查询
1.条件查询语法
SELECT字段列表FROM表名wHERE 条件列表;
2.条件
符号 功能
- >大于
- <小于
- >=大于等于
- <=小于等于
- =等于
- <>或!=不等于
- BETWEEN ...AND ...在某个范围之内(都包含)
- IN(...)多选一
- LIKE占位符
- 模糊查询_单个任意字符%多个任意字符
- IS NULL是NULL
- IS NOT NULL不是NULL
- AND或&&并且
- OR或||或者
- NOT 或! 非,不是
SELECT * FROM stu;
-- 条件查询 =====================
-- 1.查询年龄大于20岁的学员信息
select * from stu where age > 20;
-- 2.查询年龄大于等于20岁的学员信息
select * from stu where age >= 20;
-- 3.查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
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;
-- 4.查询入学日期在'1998-09-01' 到 '1999-09-01' 之间的学员信息
select * from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';
-- 5. 查询年龄等于18岁的学员信息
select * from stu where age = 18;
-- 6. 查询年龄不等于18岁的学员信息
select * from stu where age != 18;
select * from stu where age <> 18;
-- 7. 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息
select * from stu where age = 18 or age = 20 or age = 22;
select * from stu where age in (18,20 ,22);
-- 8. 查询英语成绩为 null的学员信息
-- 注意: null值的比较不能使用 = != 。需要使用 is is not
select * from stu where english = null; -- 不行的
select * from stu where english is null;
select * from stu where english is not null;
-- 模糊查询 like =====================
/*
通配符:
(1)_:代表单个任意字符
(2)%:代表任意个数字符
*/
-- 1. 查询姓'马'的学员信息
select * from stu where name like '马%';
-- 2. 查询第二个字是'花'的学员信息
select * from stu where name like '_花%';
-- 3. 查询名字中包含 '德' 的学员信息
select * from stu where name like '%德%';
排序查询
1.排序查询语法
SELECT字段列表FROW表名ORDER BY排序字段名1[排序方式1],排序字段名2[排序方式2]...;
排序方式:
- ASC:升序排列(默认值)
- DESC:降序排列
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
/*
排序查询:
* 语法:SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
* 排序方式:
* ASC:升序排列(默认值)
* DESC:降序排列
*/
-- 1.查询学生信息,按照年龄升序排列
select * from stu order by age ;
-- 2.查询学生信息,按照数学成绩降序排列
select * from stu order by math desc ;
-- 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
select * from stu order by math desc , english asc ;
聚合函数
1.概念:将一列数据作为一个整体,进行纵向计算。
2. 聚合函数分类:
函数名 功能
- count(列名)统计数量(一般选用不为null的列)
- max(列名)最大值
- min(列名)最小值
- sum(列名)求和
- avg(列名)平均值
3. 聚合函数语法:
SELECT聚合函数名(列名)FROM表;
注意:null值不参与所有聚合函数运算
/*
分组函数
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]…;
*/
select * from stu ;
-- 1. 查询男同学和女同学各自的数学平均分
select sex, avg(math) from stu group by sex;
-- 注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
select name, sex, avg(math) from stu group by sex;
-- 2. 查询男同学和女同学各自的数学平均分,以及各自人数
select sex, avg(math),count(*) from stu group by sex;
-- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
select sex, avg(math),count(*) from stu where math > 70 group by sex;
-- 4. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的。
select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*) > 2;
分页查询
1.分页查询语法
SELECT字段列表FROM表名LIMIT起始索引,查询条目数R
起始索引:从0开始
计算公式:起始索引=(当前页码-1)·每页显示的条数
tips :
- 分页查询limit是MySQL数据库的方言
- Oracle分页查询使用rownumber
- SQL Server分页查询使用top
/*
分页查询:
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数
* 起始索引:从0开始
*/
select * from stu ;
-- 1. 从0开始查询,查询3条数据
select * from stu limit 0 , 3;
-- 2. 每页显示3条数据,查询第1页数据
select * from stu limit 0 , 3;
-- 3. 每页显示3条数据,查询第2页数据
select * from stu limit 3 , 3;
-- 4. 每页显示3条数据,查询第3页数据
select * from stu limit 6 , 3;
-- 起始索引 = (当前页码 - 1) * 每页显示的条数
边栏推荐
- FPGA 20 routines: 9. DDR3 memory particle initialization write and read through RS232 (Part 1)
- PWN learning
- 16. What is the difference between target and currenttarget?
- Network security port 80 - PHP CGI parameter injection Execution Vulnerability
- ETL development tool kettle download installation environment construction and use tutorial
- Wechat applet reverse
- Create parent-child projects in clion (cmake tool) and introduce the method of third-party libraries
- C Programming classic tutorial
- 永恒之蓝MS17-010exp复现
- Ionic4 learning notes 10 rotation map of an East Project
猜你喜欢

L4L7负载均衡

Cryptography knowledge - Introduction to encryption -1

The difference between static method and instance method

OPENGL学习(四)GLUT三维图像绘制

【历史上的今天】7 月 24 日:Caldera 诉微软案;AMD 宣布收购 ATI;谷歌推出 Chromecast

Vsftpd2.3.4 port penetration 6200 IRC_ 3281_ backdoor

Windowing function (1) - top three employees of department salary

Vsftpd2.3.4-端口渗透 6200 irc_3281_backdoor

为什么梯度是函数变化最快的方向

Valentine's Day gift ----- use her photos and our chat records to generate word clouds~
随机推荐
Getaverse, a distant bridge to Web3
Nacos introduction and console service installation
We have to understand the four scopes: application, session, request and page
Hangdian multi School Game 1 question 3 backpack (XOR dp+bitset)
core dump
BUUCTF-pwn[1]
理解动态计算图,requires_grad、zero_grad
QT - animation frame
Go小白实现一个简易的go mock server
线程的生命周周期和基本方法
Mysql——》BufferPool相关信息
Getaverse,走向Web3的远方桥梁
Data analysis of network security competition of national vocational college skills competition digital forensics-a
matplotlib
全国职业院校技能大赛网络安全竞赛——Apache安全配置详解
National vocational college skills competition network security competition -- detailed explanation of Apache security configuration
Type-C边充边听PD协议芯片
Go Xiaobai implements a simple go mock server
使用der格式公钥生成publicKey报错
Traversal and splicing of strings

