MySQL数据库操作

目录

一:MySQL数据库介绍

二:MySQL库操作

1.系统数据库

2.数据库操作

2.1创建数据库

2.3选择数据库

2.5删除数据库

三:MySQL表操作

1.表介绍

2.查看表

3.创建表

3.1语法

3.2类型介绍

3.3约束条件

3.4创建表示例

4.查看表结构

5.修改表

5.1修改表名

5.2增加字段

5.3删除字段

5.4修改字段

6.复制表

7.删除表

四:MySQL数据操作

1.介绍

3.删除数据INSERT

4.更新数据INSERT

1.单表查询

1.1单表查询语法

1.2关键字执行的优先级

1.3准备数据

(1)比较运算符:>、<、>=、<=、!=

[(2)between and:在什么之间](#(2)between and:在什么之间)

(1)什么是分组?为什么要分组?

[(2)聚合函数:count () sum () avg () max () min()](#(2)聚合函数:count () sum () avg () max () min())

1.7having过滤

1.10正则匹配

2.多表查询

2.1子查询

2.2多表连接查询

1.内连接(只连接匹配的行)

2.左连接(优先显示左表全部记录)

3.右连接(优先显示右表全部记录)

五:MySQL数据库用户授权

1.创建用户

2.授权操作

3.查看权限

4.撤销权限


一:MySQL数据库介绍

MySQL是一种开源的关系型数据库管理系统(RDBMS),广泛应用于Web应用程序的后端数据存储。

SQL语言主要由以下几部分组成。

>DDL(DataDefinitionLanguage,数据定义语言):用来建立多数据库、数据库对象和定义字段,如CREATE、ALTER、DROP。

>DML(Data Manipulation Language,数据操纵语言):用来插入、除和修改数据库中的数据,如INSERT、UPDATE、DELETE。

>DQL(DataQuery Language,数据查询语言):用来查询数据库中的数据,如SELECT。

>DCL (Data Control Language,数据控制语言):用来控制数据库组件的存取许可、存取权限等,如COMMIT、ROLLBACK、GRANT、REVOKE20

二:MySQL库操作

1.系统数据库

MySQL安装后会自动创建几个系统数据库,用于存储系统信息和元数据。常见的系统数据库包括:

  • information_schema:存储数据库的元数据,如表、列、索引等信息。
  • mysql:存储用户权限、日志等系统信息。
  • performance_schema:用于监控MySQL服务器的性能。
  • sys:提供了一种更简单的方式来查看performance_schema中的数据。

2.数据库操作

2.1创建数据库

使用CREATE DATABASE语句可以创建一个新的数据库。语法如下:

sql 复制代码
CREATE DATABASE database_name;
 

例如,创建一个名为mydb的数据库:

sql 复制代码
CREATE DATABASE mydb;
 

2.2数据库命名规则

数据库名称应遵循以下规则:

  • 名称可以由字母、数字、下划线和美元符号组成。
  • 名称不能以数字开头。
  • 名称不能包含特殊字符或空格。
  • 名称长度通常不超过64个字符。

2.3选择数据库

使用USE语句可以选择一个数据库作为当前操作的数据库。语法如下:

sql 复制代码
USE database_name;
 

例如,选择mydb数据库:

sql 复制代码
USE mydb;
 

2.4查看数据库

使用SHOW DATABASES语句可以查看当前MySQL服务器上的所有数据库。语法如下:

sql 复制代码
SHOW DATABASES;
 

2.5删除数据库

使用DROP DATABASE语句可以删除一个数据库。语法如下:

sql 复制代码
DROP DATABASE database_name;
 

例如,删除mydb数据库:

sql 复制代码
DROP DATABASE mydb;
 

三:MySQL表操作

1.表介绍

表是数据库中存储数据的基本单位,由行和列组成。每一行代表一条记录,每一列代表一个字段。表的结构由字段名、数据类型和约束条件定义。

2.查看表

使用SHOW TABLES语句可以查看当前数据库中的所有表。语法如下:

在操作之前,需要先使用USE语句切换到所使用的数据库,就像要查看一个文件夹里面有多少文件,

要先进入这个文件夹。

sql 复制代码
USE mysql;
Database changed
SHOW TABLES;
 

3.创建表

3.1语法

使用CREATE TABLE语句可以创建一个新表。语法如下:

sql 复制代码
mysql>create table表名(
字段名1类型[(宽度)约束条件],
字段名2类型[(宽度)
约束条件],
字段名3类型[(宽度)
约束条件]
) :
#注意:
1.在同一张表中,字段名是不能相同
2.宽度和约束条件可选
3.字段名和类型是必须的,字段的类型宽度和约束条件是可选项
4.表中最后一个字段不要加逗号

3.2类型介绍

表内存放的数据有不同的类型,类似于使用excel存储数据时也需要设置的数据类型,每种数据类型都有自己的宽度,但宽度是可选的,7不设置宽度时,会使用字段的默认宽度。

MySQL支持多种数据类型,主要包括以下几类:

  • 数值类型 :如INT、DOUBLE、DECIMAL等。
  • 日期类型 :如DATEDATETIMETIMESTAMP等。
  • 字符串类型 :如VARCHARCHARTEXT等。

3.3约束条件

约束条件与数据类型的宽度一样,都是可选参数,类似于使用excel存储数据时,可以利用excel的公式限制员工ID列:禁止重复值,且不能为空

约束条件用于限制表中数据的规则,常见的约束条件包括:

  • PRIMARY KEY:定义主键,唯一标识表中的每一行。
  • NOT NULL:字段不能为空。
  • UNIQUE:字段值必须唯一。
  • FOREIGN KEY:定义外键,用于关联其他表。
  • DEFAULT:为字段设置默认值。

3.4创建表示例

创建一个名为users的表,包含idnameemail字段:

sql 复制代码
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
);
 

4.查看表结构

使用DESCRIBE语句可以查看表的结构。语法如下:

sql 复制代码
DESCRIBE table_name;
 

例如,查看users表的结构:

sql 复制代码
DESCRIBE users;
 

5.修改表

5.1修改表名

使用RENAME TABLE语句可以修改表名。语法如下:

sql 复制代码
RENAME TABLE old_table_name TO new_table_name;
 

例如,将users表重命名为customers

sql 复制代码
RENAME TABLE users TO customers;
 

5.2增加字段

使用ALTER TABLE语句可以增加字段。语法如下:

sql 复制代码
ALTER TABLE表名ADD字段名
数据类型
[完整性约束条件...],ADD字段名
数据类型[完整性约束条件...];
ALTER TABLE表名ADD字段名
数据类型[完整性约束条件...] FIRST;
ALTER TABLE表名ADD字段名
数据类型[完整性约束条件...] AFTER字段名;

例如:

sql 复制代码
mysql> ALTER TABLE t1 ADD class int(3) not null;
Query OK, 0 rows affected, 1 warning (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 1

5.3删除字段

使用ALTER TABLE语句可以删除字段。语法如下:

sql 复制代码
ALTER TABLE table_name DROP COLUMN column_name;
 

例如:

sql 复制代码
mysql> alter table t2 drop class;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

5.4修改字段

sql 复制代码
ALTER TABLE表名 MODIFY字段名 数据类型[完整性约束条件...];
ALTER TABLE表名CHANGE 旧字段名 新字段名 旧数据类型[完整性约束条
件...];
ALTER TABLE表名CHANGE 旧字段名新字段名 新敬据类型[完整性约束条
件...];

例如:

sql 复制代码
alter table t2 modify name char(50);
Query OK, O rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table t2 change name user_name varchar(50);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

6.复制表

只复制表结构,不复制表中数据

sql 复制代码
mysql> create table t3 like t2;
Query OK, O rows affected (0.01 sec)

复制表结构+记录(key不会复制:主键、外键和索引)

sql 复制代码
mysql> create table t4 select * from t2;
Query OK, O rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0

例如,复制users表到users_backup

sql 复制代码
CREATE TABLE users_backup AS SELECT * FROM users;
 

7.删除表

删除数据库中的表,需要指定"数据库名.表名"作为参数女;若只指定表名参数,则需先通过执行"USE"语句切换到目标数据库

sql 复制代码
mysql> drop table t2;
Query OK, O rows affected (0.01 sec)
mysql> drop table dbl.t3;
Query OK, 0 rows affected (0.01 sec)

使用DROP TABLE语句可以删除表。语法如下:

sql 复制代码
DROP TABLE table_name;
 

例如,删除users表:

sql 复制代码
DROP TABLE users;
 

四:MySQL数据操作

1.介绍

在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括使用INSERT实现数据的插入、使用UPDATE实现数据的更新、使用DELETE实现数据的删除、使用SELECT查询数据。

创建示例表:

sql 复制代码
mysql>usedbl; #进入dbl库
mysql> create table tl(
-> id int,
->name varchar(50),
->age int (3),
->sex enum(')
->male', female')
-> ):
mysql> show tables;

2.插入数据INSERT

INSERTINTO语句:用于向表中插入新的数据记录,语句格式如下所示插入数据后可使用mysql>select*from tl;

验证顺序插入:

INSERT INTO表名VALUES(值1,值3...值 3...值 );

sql 复制代码
mysql> INSERT INTO t1 VALUES (1, "zhangsan", 18, "male");
Query OK, I row affected (0.00 sec)

指定字段插入数据:

INSERT INTO表名(字段1,字段2,字段3...字段n) VALUES6(值1,值2,值3...值

sql 复制代码
mysql>INSERT INTO tl(id, name,age, sex) VALUES (2, "lisi", 18, "female");
Query OK, I row affected (0.00 sec)

插入多条记录:

INSERT INTO表名VALUES(值1,值3...值3...值 n),(值1,值2,值3...值n),(值1,值2,值3...值n);

sql 复制代码
mysql>INSERT INTO ti VALUES (3, "wangwu", 28, "male"), (4, "zhaoliu", 30, "female");
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0

3.删除数据INSERT

使用DELETE语句可以删除表中的数据。语法如下:

sql 复制代码
DELETE FROM table_name WHERE condition;
 

例如,删除users表中id为1的记录:

sql 复制代码
DELETE FROM users WHERE id = 1;
 

4.更新数据INSERT

使用UPDATE语句可以更新表中的数据。语法如下:

sql 复制代码
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
 

例如,更新users表中id为1的记录的name字段:

sql 复制代码
UPDATE users SET name = 'Jane Doe' WHERE id = 1;
 

1.单表查询

1.1单表查询语法
sql 复制代码
SELECT column1, column2 FROM table_name WHERE condition;
 
1.2关键字执行的优先级

WHEREGROUP BYHAVINGORDER BYLIMIT

1.3准备数据
sql 复制代码
INSERT INTO users (username, email) VALUES ('alice', '[email protected]'), ('bob', '[email protected]');
 

1.4简单查询

sql 复制代码
SELECT * FROM users;
 

1.5where条件

(1)比较运算符:>、<、>=、<=、!=
sql 复制代码
SELECT * FROM users WHERE id > 1;
 
(2)between and:在什么之间
sql 复制代码
SELECT * FROM users WHERE id BETWEEN 1 AND 3;
 

(3)in:集合查询

sql 复制代码
SELECT * FROM users WHERE id IN (1, 2);
 

(4)like:像,模糊匹配 _:任意单个字符 %:任意多个字符

sql 复制代码
SELECT * FROM users WHERE username LIKE 'j%';
 

(5)逻辑运算符:andornot

sql 复制代码
SELECT * FROM users WHERE id > 1 AND username = 'john_doe';
 

1.6group by 分组

(1)什么是分组?为什么要分组?

分组用于将数据按某一列或多列进行分组,通常与聚合函数一起使用。

(2)聚合函数:count () sum () avg () max () min()
sql 复制代码
SELECT COUNT(*) FROM users;
 
1.7having过滤
sql 复制代码
SELECT username, COUNT(*) FROM users GROUP BY username HAVING COUNT(*) > 1;
 

1.8order by 排序

sql 复制代码
SELECT * FROM users ORDER BY username ASC;
 

1.9limit限制结果条目

sql 复制代码
SELECT * FROM users LIMIT 2;
 
1.10正则匹配
sql 复制代码
SELECT * FROM users WHERE username REGEXP '^j';
 

2.多表查询

2.1子查询
sql 复制代码
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);
 
2.2多表连接查询
1.内连接(只连接匹配的行)
sql 复制代码
SELECT users.username, orders.order_id FROM users INNER JOIN orders ON users.id = orders.user_id;
 
2.左连接(优先显示左表全部记录)
sql 复制代码
SELECT users.username, orders.order_id FROM users LEFT JOIN orders ON users.id = orders.user_id;
 
3.右连接(优先显示右表全部记录)
sql 复制代码
SELECT users.username, orders.order_id FROM users RIGHT JOIN orders ON users.id = orders.user_id;
 

五:MySQL数据库用户授权

1.创建用户

使用CREATE USER语句创建用户。例如:

sql 复制代码
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
 

2.授权操作

授权语法:
GRANT权限列表ON数据库名.表名T0用户名@来源地址

>权限列表:用于列出授权使用的各种数据库操作,以逗号:进行分隔,如"select, insert,

update"。使用"all"表示所有权限,可授权执行任何操作。

>数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符"*"。例如,使用"auth.*"表示授权操作的对象为auth

执行以下操作可以为数据库用户'xiaoqi'@localhost',设置对test数据库中的所有表具有查询权限
GRANT SELECT ON test.* TO 'xiaoqi'@'localhost'

切换到其他Shell终端,以用户xiaoqi的身份连接数据库。在已授权的数据库上操作将被允许,否则将被拒绝。例如,允许用户xiaoqi查询test数据库中表的数据记录,但禁止查询其他数据库中的表的认记录。showdatabases只能看到被授权的库

在企业服务器的应用中,数据库与网站服务器有时候是相互独立的。因此在MySQL服务器中,应根据实际情况创建新的用户授权,允许受权用户从网站服务器访问数据库。通常的做法是,创建一个或几个网站专用的数女据库,并授予所有权限,限制访问的来源IP地址。

例如,执行以下操作可以新建bdqn数据库,并授权从IP地址为

192.168.4.19的主机连接,用户名为"dbuser",密码为"pwd@123",允许在bdqn数据库中执行所有操作

sql 复制代码
mysql> CREATE DATABASE bdqn;
Query OK, I row affected (0.03 sec
mysql> CREATE USER 'dbuser'@'192.168.4.19' IDENTIFIEDBY' pwd@123' :
Query OK, O rows affected (0.01 sec)
mysql> GRANT all ON bdqn.*TO'dbuser' @'192.168.4.19' 
Query OK, O rows affected (0.00 sec)

3.查看权限

使用SHOW GRANTS语句可以查看用户的权限。语法如下:

sql 复制代码
SHOW GRANTS FOR 'username'@'host';
 

例如,查看testuser用户的权限:

sql 复制代码
SHOW GRANTS FOR 'testuser'@'localhost';
 

4.撤销权限

使用REVOKE语句可以撤销用户的权限。语法如下:

sql 复制代码
REVOKE privileges ON database_name.table_name FROM 'username'@'host';
 

例如,撤销testuser用户对mydb数据库的所有权限:

sql 复制代码
REVOKE ALL PRIVILEGES ON mydb.* FROM 'testuser'@'localhost';
 
相关推荐
码农黛兮_463 分钟前
MySQL 数据库集群部署、性能优化及高可用架构设计
数据库·mysql·性能优化
AllenO.o26 分钟前
Redis五种数据结构详解
java·数据结构·数据库·redis·缓存
消失在人海中36 分钟前
数据分析基础:需要掌握的入门知识
数据库·人工智能·数据分析
闪电麦坤9539 分钟前
SQL:SELF JOIN(自连接)与CROSS JOIN(交叉连接)
数据库·sql·mysql
码农飞哥1 小时前
互联网大厂Java面试实战:从Spring Boot到微服务的技术问答与解析
java·数据库·spring boot·安全·微服务·面试·电商
周盛欢1 小时前
数据库故障排查指南
数据库·mysql
计算机学姐2 小时前
基于SpringBoot的在线教育管理系统
java·vue.js·spring boot·后端·mysql·spring·mybatis
onkel in blog2 小时前
【Docker】Docker Compose方式搭建分布式内存数据库(Redis)集群
数据库·redis·分布式·docker
Minyy112 小时前
“爱生活”小项目问题总结
java·数据库·spring boot·spring·maven·intellij-idea
大G哥2 小时前
【SQL 周周练】爬取短视频发现数据缺失,如何用 SQL 填充
数据库·sql