MySQL(1)—— 基本概念和操作

本文主要讨论MySQL的内容。

什么是MySQL?

MySQL 是一款开源、跨平台、基于关系模型的关系型数据库管理系统(RDBMS),使用结构化查询语言(SQL) 进行数据管理。它具有高性能、高可靠性、易用性、可扩展性等特点,广泛应用于 Web 应用、企业系统、云计算等领域,是目前全球主流的开源关系型数据库。

主流的数据库可以分为两大类:关系型数据库和非关系型数据库。

1、关系型数据库

  • MySQL:是一款开源的关系型数据库,是目前主流的选择。
  • Oracle Database:商用关系型数据库,面向高并发、高安全、高可用的企业级核心业务。需要付费,一般在大公司中才使用。
  • SQL server:微软推出的商用关系型数据库,适用于 Windows 生态企业应用。

2、非关系型数据库

  • Redis:开源内存数据结构存储,用作数据库、缓存、消息中间件。
  • MongoDB:开源文档型 NoSQL 数据库,面向高可扩展性、灵活结构的应用场景。

SQL语言

SQL本身是针对数据库操作的语言,和数据库其实是两个概念。SQL语言分为三种类型:DDL、DML和DCL。

1、DDL

DDL(data definition language):数据定义语言,用来维护存储数据的结构。

代表指令有:create 、drop、alter等

2、DML

DML(data manipulation language):数据操作语言,用来对数据进行操作。

代表指令有:insert、delete、update等

3、DCL

DCL(data control language):数据控制语言,主要负责权限管理和事务。

代表指令有:grant、revoke、commit等


数据库的基本操作

1、查询数据库

在实际工作中,在创建数据库之前,由于不能重复命名,在团队协作中可能会出现已经创建该名字的数据库,所以在创建之前需要检查一下已有的数据库。

sql 复制代码
show databases;

使用上面的命令可以查看当前已经创建好的数据库。运行后可以看到如下:

如图,目前已经有了6个数据库并显示出了它们的名字。其中,information_schema、mysql、performance_schema和sys四个数据库是MySQL自带的数据库,记录的是一些关于它本身的配置、性能、系统变量信息等。

2、创建数据库

创建数据库的语句具体如下:

sql 复制代码
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] DB_NAME [create_option]

create_option:[DEFAULT]{
    CHARACTER SET [=] charset_name
  | COLLATE [=] collation_name
  | ENCRYPTION [=] {'Y' | 'N'}
}

先来看第一行代码:

sql 复制代码
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] DB_NAME [create_option]

CRAETE关键字表示创建,而 { } 中的DATABASE和SCHEMA都表示数据库,两个选一个来进行书写;

\] 中表示的为可选项。此处的 IF NOT EXISTS表示如果不存在则创建数据库。 ```sql create_option:[DEFAULT]{ --字符集 CHARACTER SET [=] charset_name --排序规则 | COLLATE [=] collation_name --是否加密 | ENCRYPTION [=] {'Y' | 'N'} } ``` 下面我们创建一个test_one的数据库: ```sql CREATE DATABASE test_one; ``` 如果配置文件中设置了大小写不敏感,则关键字使用小写也能实现同样的功能。 ```sql create databese test_one; ``` 创建好之后可以看到打印出了 Query OK;说明创建成功。我们也可以查询一下是否创建成功: ![](https://i-blog.csdnimg.cn/direct/cb9c35b3159642cbab1ad05ce2b59b0d.png) 此外,我们也可以使用上面\[ \]中的指令,例如: ```sql create databasxe if not exists test_db; ``` ![](https://i-blog.csdnimg.cn/direct/7db35028b6b44789af5bb96a78dacf27.png) 此外,在创建时还可以手动指定字符集和排序规则: ```sql create database if not exists test_two character set utf8mb4 collate utf8mb4_0900_ai_ci; ``` 如果不清楚默认的字符集,我们可以使用如下的指令进行查询: ```sql show variables like '%character%'; ``` ![](https://i-blog.csdnimg.cn/direct/2d07924cefe3484a82e33947e42ba765.png) ### 3、删除数据库 有创建也会有删除。删除数据库的语法如下: ```sql DROP DATABASE [IF EXISTS] db_name; ``` 下面我们试着把上面创建的test_one数据库删除: ```sql drop database if exists test_one; ``` ![](https://i-blog.csdnimg.cn/direct/48e186674cb74f47bf0deb591fce76a9.png) > **【注意】删除数据库是一个非常危险的操作,一定要慎用!** *** ** * ** *** ## 常用数据类型 |--------------|------------|-----------------------------------|--------------------------------| | 数据类型 | 大小 | 说明 | 对应 | | BIT(M) | M指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2......M-1 | 常用Boolean对应BIT,此时默认是1位,即只能存0和1 | | TINYINT | 1字节 | - | Byte | | SMALLINT | 2字节 | - | short(短整形) | | INT | 4字节 | - | Integer | | BIGINT | 8字节 | - | Long | | FLOAT(M,D) | 4字节 | 单精度,M指定长度,D指定小数位数,会发生精度丢失 | Float | | DOUBLE(M,D) | 8字节 | - | Double | | DECIMAL(M,D) | M/D最大值\*2 | 双精度,M指定长度,D表示小数点位数,精确数值;一般用于表示金额 | BigDecimal | | NUMERIC(M,D) | M/D最大值\*2 | 和DECIMAL相同 | BigDecimal | *** ** * ** *** ## 字符串类型 |---------------|--------------|-----------------------------------|----------| | 数据类型 | 大小 | 说明 | 对应 | | VARCHAR(SIZE) | 0-65535字节 | 可变长度字符串;可以说是最常用的一种字符串类型,可以指定长度是多少 | String | | TEXT | 0-65535字节 | 长文本数据 | String | | MEDIUMTEXT | 0-16777215字节 | 中等长度文本数据 | String | | BLOB | 0-65535字节 | 二进制形式的长文本数据 | byte\[\] | *** ** * ** *** ## 日期类型 |-----------|-----|-----------------------------| | 数据类型 | 大小 | 说明 | | DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索以及转换 | | TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换 | *** ** * ** *** ## 表的操作 #### 什么是表? 在数据库里,表(Table)就是用来存放数据的 "结构化表格",类似于 Excel 里的一张工作表。一个表的数据结构包含三个部分: * 表名 * 列(字段):每一列是一种属性 * 行(记录):每一行是一条完整数 ### 1、选择数据库 在创建表之前,我们需要选择在哪个数据库中创建表;在test_db中创建该表,要先选择该数据库: ```sql --切换当前操作的数据库为 test_db use test_db; --查询当前正在使用的数据库名称 select database(); ``` ![](https://i-blog.csdnimg.cn/direct/ed3b310e710147cfb5d5ce0737711883.png) ### 2、创建表 创建一个表的语法规则如下: ```sql CREATE TABLE table_name ( field1 datatype, field2 datatype, --... fieldn datatype ); --注意使用的是()! ``` 根据这个规则,下面我们试着创建一个名为student的学生表,表中包含两个字段,其中id表示编号,name表示姓名,长度为50: ```sql create table studengt ( id bigint, name varchar(50), ); ``` ![](https://i-blog.csdnimg.cn/direct/2e3dc3f2803541b38290c179b870ab4d.png) 之后使用如下命令查看所有的表: ```sql show tables; ``` ![](https://i-blog.csdnimg.cn/direct/34fbd95dd9ea46b4a27060fe6f42ede6.png) ### 3、查看表结构 查看表结构使用下面的命令: ```sql desc 表名; ``` ![](https://i-blog.csdnimg.cn/direct/ba4f32d9354240e78b42655e901c64cf.png) * Field:表中的字段 * Type:字段的数据类型 * Null:当前字段是否允许null * key:键值的类型 * Default:当前列的默认值 * Extra::其他扩展内容 ### 4、删除表 删除表的语法如下: ```sql DROP [TEMPORARY] TABLE [IF EXISTS] tb_name [,tb_name]; ``` 我们可以试着使用一下: ```sql drop table if exists test; ``` ![](https://i-blog.csdnimg.cn/direct/9a8ab3b1b16540cfa5c26142133e4b06.png) 由于我们没有这个表,有if exists就会报出一条警告。查看警告使用如下的命令: ```sql SHOW WARNINGS; ``` ![](https://i-blog.csdnimg.cn/direct/59643ab6d7c74b13a078c13156dd27b4.png) > **【注意】删除表的操作同样要慎用!**

相关推荐
zongzizz2 小时前
Oracle 11g 两节点rac在机房断电重启后PL/SQL和客户端连接数据库报错ORA-12541
数据库·oracle
qq_417695052 小时前
实战:用OpenCV和Python进行人脸识别
jvm·数据库·python
身如柳絮随风扬2 小时前
什么是左匹配规则?
数据库·sql·mysql
xinhuanjieyi2 小时前
ruoyimate导入sql\antflow\bpm_init_db.sql报错
android·数据库·sql
哈__2 小时前
从内核阻断 SQL 注入:金仓 KingbaseES SQL 防火墙技术解析与实践
数据库·sql
jiankeljx2 小时前
mysql之如何获知版本
数据库·mysql
_oP_i3 小时前
SQLBot 系统数据库字段
数据库
我真会写代码3 小时前
Redis高频面试题(含标准答案,覆盖基础+进阶+实战)
数据库·redis·缓存
2301_793804693 小时前
用Python和Twilio构建短信通知系统
jvm·数据库·python