首页 > 数据库 >MySQL数据库基本操作命令

MySQL数据库基本操作命令

时间:2025-01-19 15:03:57浏览次数:3  
标签:NO 数据库 MySQL sec mysql test 基本操作

数据库基本操作

数据库可以看作是一个专门存储数据对象的容器,每一个数据库都有唯一的名称,并且数据库名称都是有实际意义的,这样就可以清晰的看出每一个数据库用来存放什么数据。在MySQL数据库中存在系统数据库和自定义数据库,系统数据库是安装在MySQL后系统自带的数据库,自定义数据库是由用户定义创建的数据库。

1、查看数据库

在MySQL中,可使用SHOW DATABASES语句来查看或者显示当前用户权限范围内的数据库。

SHOW DATABASES [LIKE'数据库名'];

LIKE从句是可选项,用于匹配自定的数据库库名称。LIKE从句可以部分匹配也可以完全匹配。

数据库名由单引号’'包围

案例1:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| grade              |
| information_schema |
| mysql              |
| newschema          |
| performance_schema |
| sakila             |
| student            |
| sys                |
| test_db            |
| work               |
| world              |
+--------------------+
11 rows in set (0.00 sec)

可以发现,在上面的列表中有 6 个数据库,它们都是安装 MySQL 时系统自动创建的,其各自功能如下:

information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息和分区信息等。

mysql:MySQL 的核心数据库,类似于 SQL Server 中的 master 表,主要负责存储数据库用户、用户访问权限等 MySQL 自己需要使用的控制和管理信息。常用的比如在 mysql 数据库的 user 表中修改 root 用户密码。

performance_schema:主要用于收集数据库服务器性能参数。

sakila:MySQL 提供的样例数据库,该数据库共有 16 张表,这些数据表都是比较常见的,在设计数据库时,可以参照这些样例数据表来快速完成所需的数据表。

sys:sys 数据库主要提供了一些视图,数据都来自于performation_schema,主要是让开发者和使用者更方便地查看性能问题。

world:world 数据库是 MySQL 自动创建的数据库,该数据库中只包括 3 张数据表,分别保存城市,国家和国家使用的语言等内容

案例2:


mysql> show databases like'sakila';
+-------------------+
| Database (sakila) |
+-------------------+
| sakila            |
+-------------------+
1 row in set (0.00 sec)



## 2、创建数据库

在MySQL中可以使用CREATE DATABASE语句创建数据库:

CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>]
[[DEFAULT] COLLATE <校对规则名>];

<数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在MySQL 中不区分大小写。

IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。

[DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。

[DEFAULT] COLLATE:指定字符集的默认校对规则。

MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念。字符集是指一系列符号以及符号对应的编码的集合,比如英文字母可以使用 ASCII 编码,中文可以使用 GBK 或者 UTF-8 编码,校对规则则是指一种比较字符的规则,在排序或者比较字符的时候使用。

每个字符集都会对应多个校对规则,是一对多的关系,而且每个字符集会有默认的校对规则,当我们在创建数据库或者表时,如果只指定字符集,则使用字符集对应的默认校对规则。

cs 大小写敏感

ci 大小写不敏感

bin 二进制编码比较

#查看支持的字符集

mysql> show character set;
+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
| armscii8 | ARMSCII-8 Armenian              | armscii8_general_ci |      1 |
| ascii    | US ASCII                        | ascii_general_ci    |      1 |
| big5     | Big5 Traditional Chinese        | big5_chinese_ci     |      2 |
| binary   | Binary pseudo charset           | binary              |      1 |

character 字符集名称
description 字符集描述
default collation 默认校对规则
maxlen 		最大长度
#查看支持的校对规则

mysql> show collation;
+-----------------------------+----------+-----+---------+----------+---------+---------------+
| Collation                   | Charset  | Id  | Default | Compiled | Sortlen | Pad_attribute |
+-----------------------------+----------+-----+---------+----------+---------+---------------+
| armscii8_bin                | armscii8 |  64 |         | Yes      |       1 | PAD SPACE     |
| armscii8_general_ci         | armscii8 |  32 | Yes     | Yes      |       1 | PAD SPACE     |
collation	校对规则名称
id			校对规则编号
default		是否为默认校对规则
compiled	是否系统自带
sortlen 与字符集中表示字符串进行排序所需的内存有关
pad_attribute 末尾空格是否参与比较

#查看默认字符集和校对规则

mysql> show create database test_db;
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database
                       |
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
| test_db  | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

utf8和utf8mb4的区别:

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的

Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符,如表情等等(utf8的缺点)。

案例1:

##创建test数据库

mysql> create database test;
Query OK, 1 row affected (0.01 sec)

##查看创建的test数据库
mysql> show databases  like 'test' ;
+-----------------+
| Database (test) |
+-----------------+
| test            |
+-----------------+
1 row in set (0.00 sec)

案例2:

#创建test01、test02数据库
mysql> create database test01;
Query OK, 1 row affected (0.01 sec)

mysql> create database test02;
Query OK, 1 row affected (0.01 sec)

#通过通配符查看

mysql> show databases like'test%';
+------------------+
| Database (test%) |
+------------------+
| test             |
| test01           |
| test02           |
| test_db          |
+------------------+
4 rows in set (0.00 sec)

#通过_通配符查看

mysql> show databases like'test_%';
+-------------------+
| Database (test_%) |
+-------------------+
| test01            |
| test02            |
| test_db           |
+-------------------+
3 rows in set (0.00 sec)

案例3:

##如果目标数据库testdb不存在责创建
mysql> create database if not exists testdb;
Query OK, 1 row affected (0.01 sec)

##查看创建的数据库


mysql> show databases like 'testdb';
+-------------------+
| Database (testdb) |
+-------------------+
| testdb            |
+-------------------+
1 row in set (0.00 sec)

案例4:

mysql> create database if not exists testdb_char character set gb2312 collate gb2312_chinese_ci;
Query OK, 1 row affected (0.01 sec)

mysql> show create database testdb_char;
+-------------+-----------------------------------------------------------------------------------------------------------+
| Database    | Create Database
  |
+-------------+-----------------------------------------------------------------------------------------------------------+
| testdb_char | CREATE DATABASE `testdb_char` /*!40100 DEFAULT CHARACTER SET gb2312 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+-------------+-----------------------------------------------------------------------------------------------------------+



3、修改数据库

在MySQL数据库中只能对数据库使用的字符集和校对规则进行修改。

在MySQL中,使用ALTER DATABASE来修改已经被创建或者存在的数据库相关的参数。

ALTER DATABASE [数据库名] {
[ DEFAULT ] CHARACTER SET <字符集名> |
[ DEFAULT ] COLLATE <校对规则名>}

ALTER DATABASE 用于更改数据库的全局特性。

使用 ALTER DATABASE 需要获得数据库 ALTER 权限。

数据库名称可以忽略,此时语句对应于默认数据库。

CHARACTER SET 子句用于更改默认的数据库字符集。

案例1:

mysql> ALTER DATABASE testdb_char
    ->     DEFAULT CHARACTER SET utf8mb4
    ->     COLLATE utf8mb4_unicode_ci;
Query OK, 1 row affected (0.01 sec)

mysql> show create database testdb_char;
+-------------+---------------------------------------------------------------------------------------------------------------------------------------+
| Database    | Create Database
                              |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------+
| testdb_char | CREATE DATABASE `testdb_char` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)



4、删除数据库

当数据库不在使用时应该将其删除,以确保数据库存储空间中存放的是有效数据,删除数据库是将已经存在的数据库从磁盘空间上清楚,清楚之后,数据库中的所有数据将一同被删除。

在MySQL中,使用DROP DATABASE。

DROP DATABASE [IF EXISTS]<数据库名>

注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统

数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。

案例:


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| grade              |
| information_schema |
| mysql              |
| newschema          |
| performance_schema |
| sakila             |
| student            |
| sys                |
| test               |
| test01             |
| test02             |
| test_db            |
| testdb             |
| testdb_char        |
| testsb             |
| work               |
| world              |
+--------------------+
17 rows in set (0.00 sec)

mysql> drop database testdb_char;
Query OK, 0 rows affected (0.02 sec)

mysql> drop database testdb_char;
ERROR 1008 (HY000): Can't drop database 'testdb_char'; database doesn't exist


5、选择数据库

在MySQL中就有很多是系统自带的数据库,在操作之前就必须要选择一个数据库。

在MySQL中,使用USE语句来完成一个数据库到另一个数据库的跳转。

当时用CREATE DATABASE 语句创建数据库后,该数据库不会自动成为当前数据库,需要使用use语句来指定当前数据库。

USE <数据库名>

案例:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| grade              |
| information_schema |
| mysql              |
| newschema          |
| performance_schema |
| sakila             |
| student            |
| sys                |
| test               |
| test01             |
| test02             |
| test_db            |
| testdb             |
| testdb_char        |
| testsb             |
| work               |
| world              |
+--------------------+
17 rows in set (0.00 sec)

mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

mysql> select database();
+------------+
| database() |
+------------+
| test       |
+------------+
1 row in set (0.00 sec)



6、数据库引擎

MySQL数据库引擎是数据库管理系统中用于存储,处理和保护数据的核心服务。不同的数据库引擎具有各自的特点,如存储机制,索引技巧,锁的粒度等。选择合适的数据库引擎可以显著改善服务器端的存储性能。

存储引擎就是如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法。因为在关系数据库中是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

在oracle和sql server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的,而MySQL数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己需要编写自己的存储引擎。

6.1常见的数据库引擎

InnoDB:这是MySQL的默认存储引擎,支持ACID事务、行级锁定和外键。InnoDB是为处理大容量数据而设计的,具有高性能、高并发和崩溃恢复能力。它适用于需要频繁更新和高事务完整性的应用场景

MyISAM:MyISAM引擎提供高速存取的表,但不支持事务处理或行级锁定。它适合于插入和查询

为主的应用,如Web和数据仓库环境。MyISAM表存储在磁盘上,每个表由三个文件组成:格式文件(.frm)、数据文件(.MYD)和索引文件(.MYI)

MEMORY:MEMORY引擎使用内存中的数据创建表,提供快速的数据访问。这种引擎适用于临时存储和需要快速读取的小型表。但是,MEMORY表中的数据在MySQL服务重启后会丢失

6.2查看和设置存储引擎

查看MySQL支持的存储引擎,可以使用SHOW ENGINES命令


mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| ndbinfo            | NO      | MySQL Cluster system information storage engine                | NULL         | NULL | NULL       |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| ndbcluster         | NO      | Clustered, fault-tolerant tables                               | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
11 rows in set (0.01 sec)

查看默认的存储引擎,可以使用SHOW VARIABLES LIKE 'default_storage_engine’命令


mysql> show variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set, 1 warning (0.01 sec)

创建表时,可以通过engine关键字来指定存储引擎:

CREATE TABLE mytable (...) ENGINE=InnoDB;

修改表的引擎:

ALTER TABLE mytable ENGINE=新引擎;

6.3存储引擎的选择

选择合适的存储引擎对于数据库的性能和功能至关重要。例如,如果应用程序需要事务支持和高并发,innoDB是一个很好的选择。如果应用程序主要进行读操作,MyISAM可能会提供好的性能。对于临时数据和快速访问,MEMORY引擎可能是最佳选择。在选择存储引擎时,需要考虑数据安全性,并发性,事务处理和性能需求。

案例:

##查看当前数据库的表
mysql> show tables;
Empty set (0.00 sec)

##指定存储引擎创建表
mysql> create table test_table(id int primary key auto_increment,name varchar(128) not null )engine=MyISAM;
Query OK, 0 rows affected (0.01 sec)

##查看创建的表
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test_table     |
+----------------+
1 row in set (0.00 sec)

##查看表的详细信息
mysql> show create table test_table;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table      | Create Table
                                                                                |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test_table | CREATE TABLE `test_table` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(128) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

##修改表的存储引擎
mysql> alter table test_table engine=innodb;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

##查看修改后的存储引擎
mysql> show create table test_table;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table      | Create Table
                                                                                |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test_table | CREATE TABLE `test_table` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(128) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

标签:NO,数据库,MySQL,sec,mysql,test,基本操作
From: https://blog.csdn.net/2301_81548590/article/details/145168944

相关文章

  • MySQL——DQL基本查询 聚合函数 分组查询 排序查询 分页查询
    1.3DQL语法DQL:数据查询语言,用来查询数据库表中的记录。DQL基本查询1.查询多个字段select字段1,字段2,字段3...from表名;案例查询指定字段nameworknoageselectname,workno,agefromemp;2.查询所有字段select*from表名;select*fromemp;3.设置别名select字段1a......
  • SpringBoot体育场馆在线预约系统ig5br(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,场地类别,场地信息,场地预约,取消预约,统计数据开题报告内容一、研究背景与意义随着人们健康意识的增强,体育锻炼已成为现代人日常生活的重要组成部分。体......
  • Golang结合MySQL和DuckDB提高查询性能
    要在Golang中组合MySQL和DuckDB以提高查询性能,请考虑使用混合查询执行方法。这种方法利用了MySQL强大的事务管理和DuckDB闪电般的分析处理能力。本文介绍如何充分利用两者的方法。各取所长用MySQL处理事务,用DuckDB处理分析MySQL应该处理常规的INSERT、UPDATE和DELETE操......
  • 免费送源码:Java+ssm+MySQL SSM宁夏地区自助旅游管理系统 计算机毕业设计原创定制
     摘 要本论文主要论述了如何使用SSM框架开发一个自助旅游管理系统,严格按照软件开发流程进行各个阶段的工作,采用B/S架构JAVA技术,面向对象编程思想进行项目开发。在引言中,作者将论述自助旅游管理系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各......
  • 宿舍管理信息系统【控制台+MySQL】(Java课设)
      客官进来看一眼呗,有惊喜!【帮你解决烦恼】:Java课设和计Java毕设太难不会做怎么办?系统类型控制台类型+Mysql数据库存储数据使用范围适合作为Java课设!!!部署环境jdk1.8+Mysql8.0+Idea或eclipse+jdbc运行效果本系统源码地址:宿舍管理信息系统【控制台+MySQL】(Java课设)资......
  • 关系型数据库与非关系型数据库(NoSQL)的主要区别是什么?
    关系型数据库(RDBMS)与非关系型数据库(NoSQL)之间存在多个显著的区别,这些区别主要体现在数据模型、事务处理、扩展性、性能和适用场景等方面。数据模型:关系型数据库采用基于表格的二维数据模型,数据以行和列的形式存储,通过表之间的关系(如外键)来维护数据的一致性和完整性。这种结......
  • 如何在数据库中实现高效的数据备份和恢复策略?
    在数据库中实现高效的数据备份和恢复策略,需要综合考虑多种因素,包括备份类型、备份频率、存储位置、恢复策略以及自动化程度等。以下是详细的实现方法:1. 备份策略备份策略是确保数据安全的基础。常见的备份策略包括全量备份、增量备份和差异备份:全量备份:对整个数据库进行完......
  • MySQL与DevOps的结合:持续集成与持续部署
    MySQL与DevOps的结合:持续集成与持续部署亲爱的亦菲彦祖,欢迎来到第十八篇关于MySQL的博客!在前十七篇文章中,我们深入探讨了MySQL的基础知识、数据库设计、性能优化、索引、事务管理、安全管理、数据备份与恢复、与PHP的集成、高可用性架构设计、存储过程和触发器的应用、数据可......
  • 基于php的旅游网站旅游系统广西旅游网站php+mysql毕业设计php源码获取课程设计毕设指
    一、功能介绍该网站主题是旅游相关,实现了旅游景点、美食以及酒店的预定功能,并且实现了在线论坛。前台功能首页:旅游信息、酒店信息、美食信息旅游美食:列表、详情、下单酒店:列表、详情、下单景点:列表、详情、下单购物车、去下单、订单信息、评论在线论坛用户中心:我的订......
  • Mysql--实战篇--连接池(连接池原理,HikariCP、C3P0、Druid和DBCP等)
    连接池(ConnectionPool)是数据库应用程序中的一种优化技术,用于管理和复用数据库连接。通过连接池,应用程序可以避免频繁创建和销毁数据库连接的开销,从而提高性能和资源利用率。在Java应用程序中,常用的MySQL连接池实现包括HikariCP、C3P0、Druid和DBCP等。1、连接池的工作原理......