【MySQL】初识数据库

目录

♫什么是数据库

 

♫数据库的分类

♪关系型数据库

♪非关系型数据库

♫显示已有的数据库

 ♫创建数据库

 

 ♫删除数据库

♫使用数据库

♫数据类型

♪数值类型

♪字符串类型

♪日期类型

 ♫创建表

 

 ♫查看表

♪查看当前数据库下所以表:

♪查看指定表结构:

 ♫删除表


♫什么是数据库

数据库是使用各种数据结构设计出来的一种用于存储、组织和管理数据的软件系统。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。

注:数据库中的数据通常是存储在硬盘或固态硬盘等持久性存储介质中,故数据库中的数据能持久化保存,断电后也不会丢失。

 

♫数据库的分类

数据库可以分为关系型数据库和非关系型数据库两种:

♪关系型数据库

关系型数据库(RDBMS)是一种基于关系模型的数据库。其中数据以表格的形式组织并保留在多个相关联的表格之间的关系中,每个表格代表一个实体类别(如顾客、产品或订单),并且每个表格之间的关系通过共享键实现。关系型数据库使用结构化查询语言(SQL)进行数据访问和管理。常见的非关系型数据库有MySQL、Oracle和Microsoft SQL Server。

♪非关系型数据库

非关系型数据库是一类非关系型的数据存储技术,与关系型数据库相对。非关系型数据库通常采用键值对或文档形式存储数据,具有可扩展、高可用、高性能和灵活的特点。非关系型数据库不要求使用SQL语言进行数据访问和管理。常见的非关系型数据库有MongoDB、Cassandra、Redis、Couchbase等。

知道了数据库是什么之后 ,我们接下来就来以关系型数据库MySQL为例,学习管理关系型数据库的SQL语言~

♫显示已有的数据库

MySQL中可以有多个数据库,每个数据库可以有多个表,每个表可以有多个行和列,我们先用SQL来查询当前MySQL中已有的数据库:

语法:show databases;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

表格里的四个数据库就是MySQL自带的系统数据库,通常情况下我们是不会直接使用这四个数据库的,也不介意去动这几个数据库,不然可能会出现一系列bug。

 ♫创建数据库

既然系统库不能动,那我们就得自己来创建个数据库:

语法:create database 数据库名;

mysql> create database test;
Query OK, 1 row affected (0.01 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.03 sec)

可以看到,我们已经创建好了一个test的数据库了。

注:数据库名不能是SQL关键字,但可以是反引号括起来的关键字(如:`table`)。

在创建数据库的时候,我们还可以指定所建数据库采用的字符集以及字符集的校验规则:

语法:create database 数据库名 character set 字符集 collate 校验规则;

mysql> create database test2 character set utf8mb4 collate utf8_general_ci;
Query OK, 1 row affected (0.02 sec)
注:
①.当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,默认校验规则:utf8_ general_ ci。
②.我们可以通过 show charset; 来查询MySQL中的字符集,通过 show collation; 来查询MySQL中的校验规则。
③.由于字符集和比较规则是互相有联系的,如果我们只修改了字符集,比较规则也会跟着变化,如果只修改了比较规则,字符集也会跟着变化(只修改字符集,则比较规则将变为修改后的字符集默认的比较规则;只修改比较规则,则字符集将变为修改后的比较规则对应的字符集)。
.MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是
使用utf8mb4。
在创建数据库时,若是创建同名的数据库会报错:
mysql> create database test;
ERROR 1007 (HY000): Can't create database 'test'; database exists

加上if not exists的可以将错误转换为警报:

语法:create database if not exists test;

mysql> create database if not exists test;
Query OK, 1 row affected, 1 warning (0.00 sec)

 ♫删除数据库

创建的数据库若是不需要了,也可以删除它,但是刷了就木有了,需要谨慎执行这一指令:

语法:drop database 数据库名;

mysql> drop database test2;
Query OK, 0 rows affected (0.09 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

这样就已经将 test2 数据库删除了。

当然,若是删除不存在的数据库会报错:

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

加上if exists可以将错误转换为警报:

语法:drop database if exists 数据库名;

mysql> drop database if exists test3;
Query OK, 0 rows affected, 1 warning (0.00 sec)

♫使用数据库

要创建表需要先选定某个数据库:

语法:use 数据库名;

mysql> use test;
Database changed

选定了test的数据库后,接下来的操作就都在该数据库里了。

数据库里的表每一列都是带有类型是(所有行所对应的列所对应的类型必须一致),故我们要创建表得先了解下MySQL的数据类型。

♫数据类型

♪数值类型

数据类型大小说明对应Java类型对应C类型
BIT[(M)]M为指定位数,默认为1
二进制数,M的 范围从 1 64, 存储数值范围从0 2^M-1
常用 Boolean 对应BIT ,此时默认是1 位,即只能存 0 1
char[]
TINYINT1字节Bytesigned char
SMALLINT2字节Shortshort int
INT4字节Integerint
BIGINT8字节Longlong long int
FLOAT(M,D)4字节
单精度, M 指定长度, D 指定小数位数。会发生精度丢失
Floatfloat
DOUBLE(M,D)8字节Doubledouble
DECIMAL(M,D)M/D的最大值+2双精度,M指定长度,D指定小数位数。精确数值BigDecimalchar[]
NUMERIC(M,D)
M/D 最大
+2
与DECIMAL一样BigDecimalchar[]

注:数值类型也可指定为unsigned,表示无符号类型

♪字符串类型

数据类型大小说明对应Java类型对应C类型
VARCHAR(SIZE)0~65535字节可变长度字符串Stringchar[]
TEST0~65535字节长文本数据Stringchar[]
MEDIUMTEXT0~16777215字节中等长度文本数据Stringchar[]
BLOB0~65535字节二进制形式的长文本数据Byte[]char[]

♪日期类型

数据类型大小说明对应Java类型对应C类型
DATETIME8字节
范围从 1000 9999 年,不会进行时区的
检索及转换
java.util.Date
java.sql.Timestamp
MYSQL_TIME
TIMESTAMP4字节
范围从 1970 2038 年,自动检索当前时区并进行转换。
java.util.Date
java.sql.Timestam
MYSQL_TIME
注:由于TIMESTAMP的时间戳即将用尽,故更建议使用DATETIME

知道了数据类型后,就可以在指定的数据库中创建表了。

 ♫创建表

语法:create table 表名 (列名1 类型1, 列名2 类型2, 列名3 类型3);

mysql> create table student(->     id int,->     name varchar(20),->     age int-> );
Query OK, 0 rows affected (0.03 sec)
还可以使用 comment 增加字段说明:
语法: create table 表名 (列名1 类型1 comment '注释内容', 列名2 类型2 comment '注释内容', 列名3 类型3 comment '注释内容');
mysql> create table student2(->     id int comment '序列号',->     name varchar(20) comment '姓名',->     age int comment '年龄'-> );
Query OK, 0 rows affected (0.05 sec)

注:comment只能在创建表时使用,其他时候想要注释可以使用-- (--后面还有个空格)或#/* */来表示。(-- 和#都表示单行注释,/* */表示多行注释)

创建表时也可以添加if not exists预防报错:

语法:create table if not exists 表名 (列名1 类型1, 列名2 类型2, 列名3 类型3);

mysql> create table if not exists student(->     id int,->     name varchar(20),->     age int-> );
Query OK, 0 rows affected, 1 warning (0.03 sec)

 

 ♫查看表

创建完表后,我们可以查看下我们所创建的表。

♪查看当前数据库下所以表:

语法:show tables;

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| student        |
| student2       |
+----------------+
2 rows in set (0.02 sec)

♪查看指定表结构:

语法:desc 表名;

mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.03 sec)

注:int(11)中11表示的是显示的宽度(不影响存储),varchar(20)表示的是最大长度是20个字符;Null表示是否可以为空;key与列的约束有关;Default表示默认值;Extra表示额外的描述

 ♫删除表

我们将不要的student2表删掉。

语法:drop table 表名;

mysql> drop table student2;
Query OK, 0 rows affected (0.06 sec)

同样,删表时也可以加上if exists预防直接报错:

语法:drop table if exists 表名;

mysql> drop table if exists student3;
Query OK, 0 rows affected, 1 warning (0.00 sec)

删表操作还支持同时删除多个表:

语法:drop table if exists 表名;

mysql> drop table if exists a,b,c;
Query OK, 0 rows affected, 3 warnings (0.02 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/92251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java多线程相关介绍

1. 线程的创建和启动 在 Java 中创建线程有两种方式。一种是继承 Thread 类并重写其中的 run() 方法,另一种是实现 Runnable 接口并重写其中的 run() 方法。创建完线程对象后,调用 start() 方法可以启动线程。 2. 线程的状态 Java 的线程在不同阶段会处于…

SimpleCG动画示例--汉诺塔动画演示

前言 SimpleCG的使用方法在前面已经介绍了许多,有兴趣的同学如果有去动手,制作一些简单动画应该没多大问题的。所以这次我们来演示一下简单动画。我们刚学习C语言的递归函数时,有一个经典例子相信很多同学都写过,那就是汉诺塔。那…

hadoop生态现状、介绍、部署

一、引出hadoop 1、hadoop的高薪现状 各招聘平台都有许多hadoop高薪职位,可以看看职位所需求的技能 ----> hadoop是什么,为什么会这么高薪?引出大数据,大数据时代,大数据与云计算 2、大数据时代的介绍 大数据的故事…

buuctf-[WUSTCTF2020]CV Maker

打开环境 随便登录注册一下 进入到了profile.php 其他没有什么页面&#xff0c;只能更换头像上传文件&#xff0c;所以猜测是文件上传漏洞 上传一句话木马看看 <?php eval($_POST[a]);?>回显 搜索一下 添加文件头GIF89a。上传php文件 查看页面源代码&#xff0c;看…

【分布式云储存】Springboot微服务接入MinIO实现文件服务

文章目录 前言技术回顾准备工作申请accessKey\secretKey创建数据存储桶公共资源直接访问测试 接入springboot实现文件服务依赖引入配置文件MinIO配置MinIO工具类 OkHttpSSLSocketClient兼容ssl静态资源预览解决方案资源上传预览测试测试结果 前言 上篇博客我们介绍了分布式云存…

Unity之Hololens如何升级MRTK内置shader支持URP

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

php时间选择器插件与安全过滤参数发生空格冲突

php参数过滤时&#xff0c;将“ ”作为隐患予以禁止&#xff0c;但是在时间传递时&#xff0c;如2023-09-30 10:00:00作为变量传递时&#xff0c;被禁止。 php安全参数过滤 function safe_replace($str) {$disallow_str array(%27, %2527, *, ", "", ;, <…

Qt Creator 预览界面 快捷键

一般来说&#xff0c;我们运行Qt程序所花费的时间是比较长的&#xff0c;那有时我们只改变了界面&#xff0c;那么此时花费如此长的时间去运行程序来观察界面改动的效果是非常浪费时间的行为。 此时我们可以选择预览界面来观察界面改动后的效果&#xff1a;

Java性能调优必备知识学习路线

性能调优是Java开发中一个非常重要的环节&#xff0c;它可以帮助我们提高系统的性能、稳定性、可靠性和用户体验&#xff0c;从而提高用户体验和企业竞争力。 目录 一、为什么要学习Java性能调优&#xff1f; 二、如何做好性能调优&#xff1f; 2.1 扎实的计算机基础 2.2 …

通过Nginx重新认识HTTP错误码

文章目录 概要一、HTTP错误码1.1、1xx1.2、2xx1.3、3xx1.4、4xx1.5、5xx 二、Nginx对常见错误处理三、参考资料 概要 在web开发过程中&#xff0c;通过HTTP错误码快速定位问题是一个非常重要的技能&#xff0c;同时Nginx是非常常用的一个实现HTTP协议的服务&#xff0c;因此本…

数字时代古文的传承———云南文化瑰宝“爨文化“(我为家乡发声)

文章目录 前言⭐ "爨"意味着什么&#xff0c;究竟何为"爨文化"&#xff1f;⭐ 爨文化鲜明的特点1.经济生活2.政治生活3.文化艺术 ⭐ 数字时代古文的传承与传播1.藏品数字化2.建立数据库3.传播大众化 前言 爨文化是继古滇文化之后崛起于珠江正源南盘江流域…

jieba.posseg是jieba中的一个组件,它用于对文本进行词性标注

jieba.posseg是Python中的一个分词工具&#xff0c;它可以将文本切割成词语&#xff0c;并且为每个词语标注词性。这个工具可以帮助我们更好地理解和处理自然语言文本。而pseg则是jieba.posseg的别名&#xff0c;用于方便快捷地进行调用。 下面是一个简单的例子&#xff0c;展…

jvm内存分配与回收策略

自动内存管理 解决两个问题 自动给对象分配内存 对象一般堆上分配&#xff08;而实际上也有可能经过即时编译后被拆散为标量类型并间接地在栈上分配&#xff09; 新生对象通常会分配在新生代&#xff0c;少数情况下&#xff08;例如对象大小超过一定阈值&#xff09;也可能…

Windows下使用VS2010编译出带pdb可调试的FFmpeg库

本人主要在windows环境下开发,Linux下的gpb调试工具又不如vs调试方便(使用过其他调试工具才知道,vs果真为宇宙最强调试工具),所以决定在windows编译可以调试FFmpeg,以方便调试和学习FFmpeg内部代码。 有过在visual studio下编程的小伙伴应该都知道vs的调试信息主要依靠于…

原型、原型链、判断数据类型

目录 作用 原型链 引用类型&#xff1a;__proto__(隐式原型)属性&#xff0c;属性值是对象函数&#xff1a;prototype(原型)属性&#xff0c;属性值是对象 Function&#xff1a;本身也是函数 相关方法 person.prototype.isPrototypeOf(stu) Object.getPrototypeOf(objec…

JavaScript中如何确定this的值?如何指定this的值?

&#x1f380;JavaScript中的this 在绝大多数情况下&#xff0c;函数的调用方法决定了this的值&#xff08;运行时绑定&#xff09;。this不能在执行期间被赋值&#xff0c;并且在每次函数呗调用时this的值也可能会不同。 &#x1f37f;如何确定this的值&#xff1a; 在非严格…

cesium 雷达扫描 (波纹线性雷达扫描效果)

cesium 雷达扫描 (波纹线性雷达扫描效果) 1、实现方法 使用ellipse方法加载圆型,修改ellipse中material方法来实现效果 2、示例代码 2.1 <!DOCTYPE html> <html lang="en"><head>&l

番外6:下载+安装+配置Linux

#########配置Linux---后续 step08: 点击编辑虚拟机设置&#xff0c;选择下载好的映像文件.iso进行挂载&#xff1b; step09: 点击编辑虚拟机选项&#xff0c;选择UEFI启动模式并点击确定&#xff1b; step10: 点击开启虚拟机&#xff0c;选择Install rhel &#xff1b; 备注&…

USART串口协议

通信接口 •通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 • 通信协议&#xff1a;制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 全双工&#xff1a;指通信双方能够同时进行双向通信&#xff0c;一般来说&#xff0c;全双…

美消费增长弱于预期,11月不加息概率升破八成

29号&#xff0c;就在美政府即将停摆关门之际&#xff0c;经济分析局按时公布了8月份美国个人消费支出&#xff08;PCE&#xff09;价格指数以及核心消费支出&#xff08;Core PCE&#xff09;价格指数。 其中&#xff0c;2023年8月美国个人消费支出价格指数环比上涨0.4%&#…