欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > MySql

MySql

2025/5/1 16:51:58 来源:https://blog.csdn.net/popingcat/article/details/147028668  浏览:    关键词:MySql

首先我们要了解MySql是一个数据库服务客户端,MySql是一个数据库服务端。

存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

数据库存储介质:

  • 磁盘
  • 内存

数据库本质也是文件,只不过这些文件不由程序员来操作而是由数据库服务去mysqld操作!!

它的实现可以帮助人更好的管理数据。

指令的分类:

  • DDL【data definition language】数据定义语言,用来维护存储数据的结构
    代表指令: create,drop,alter
  • DML【data manipulation language】数据操纵语言,用来对数据进行操作
    代表指令: insert,delete,update
    • DML 中又单独分了一个 DQL,数据查询语言,代表指令: select
  • DCL【Data Control Language】数据控制语言,主要负责权限管理和事务
    代表指令: grant,revoke,commit

 存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL 的核心就是插件式存储引擎,支持多种存储引擎

常用的两个存储引擎:

InnoDB

  • 特点:支持完整 ACID 事务特性,提供事务隔离级别防止脏读、不可重复读、幻读等;采用行级锁定,降低锁冲突概率,适合高并发写操作;支持外键约束维护数据参照完整性;通过重做日志和撤销日志保证系统崩溃时的数据恢复;使用聚簇索引,主键索引和数据存储在一起 。
  • 适用场景:适用于高并发事务系统,如银行交易系统(大量插入、更新且需保证事务完整性和隔离性 )、电子商务平台(频繁订单插入和库存更新,保证数据一致性 )。

MyISAM

  • 特点:不支持事务和外键;采用表级锁定,读写操作会锁定整个表,并发性能差;支持全文索引,利于高效全文搜索;存储格式紧凑,占用空间小;在只读或读多写少场景下性能好。
  • 适用场景:常用于只读数据库(如数据仓库、日志存储系统 ),以及需要快速全文搜索的场景。

数据库基本操作:

数据库操作

  • 查看所有数据库show databases;
  • 创建数据库create database 数据库名; ,如create database testdb;
  • 删除数据库drop database 数据库名; ,例如drop database testdb;
  • 选择数据库use 数据库名; ,比如use testdb; ,用于切换到指定数据库进行后续操作。

数据表操作

  • 查看当前数据库中的所有表show tables;
  • 创建表create table 表名 (列名1 数据类型1, 列名2 数据类型2, ...); 。例如create table users (id int, name varchar(50));
  • 查看表结构describe 表名; 或desc 表名; ,如describe users;
  • 修改表结构
    • 添加列alter table 表名 add 列名 数据类型; ,例如alter table users add age int;
    • 删除列alter table 表名 drop column 列名; 。
  • 删除表drop table 表名; ,如drop table users;
  • 重命名表rename table 原表名 to 新表名; ,例如rename table users to users_new;

数据操作

  • 插入数据
    • 指定列插入insert into 表名 (列名1, 列名2, ...) values (值1, 值2, ...); ,比如insert into users (id, name) values (1, 'John');
    • 不指定列插入(按表结构顺序)insert into 表名 values (值1, 值2, ...);
    • 插入多条数据insert into 表名 (列名1, 列名2, ...) values (值1, 值2, ...), (值3, 值4, ...);
  • 查询数据select 列名1, 列名2, ... from 表名 where 条件; 。
    • 查询所有列select * from 表名; ,如select * from users;
    • 条件查询select * from users where age > 18;
    • 去重查询select distinct 列名 from 表名;
    • 排序查询:升序select * from 表名 order by 列名 asc; ,降序select * from 表名 order by 列名 desc;
    • 限制结果行数select * from 表名 limit 行数; ,如select * from users limit 5; ,获取前 5 条记录。
    • 分页查询select * from 表名 limit 偏移量, 行数; ,比如select * from users limit 10, 5; ,获取从第 11 条开始的 5 条记录 。
  • 更新数据update 表名 set 列名1 = 值1, 列名2 = 值2, ... where 条件; ,例如update users set age = 20 where name = 'John';
  • 删除数据delete from 表名 where 条件; ,如delete from users where age < 18; ,若不加where 条件会删除表中所有数据。

用户与权限管理

  • 创建用户create user '用户名'@'主机地址' identified by '密码'; ,比如create user 'testuser'@'localhost' identified by 'testpass';
  • 授予权限grant 权限列表 on 数据库名.表名 to '用户名'@'主机地址'; ,例如grant all privileges on testdb.* to 'testuser'@'localhost'; (赋予用户对 testdb 数据库所有表的所有权限)。
  • 查看用户权限show grants for '用户名'@'主机地址';
  • 撤销权限revoke 权限列表 on 数据库名.表名 from '用户名'@'主机地址';
  • 删除用户drop user '用户名'@'主机地址';

数据备份与恢复

  • 备份数据库mysqldump -u用户名 -p 数据库名 > 备份文件名.sql ,例如mysqldump -u root -p testdb > testdb_backup.sql
  • 恢复数据库:先创建空数据库,再执行mysql -u用户名 -p 数据库名 < 备份文件名.sql 。 如mysql -u root -p testdb < testdb_backup.sql 。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词