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

MySQL基本操作(1)

初始数据库

数据库的基本概念

        数据库一个按照数据结构来组织、存储和管理数据的仓库,换句话说,就是存储数据的仓库。
        为何使用数据库?使用数据库不仅仅为了使数据持久化,还能使得数据能够进行有效的管理,以及提供的各种安全机制能够保证数据的安全,还可以用过远程连接去使用它。对于传统的文件存储数据,共享性差,冗余度大,并且数据独立性较差,同时不利于数据查询和管理,不利于存储海量数据。
        数据库与数据结构之间的关系。数据结构是数据之间的组织和存储方式,数据库可以看作是复杂的数据结构,数据库不仅存储数据,还提供了高效访问和管理大量数据的方法。例如:MySQL的索引使用的B+树这种数据结构。

        数据库管理系统是建立,操作和管理数据库的大型软件,是操作数据库的工具
        数据库服务是指通过网络提供的数据库功能,使用户能够在远程服务器上存储、管理和访问数据。通常包括数据库服务器,网络连接,存储设备等组件。常见的数据库服务包括MySQL,Oracle等。
        SQL是一种特定于数据库的编程语言,用于管理,查询,和操作关系型数据库。
SQL分类:(仅作整理,会在具体情况中展示)

  1. 数据查询语言(DQL):用于从数据库中检索数据,主要命令:select,用于从一个表或多个表检索数据
  2. 数据定义语言(DEL):用于定义和管理数据库的结构,主要命令:create(创建数据库),alter(修改数据库),drop(删除数据库),rename(重新命名数据库)
  3. 数据操作语言(DML):用于添加,修改和删除数据库中的数据。主要命令:insert(插入数据),undate(更新数据),delete(删除数据)
  4. 数据控制语言(DCL):控制数据库的访问权限和事务管理。主要命令:grant(授予权限),revoke(撤销权限)
  5. 事务控制语言(TCL):管理数据库中的事务。主要命令:commit(提交事务),rollback(回滚事务)
  6. 游标控制语言(CCL):管理和操作数据库中的游标。主要命令:declare(声明游标),fetch(获取游标中的数据)

数据库的分类:

关系型数据库:采用关系模型来组织的数据库,使用表来组织数据,每个表都有固定的模式,常见的有:Oracle,MySQL,SQL Sever
非关系型数据库:不使用传统的关系模型的数据库系统,并不基于SQL,支持多种数据模型,易于水平扩展,拥有更高的性能。常见的有redis,hbase

区别:

关系型数据库非关系型数据库
使用SQL一般不基于SQL实现
事务支持支持不支持
复杂操作支持不支持
海量读写操作效率低效率高
基本结构基于表和列,结构固定灵活性较高
使用场景业务方面的联机事务处理(OLTP)系统用于数据的缓存,或基于统计分析的OLAP系统

注:OLAP指的是联机分析处理

MySQL数据库

        MySQL是一种流行的开源关系型数据库管理系统,用于有效的存储,管理和存储数据,因为开源,高效,灵活的特点,成为广泛应用的数据库管理系统。

基本操作:

库操作:

        1.查看库操作:show databases; 

注意:databases应为复数,否则就会报错。

2.创建数据库:从简单入手

CREATE DATABASE [IF NOT EXISTS] 数据库名称 DEFAULT CHARACTER SET 字符集 COLLATE 排序
规则;
CREATE DATABASE test;

        上面的代码表示创建了一个名为test的数据库,其中CREATE 是数据库定义语言,DATABASE表示对数据库进行的操作,test表示创建的数据库的名称。可以利用show databases;用来查看,结果如下:

如果我们再次执行create database test; 会出现以下报错,表示该数据库已存在。
为了避免,我们可以对以上语句加以约束,变为

CREATE DATABASE IF NOT EXISTS test;

表示如果不存在此数据库,便创建,这样子就不会报错。相当于多了一层校验,如果数据库存在,只会发出警告

还有一些是数据库创建时的可选选项,用于指定数据库的特性:

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

CHARCTER SET 表示指定数据库字符的编码格式,通常采用utf8mb4'
COLLATE 用于指定数据库的字符排序规则,通常采用utf8mb4_0900_ai_ci;
ENCRTPTION 用于指定数据库是否加密

CREATE DATABASE IF NOT EXISTS test1 CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci

        如果使用第一种最简单的方式进行创建数据库,那么会使用当前默认的字符集和排序规则。可以利用以下代码查看:

SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';

我的得到的结果如下:

注意:一般不使用关键词作为库名,如果利用关键词作为库名,要把关键词用''(单引号引起来)

3.选择数据库:use test;

use + 想要选中的数据库,只有选中了数据库,才能够对数据库中的表进行操作,其中select database();用于查看当前选中的数据库,如果没有选中数据库报错

4.删除数据库:慎重!!!

drop database + 要删除的库名,如果不存在就加以删除,会报错,加上if exists用于校验最终报一个警告。

常用的数据类型

字符串类型:
 

数据类型大小说明

对应Java类型

CHAR0~255字节固定长度空间char
VARCHAR(size)0~65535字节可变长度字符串String
TEXT0~65535字节长文本数据String
MEDIUMTEXT0~16777215字节中等长度文本数据String
BLOB0~65535字节二进制形式的长文本数据byte[]

CHAR类型占用固定长度的空间,当存储较短的字符串会浪费存储空间,但是好处是提高了检索效率,适用于存储长度相近或者固定长度的数据。

VARCHAR是使用最多的字符串类型,按实际存储内容占用空间,适合存储长度变化较大的字符串,从而可以节省存储空间,但是检索效率低于CHAR,适合存储长度不定的文本数据

数值类型:
 

数据类型大小说明对应Java类型
BIT[(M)]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean
TINYINT1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGint8字节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

对于整形类型的范围:
1.有符号范围:-2^(类型字节数*8-1)到2^(类型字节数*8-1)-1,如int是4字节,就是-2^31~2^31-1
2.无符号范围:0~2(类型字节数*8-1)-1,如int是2^32-1

3.日期时间类型
 

类型说明取值范围
DATEYYYY-MM-dd1000-01-01~9999-12-31
TIMEHH:mm:ss-838:59:59~838:59:59
DATETIMEYY-MM-dd HH:mm:ss1001-01-01 00:00:00.0000000~9999-12-31 23:59:59.99999
YEARYYYY格式年份1901~2155

数据表的操作

1.查看表

先选择使用哪个库,然后输入show tables;来查看当前库中有哪些表,如果库为空,如上图所示

2.创建表

CREATE TABLE [IF NOT EXISTS] 数据表名称(
字段名1 列类型(长度) [修饰属性] [键/索引] [注释],
字段名2 列类型(长度) [修饰属性] [键/索引] [注释],
字段名3 列类型(长度) [修饰属性] [键/索引] [注释],
......
字段名n 列类型(长度) [修饰属性] [键/索引] [注释]
) [ENGINE = 数据表类型][CHARSET=字符集编码] [COMMENT=注释];
create table stu(
id int,
name varchar(20) comment '姓名',
sex varchar(1)
);

其中id,name,sex为自定义的段名,int, varchar为该字段的数据类型(n)中的数字表示最大长度comment关键字增加字段的说明,注意,说明必须被单引号引起来,无论中英文,最后一个字段没有逗号

创建结构相同的表

这里只是复制了表的结构,但是没有复制表的数据

create table if not exists stu1 like stu;

3.查看表结构

desc+要显示的表;
这些查看的是表结构,并不是数据,后四个以后发文介绍

  • Field:属性名
  • Type:属性类型
  • Null:是否允许为空
  • Key:索引类型(键值的类型)
  • Default:默认值
  • Extra:拓展功能

4.修改数据表

4.1修改表名

ALTER TABLE 表名 RENAME AS 新表名;

4.2增加字段

ALTER TABLE 表名 ADD 字段名 列类型(长度) [修饰属性] [键/索引] [注释];

4.3修改字段

-- MODIFY 只能修改字段的修饰属性
ALTER TABLE 表名 MODIFY 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
-- CHANGE 可以修改字段的名字以及修饰属性
ALTER TABLE 表名 CHANGE 字段名 新字段名 列类型(长度) [修饰属性] [键/索引] [注释];

4.4删除字段

ALTER TABLE 表名 DROP 字段名;

5.删除表

drop table stu1;

删除stu1表后的库中存在的表。

可以连续删除,只需要加上,

原来只有两张表,删除之后为空

注意:

  1. 一条语句可以删除多个表,但是一条语句只能删除一个数据库
  2. 删除操作谨慎进行,无论是删除库还是删除表

http://www.kler.cn/news/340327.html

相关文章:

  • 线稿如何快速上色?AI自动线稿上色教程分享
  • expressjs的 post 请求方法,从 body 中取参数
  • quic-go实现屏幕广播程序
  • JVM(学习预热 - 走进Java)(持续更新迭代)
  • 【OpenGauss源码学习 —— (VecAgg)】
  • 昇思学习打卡营学习记录:ResNet50中药炮制饮片质量判断
  • CTFshow 命令执行 web37-web40
  • 深度融合 AR 与 AI 、从 Web2 到 Web3,V3X 定义下一代智能眼镜
  • Java | Leetcode Java题解之第456题132模式
  • 程序bug修复的艺术与科学
  • 【开源项目推荐】开源ERP系统:探索企业管理的无限可能
  • C++语言学习(1): std::endl 在做什么?
  • [论文阅读] DVQA: Understanding Data Visualizations via Question Answering
  • Java数据类型常量
  • 【光追模组】雷神之锤4光追mod,调色并修改光影,并且支持光追效果,游戏画质大提升
  • nginx从入门到精通
  • 系统架构师备考记忆不太清楚的点-信息系统-需求分析
  • C++学习笔记(51)
  • 【算法】- 查询 -平衡二叉树
  • microsoft edge浏览器卡死问题