首页 > 数据库 >【零基础学Mysql】一文了解数据库及其常用数据类型

【零基础学Mysql】一文了解数据库及其常用数据类型

时间:2024-12-19 23:55:58浏览次数:6  
标签:创建 utf8 数据库 Mysql 数据类型 使用 类型 CREATE

在这里插入图片描述

大家好,我是whisperrr.

文章目录


在这里插入图片描述

一.了解数据库

1.1数据库三层结构-破除 MySQL神秘

1.所谓安装Mysql数据库,就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库。DBMS(database manage system)
我们能不能主观的看到数据库是什么样子呢,笔者在安装Mysql5.7.19的教程中,我们手动创建data文件夹,data文件夹就是数据库
在这里插入图片描述

2.一个数据库中可以创建多个表,以保存数据(信息)。而我们创建的表就存放在data文件夹里面,我们可以意识到,表也是已文件的形式保存的
在这里插入图片描述

3.数据库管理系统(DBMS)、数据库和表的关系如图所示:示意图
在这里插入图片描述

1.2创建数据库

使用指令创建数据库

CREATE DATABASE lrx_db01;

创建一个使用 utf8 字符集的 lrx_db02 数据库,CHARACTER SET:指定数据库采用的字符集,如果不指定字符集,以Sqlyog为例,默认为utf8

CREATE DATABASE lrx_db02 CHARACTER SET utf8

创建一个使用 utf8 字符集,并带校对规则的 lrx_db03 数据库
COLLATE:指定数据库字符集的校对规则(常用的utf8_bin[区分大小写]、utf8_general_ci[不区分大小写] 注意默认是utf8_general_ci)

CREATE DATABASE hsp_db03 CHARACTER SET utf8 COLLATE utf8_bin

1.3查看、删除数据库

显示数据库

SHOW DATABASES

显示数据库创建的语句

SHOW CREATE DATABASE lrx_db02;

删除数据库指令

DROP DATABASE lrx_db01;

1.4备份恢复数据库

 数据库里面有很多表,表中包括很多敏感的,重要的数据,所以笔者建议要经常备份数据库,以免数据丢失,或者我们的数据库需要拷贝到另一个数据库管理系统中,这也不可避免的备份数据。

#备份, 要在 Dos 下执行 mysqldump 指令,其实在 mysql 安装目录\bin
#指令后面不要带 ;
在这里插入图片描述

#第一个恢复数据库(注意:进入 Mysql 命令行再执行)
在这里插入图片描述
#第二个恢复方法, 直接将 bak.sql 的内容放到查询编辑器中,执行

二. Mysql常用数据类型(列类型)

列类型主要有四大类,数值类型,文本类型(类似java中的字符串类型),二进制类型,可以直接存放字段,还有一种关于日期的类型
在这里插入图片描述

2.1数值型(整数)的基本使用

作为SQL标准的扩展,MySQL支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围

说明:使用规范,在能够满足需求的情况下,尽量选择占用空间小的类型
这里是引用

2.1.1如何定义一个有符号的整数

#下面演示一个整型的案例,使用tinyint来演示范围

CREATE TABLE t3(
	id TINYINT);
#简单的插入语句
INSERT INTO  t3 VALUES (-127);

在上面案例,我们创建了表,id 的数据类型为TINYINT,没有指定unsigned,则TINYINT为有符号,范围在-127–128之间,所有我们插入-127是可以成功的。表的创建和语句后面文章会讲解。

2.1.2如何定义一个无符号的整数

#上面笔者创建了一个有符号的整数,现在演示一下无符号的整数怎么创建。依然使用tinyint类型演示,创建数据类型的指定unsigned,那么TINYINT就是无符号。

CREATE TABLE t4(
	id TINYINT UNSIGNED);#unsigned
INSERT INTO  t4 VALUES (255);

2.2bit(位)类型的基本使用

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。这些引擎在创建表的时候会讲解

1.基本使用

mysql>createtable t05(num bit(8));
mysql>insert into t05(1,3);
mysql>insert into t05 values(2,65);

2.细节说明

bit.sqlbit字段显示时,按照 位的方式显示查询的时候仍然可以用使用添加的数值如果一个值只有0,1可以考虑使>用bit(1),可以节约空间位类型。M指定位数,默认值1,范围1-64使用不多.

2.3小数类型的基本使用

1.FLOAT/DOUBLE [UNSIGNED]
Float单精度精度,Double双精度.

2.DECIMAL[M,D][UNSIGNED]

·可以支持更加精确的小数位。M是小数位数(精度)的总数,D是小数点(标度)后面的位数。
·如果D是0,则值没有小数点或分数部分。M最大65。D最大是30。如果D被省略,默认是0。如果M被省略,默认是10。
·建议:如果希望小数的精度高,推荐使用decimal

说不多说,直接上代码演示

#演示 decimal 类型、float、double 使用
#创建表
CREATE TABLE t06 (
num1 FLOAT, num2 DOUBLE, num3 DECIMAL(30,20));
#添加数据
INSERT INTO t06 VALUES(88.12345678912345, 88.12345678912345,88.12345678912345);
SELECT * FROM t06;

#decimal 可以存放很大的数
CREATE TABLE t07 (
num DECIMAL(65));
INSERT INTO t07 VALUES(8999999933338388388383838838383009338388383838383838383);

2.4文本类型(字符串)的使用

在这里插入图片描述

2.4.1字符串类型的基本使用

CHAR(size)
固定长度字符串,最大创建255字符

CREATE TABLE t09 (
`name` CHAR(255));

VARCHAR(SIZE)

存储范围0~65535,指的是字节,在不同的编码下,占得字节空间是不一样的。
比如在utf8的编码下,三个字节表示一个字符,又因为本身会拿出1-3的字节来记录大小,所以实际上只能存21844个字符,(65535-3)/3 = 21844

CREATE TABLE t10 (
`name` VARCHAR(21844)) CHARSET utf8;
DROP TABLE t10;

2.4.2字符串类型的使用细节

细节一:
char(4),4表示的四个字符(最大255),在存放字符的时候,不管中文还有英文,都是存放四个,按字符计算。

varchar(4),4表示四个字符,但这四个字符占用多少的字节,是根据编码来确定的。uft8 :4*3=12

CREATE TABLE t11(
	`name` CHAR(4));
INSERT INTO t11 VALUES('祝你好运');
SELECT * FROM t11;

CREATE TABLE t12(
	`name` VARCHAR(4));
INSERT INTO t12 VALUES('我爱数据');
INSERT INTO t12 VALUES('ab 北京');
SELECT * FROM t12;

细节二:
char(4)是定长(固定的大小),也就是说,即使插入‘aa’,也会分配四个字符的空间。
varchar(4),是变长(变化的大小),如果你插入‘aa’,实际占用的空间不是四个字符,而是按照实际占用空间来分配,同时,varchar本身也会占用1~3的字节来记录存放内容的长度

细节三:
什么时候使用char,什么时候使用varchar
1.如果数据是定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号码等.char(32)
2.如果一个字段的长度是不确定,我们使用varchar,比如留言,文章

查询速度:char>varchar

细节四:
在存放文本时,可以使用text数据类型,可以将text视为varchar,注意text不能有默认值,大小0~2^16,如果希望存放更多字符,可以选择mediumtext或者longtext

2.5日期类型的使用

DATETIME、DATE和TIMESTAMP类型是相关的。该节描述了它们的特征,它们的相似点和不同点。

当你需要同时包含日期和时间信息的值时则使用DATETIME类型。MySQL以’YYYY-MM-DD HH:MM:SS’格式检索和显示DATETIME值。支持的范围为’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。(“支持”表示尽管先前的值可能工作,但没有保证)。

当你只需要日期值而不需要时间部分时应使用DATE类型。MySQL用’YYYY-MM-DD’格式检索和显示DATE值。支持的范围是’1000-01-01’到 ‘9999-12-31’。

TIMESTAMP列类型的属性不固定,取决于MySQL版本和服务器运行的SQL模式

#演示时间相关的类型
#创建一张表, date , datetime , timestamp
CREATE TABLE t14 (
	birthday DATE , -- 生日
	job_time DATETIME, -- 记录年月日 时分秒
	login_time TIMESTAMP
	NOT NULL DEFAULT CURRENT_TIMESTAMP
	ON UPDATE CURRENT_TIMESTAMP); -- 登录时间, 如果希望 login_time 列自动更新, 需要配置
SELECT * FROM t14;

INSERT INTO t14(birthday, job_time)
VALUES('2022-11-11','2022-11-11 10:10:10'); -- 如果我们更新 t14 表的某条记录,login_time 列会自动的以当前时间进行更新
以耳倾听世间繁华,以语表达心中所想
感谢友友们的阅读,咱们下期再见

标签:创建,utf8,数据库,Mysql,数据类型,使用,类型,CREATE
From: https://blog.csdn.net/qq_74232707/article/details/144589287

相关文章

  • ssm护理管理系统674u3--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着医疗技术的不断进步和人们对医疗服务质量的日益提高,护理管理作为医疗服务的重要组成部分,其重要性日益凸显。然而,传统的护理......
  • ssm公交查询系统12e14--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着城市交通的日益繁忙,公交系统作为城市交通的重要组成部分,承担着大量的出行需求。然而,传统的公交查询方式存在信息更新不及时、查询......
  • ssm个性化音乐系统658nv(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着数字音乐产业的快速发展,人们对音乐的个性化需求日益增长。传统的音乐播放方式已无法满足用户对音乐内容的个性化追求。因此......
  • mysql期末大题满分指南(ER图关系模型+mysql代码题)
    好久没有写博客最近开始期末周,完成期末项目、答辩、准备笔试考试。所以也是信息收集学了将就1/2 昨天晚上刚刚结束了mysql期末考试就此来写一个博客。题型:一、选择、填空、判断、简答题推荐这位老哥的题库非常全考试做选择题和填空题都非常顺利。预计选择、填空、判......
  • 225Python大学生社团管理系统(Pycharm Flask Django Vue mysql)
    文章目录项目介绍和开发技术介绍具体实现截图开发技术开发与测试:设计思路系统测试可行性分析核心代码部分展示文章目录/写作提纲参考源码/演示视频获取方式项目介绍和开发技术介绍对于网站的前台设计,要保证主界面的整洁有序,能够抓住人的眼球,不会产生视觉疲劳,更重要......
  • 数据库课设(连锁超市信息管理系统)
    目录一、需求分析1.1功能需求分析1.2数据需求分析二、概念结构设计2.1总体E-R图2.2实体属性图2.3总体E-R图解释说明三、逻辑结构设计3.1关系模型3.2关系模式的优化四、物理结构设计4.1创建数据库4.2数据库表设计4.3索引的设计五、数据库建立实施......
  • 12、MySQL插入10万条数据
    createdatabaselogin;uselogin;createtableusers(idintprimarykeyauto_increment,namevarchar(20)notnull,passwordvarchar(50)notnull);createtablelogin_times(namevarchar(20)primarykey,count_timesint);createtriggertrigger_countafterins......
  • MYSQL
    jdbc:用于Java程序访问数据库的API;原理:包含数据库驱动,连接数据库,创建操作对象,执行SQL语句,处理查询结果,释放查询资源等(使用socket连接数据库,获取statement实例执行sql语句)执行过程中,每个步骤都会生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入,最后产生的虚拟币将作......
  • MySQL数据库
    数据库开发-MySQL接下来,就来演示一下,通过MySQL的客户端命令行,如何来连接服务器上部署的MySQL:mysql-u用户名-p密码[-h数据库服务器的IP地址-P端口号]在Mysql数据库服务器当中存储数据,你需要:先去创建数据库(可以创建多个数据库,之间是相互独立的)在数据库下再去创建数据表(......
  • Python 解密 Navicat导出的数据库连接,Navicat数据库连接导入DBeaver。
    最近公司收到Navicat律师告知书,让停止使用Navicat,用了那么久的数据库连接工具,不得不换其他的。最终选择了开源的DBeaver。安装完DBeaver后,把Navicat导出的connections.ncx文件直接导入DBeaver。直接访问提示连接失败,因为connections.ncx文件里的密码都是加密的。如图: 网上找......