当前位置: 首页 > article >正文

MySql数据库运维学习笔记

在这里插入图片描述
数据库运维常识
DQL、DML、DCL 和 DDL 是 SQL(结构化查询语言)中的四个重要类别,它们分别用于不同类型的数据库操作,下面为你简单明了地解释这四类语句:

1. DQL(数据查询语言,Data Query Language)

  • 定义:主要用于从数据库中查询数据,不涉及对数据的修改、插入或删除操作。
  • 常用命令SELECT 是 DQL 中最核心的命令,用于指定查询的字段、表以及查询条件等。
  • 示例:从 employees 表中查询所有员工的姓名和薪水:
SELECT name, salary FROM employees;

1.创建数据库支持中文编码 大小写不敏感(完美且严谨)

CREATE DATABASE IF NOT EXISTS users2 DEFAULT CHARSET UTF8  COLLATE utf8_general_ci;

案例:

MariaDB [(none)]> SHOW CREATE DATABASE users2;
±---------±----------------------------------------------------------------------------------------+
| Database | Create Database |
±---------±----------------------------------------------------------------------------------------+
| users2 | CREATE DATABASE users2 /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci */ |
±---------±----------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> show create database users;
±---------±-------------------------------------------------------------------------------------------+
| Database | Create Database |
±---------±-------------------------------------------------------------------------------------------+
| users | CREATE DATABASE users /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */ |
±---------±-------------------------------------------------------------------------------------------+

2.查询我当前在那个数据库中:

select databases();

3.查看数据表结构:

desc + 数据表名;

4.查看表中所有信息:

select  * from + 表名;

指定查询 (比如查询: user  host password)

2. DML(数据操作语言,Data Manipulation Language)

  • 定义:用于对数据库中的数据进行增、删、改操作。
  • 常用命令
    • INSERT:用于向数据库表中插入新的数据记录。
    • UPDATE:用于修改数据库表中已有的数据记录。
    • DELETE:用于从数据库表中删除指定的数据记录。\

1.删除一些无用的用户数据

语法:  delelte  from  数据库.数据表 where  条件;
delete from mysql.user where user='xxw' and host='192.168.153.*';    //删除mysql数据库下user表   user等于xxw  并且 host=192.168.153.*的用户数据

3. DCL(数据控制语言,Data Control Language)

  • 定义:用于控制数据库的访问权限和事务处理,确保数据库的安全性和数据完整性。
  • 常用命令
    • GRANT:用于授予用户或角色对数据库对象(如表、视图等)的特定权限。
    • REVOKE:用于撤销用户或角色已经被授予的权限。
    • COMMIT:用于提交事务,将事务中所做的所有修改永久保存到数据库中。
    • ROLLBACK:用于回滚事务,撤销事务中所做的所有修改。
  • 示例
    • 授予权限:授予用户 user1employees 表的查询权限。
GRANT SELECT ON employees TO user1;
  • 撤销权限:撤销用户 user1employees 表的查询权限。
REVOKE SELECT ON employees FROM user1;

1.案例:给开发创建一个账号 用来连接数据库 和查看数据库信息:

create user test1@'%' identified by '2004129';    //发现可以远程登录但是 无法进行任何操作----

2.接着我们给test1用户赋予查看mysql数据库下的user表权限:

grant select on mysql.user to test1@'%';

2.查询用户权限

备注:默认创建的用户 只有一个USAGE权限(只能登陆)

reate user test1@'%' identified by '2004129';
flush privileges;   //刷新数据库

4. DDL(数据定义语言,Data Definition Language)

  • 定义:用于定义数据库的结构,包括创建、修改和删除数据库对象(如表、视图、索引等)。
  • 常用命令
    • CREATE:用于创建数据库对象,如创建数据库、表、视图等。
    • ALTER:用于修改已存在的数据库对象的结构,如添加列、修改列的数据类型等。
    • DROP:用于删除数据库对象,如删除数据库、表、视图等。
  • 示例
    • 创建表:创建一个名为 employees 的表。
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    salary DECIMAL(10, 2)
);
  • 修改表:向 employees 表中添加一个新的列 department
ALTER TABLE employees ADD COLUMN department VARCHAR(50);
  • 删除表:删除 employees 表。
DROP TABLE employees;

副本:

1.查看数据库编码类型:

show variables like 'char%';

2.查找匹配关键字 like

show databases like 'u%';      //只查找以u开头的数据库

3.创建数据表(数据表严格区分大小写)

CREATE TABLE IF NOT EXISTS `tanke` (   

 id INT,    name VARCHAR(100) NOT NULL,  

  jneng VARCHAR(100) NOT NULL,    

jiage INT NOT NULL,    

PRIMARY KEY (id) ) ENGINE=innodb DEFAULT CHARSET=utf8;   //  PRIMARY KEY (id)  设置key为id//  ENGINE=innoDB  设置引擎为Innodb
///  查看创建表信息     show create table + 表名
// 查看表结构     desc +表名

MariaDB [kings]> desc tanke;

4.删除数据库

 drop database if exists +数据库名;

5.删除数据表

  drop table if exists + 表名

用户管理

1.创建用户:

 create user test@'%' identified by '密码'

2.授权:

grant all select,input,update,create on 数据库.数据表 to test@'%' identified by '密码';

危险:给予最大权限:grant all privileges on 数据库.数据表 to test@‘%’ identified by ‘密码’;

删除用户: drop user 用户名+‘ip’ // 加不加ip都可以 加了更精准
-----------------------------------------------------------------------------------------------------------------------------2025年2/22 23:51

后端代码连接mysql

php连接mysql脚本

环境安装: sudo dnf install mysqlnd php

脚本运行: php + 文件

<?php
// 数据库连接参数
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database_name";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 设置字符集为 UTF-8
if (!$conn->set_charset("utf8")) {
    printf("字符集设置失败: %s\n", $conn->error);
    exit();
}
echo "连接成功,字符集已设置为 UTF-8<br>";

// 执行查询
$sql = "SELECT * FROM your_table_name";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 输出数据
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " - 姓名: " . $row["name"] . "<br>";
    }
} else {
    echo "0 结果";
}

// 关闭连接
$conn->close();
?>

Python连接mysql

安装环境:sudo dnf install python3 python3-devel

安装第三方库: pip install pymysql

import pymysql

# 数据库连接参数
host = 'localhost'
user = 'your_username'
password = 'your_password'
database = 'your_database_name'
charset = 'utf8'

try:
    # 创建数据库连接
    connection = pymysql.connect(
        host=host,
        user=user,
        password=password,
        database=database,
        charset=charset
    )

    print("连接成功,字符集已设置为 UTF-8")

    # 创建游标对象
    with connection.cursor() as cursor:
        # 执行 SQL 查询
        sql = "SELECT * FROM your_table_name"
        cursor.execute(sql)

        # 获取查询结果
        results = cursor.fetchall()

        if results:
            for row in results:
                print(f"ID: {row[0]}, 姓名: {row[1]}")
        else:
            print("0 结果")

except pymysql.Error as e:
    print(f"数据库连接或操作出错: {e}")
finally:
    # 关闭数据库连接
    if 'connection' in locals() and connection.open:
        connection.close()
        print("数据库连接已关闭")

-----------------------------------------------------\\\\2025 2-23 21.00

一.修该数据表

1.修改数据表名字:
rename table 旧的表名 to 新表名;
在这里插入图片描述
2.修改数据表字段

MariaDB [kings]> select * from tanke;
±—±-------±-------±------+
| id | name | jneng | jiage |
±—±-------±-------±------+
| 2 | 刘邦 | 传送 | 18888 |
±—±-------±-------±------+
1 row in set (0.000 sec)
上面 id 就是所谓的字段

3.添加字段
语法:alter table 表名 add 字段名 数据类型 其他…;
alter table tankex add age int;
在这里插入图片描述
在这里插入图片描述

枚举类型 // 13.01 进度条
在这里插入图片描述


http://www.kler.cn/a/558191.html

相关文章:

  • Orcale、MySQL中参数类型的详解和运用场景(带示例)
  • 鸿蒙NEXT应用App测试-通用测试
  • 【龙智】Confluence到期日提醒插件Data Center v1.8.0发布:Confluence 9兼容、表格提醒强化,Slack通知升级
  • XTOP3D的DIC技术在极端条件下的应用解决方案
  • 【蓝桥杯集训·每日一题2025】 AcWing 6134. 哞叫时间II python
  • 1.26作业
  • Java 封装
  • 如何利用AWS算力构建高效AI场景案例:从大模型训练到部署实战
  • Element UI中messageBox怎么区分点击取消按钮关闭弹窗,和点击右上角x号以及点击遮罩层关闭按钮
  • pgAdmin4在mac m1上面简单使用(Docker)
  • [Linux]从零开始的STM32MP157 U-Boot网络命令讲解及相关配置
  • 聊聊 FocusSearch/focus_mcp_sql:Text2SQL 的新玩法
  • web安全:跨站请求伪造 (CSRF)
  • Java四大框架深度剖析:MyBatis、Spring、SpringMVC与SpringBoot
  • anaconda不显示jupyter了?
  • 小红书架构演进与关键技术解析
  • 泛微OA编写后端Rest接口
  • Go 错误处理与调试:面向对象的入门教程
  • 系统架构设计师备考策略
  • 【Java从入门到起飞】数组