MYSQL数据库基础(数据库)

news2025/1/11 23:40:22

文章目录

  • 一、数据库使用流程
  • 二、数据库的操作
  • 三、常用数据类型
    • 3.1 数值类型
    • 3.2 字符串类型
    • 3.3 日期类型
  • 四、数据表操作

一、数据库使用流程

  1. 用户在客户端输入SQL语句
  2. 客户端会把SQL通过网络发送给服务器
  3. 服务器会执行这个SQL,把结果返回给客户端
  4. 客户端接收到结果后,显示到界面上

二、数据库的操作

1.创建数据库

1.1 语法

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, 
create_specification] ...]

create_specification:
 [DEFAULT] CHARACTER SET charset_name
 [DEFAULT] COLLATE collation_name

1.2 解析

  • 已经有了数据库,为何还要创建
    • 计算机中,不同的词有不同的含义,如一门学科、一类软件、某个具体的数据库软件、某个部署了数据库的服务器的主机、某个具体的正在运行的数据库服务器程序、一个数据库集合……
    • 我们现在有的准确的说是 数据库服务器 ,在这个数据库服务器上,可以根据逻辑划分出多个不同的数据集合,每个数据集合就称为是一个‘数据库’,我们要创建的就是一个 数据集合
  • 基础语法
    • create ,database……相当于关键字,即无法充当变量名
    • SQL的关键字是不区分大小写的
    • 创建的数据库的名字不能重复(可以通过if not exists 来判断)
    • 单词之间至少有一个空格,不能没有
    • 在命令行客户端中输入的SQL语句必须以 ;(英文) 作为结尾
  • MYSQL的效率问题
    • (0.01 sec):sec是second(秒)的意思,0.01s即10毫秒,0.00sec 小于10毫秒。数据库的很多操作,都是并不高效的
  • 说明
    • [] 是可选项
      CHARACTER SET: 指定数据库采用的字符集
      COLLATE: 指定数据库字符集的校验规则

1.3 使用

创建名为test 的数据库
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则时:utf8_general_ci

create database test;

如果系统没有test数据库,则创建一个名为test的数据库,有则不创建
如果是单行SQL没有什么问题,但是如果是批量执行SQL(把很多SQL写到一个文件中),如果中间某个SQL报错,就会执行停止

create database if not exists test;

如果系统没有test数据库,则创建一个使用utf8mb4字符集的名为test的数据库,有则不创建
如果是单行SQL没有什么问题,但是如果
说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是使用utf8mb4,建议大家都使用utf8mb4

create database if not exists test character set utf8mb4;
# 或
create database if not exists test charset utf8mb4;
  • 字符集
    • mysql的字符集
      • mysql 默认字符集是拉丁文(没法表示中文的),所以手动设定一个字符集是十分关键的,后续如果要插入一些中文,如果不是utf8/gbk之类的中文就会出现乱码
    • 字符集:针对汉字进行编码
      • VS 使用的编码方式是跟随系统,Windows 系统编码就是gbk。java 的字符集是在编译运行的时候,通过命令行参数显示指定的,一般默认都是utf8
      • 英文字母在计算机中通过ASCII表示,ASCII使用数字表示字符,且只能表示英文字母和标点符号以及阿拉伯数字。汉字要表示的内容特别多,但我们依旧是采用ASCII的编写思路,搞一个更大的表,来表示汉字。对于中文来说,最常见的表示方式是gbk和utf8
      • gbk:使用两个字节,表示一个汉字。    utf8:使用三个字节,来表示一个汉字(更加主流,除了汉字之外,各种其他国家的语言文字符号都能表示)。    utf8mb4:是完整版utf8,MySQL的utf8是残缺的,缺少了一些emoji表情

2.显示数据库

因为显示的数据库可能有多个,所以要加后缀s
系统自带的数据库,如information_schema、mysql、performance_schema、sys,不要乱改
cmd 上允许把一个SQL分成多行来写,如果没有;这表示换行,而不是“确认执行”

show databases;

3.使用数据库

后续操作的大前提(一旦选中了某个指定的数据库,后续操作就都是针对该数据库展开了)

use 数据库名

4.删除数据库

注意,一旦删掉数据库,里面的数据就都没有了,很难恢复

DROP DATABASE [IF EXISTS] db_name;
  • 如何避免删除数据库
    • 权限,不同的用户,能进行的操作是不一样的
    • 备份,一旦不小心误删除了某些重要数据,可以通过之前的备份数据,恢复回来
    • 检查,在执行某些重要操作的时候,拉上其他人帮忙一起检查

三、常用数据类型

3.1 数值类型

数值类型可以指定为无符号(unsigned),表示不取负数。
DECIMAL能够精确表示小数,但是float和double是不行的,但是DECIMAL存储空间占用的更多,计算速度也更慢

数据类型大小说明对应Java类型对应C类型
BIT[ (M) ]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean对应BIT,此时默认是1位,即只能存0和1char[]
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[]

3.2 字符串类型

数据类型大小说明对应Java类型对应C类型
VARCHAR (SIZE)0-65,535字节可变长度字符串,SIZE表示最大长度,单位是字符,不是字节,即varchar(10)就表示最多十个字Stringchar[]
TEXT0-65,535字节长文本数据Stringchar[]
MEDIUMTEXT 0-16 777 215字节中等长度文本数据Stringchar[]
BLOB0-65,535字节二进制形式的长文本数据byte[]char[]

3.3 日期类型

数据类型大小说明对应Java类型对应C类型
DATETIME8字节范围从1000到9999年,不会进行时区的检索及转换java.util.Date、java.sql.TimestampMYSQL_TIME
TIMESTAMP4字节时间戳,范围从1970到2038年,自动检索当前时区并进行转换java.util.Date、java.sql.TimestampMYSQL_TIME

四、数据表操作

关系型数据库中,数据是以“表”的方式来进行组织的,每个数据库中,里面就可以有很多个数据表,每个表可以有很多行,每一行又可以有很多个列(字段)
所有的和表相关的操作,都需要选中数据库再进行

1.创建表

CREATE TABLE table_name (
 field1 datatype,     -- field 类型     datatyoe 结构
 field2 datatype,
 field3 datatype
);

2.查看当前数据库中的所有表

show tables;

3.查看指定表的结构

desc 表名       -- desc == describe(描述)

在这里插入图片描述

4.删除表

drop table 表名;
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

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

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

相关文章

第十九篇、基于Arduino uno,获取光电开关(NPN/PNP型)的信号——结果导向

0、结果 说明:先来看看串口调试助手显示的结果,如果有遮挡会输出低电平或者高电平,没有遮挡会输出高电平或者低电平,如果是你想要的,可以接着往下看。 1、外观 说明:这里要区分到底是NPN型号的&#xff0…

分享几个索引创建的小 Tips

文章目录 1. 冗余索引1.1 联合索引左边列1.2 索引中加入主键 2. 隐藏的索引排序3. 删除不使用的索引4. 手动更新索引统计信息5. 适时优化表 关于 MySQL 中的索引,松哥前面已经和小伙伴们聊了不少了,不过在索引使用的时候,还是有一些需要注意的…

如何发布一个npm包

1、注册账号 https://www.npmjs.com/ 使用邮箱注册即可 a. 邮箱会在本地登录时发送验证码使用 b. 发布包后邮箱会收到通知 2、生成AccessToken (1)直接本地登录 # 根据提示输入用户名、密码、注册邮箱 npm login# 输入完邮箱会发送验证码&#xff0c…

如何做一个有质量的技术分享

分享信息并不难,大多数人都能做到,就算是不善言谈性格内向的技术人员,通过博客或社交媒体,或是不正式的交流,他们都能或多或少的做到。但是如果你想要做一个有质量有高度的分享,这个就难了。 所谓的有质量和有高度,我心里面的定义有两点: 分享内容的保鲜期是很长的会被…

win11本地安装k8s

1、确保本地已经安装DesktopDocker; 2、使用choco下载安装Kind,正常下载安装报错提示,建议使用管理员权限 使用管理员权限下载安装Kind 也可以从github下载kind到本地进行安装,下载地址 Releases kubernetes-sigs/kind GitHub …

分布式锁Redis基础理论与落地实现与Redisson。

分布式锁Redis基础理论与落地实现 基本概念基于Redis的分布式锁基本用法基于Redis实现分布式锁初级版本改进Redis的分布式锁问题Redis的Lua脚本利用Lua脚本写释放锁业务流程再次改进Redis的分布式锁 总结 Redisson基于setnx实现的分布式锁存在下面的问题Redisson入门Redisson可…

64位系统究竟牛逼在哪里?

想必大家都遇到过这样的问题:安装某个软件的时候,出现提示选择32位版本还是64位版本?我们也可以查看自己的电脑是32位还是64位系统。 Windows Linux 大家可能知道32位和64位和系统有关, 但其实 32 vs 64 可以有多重含义。 一般情…

JVM学习笔记(上)

1、总体路线 2、程序计数器 Program Counter Register 程序计数器(寄存器) 作用:是记录下一条 jvm 指令的执行地址行号。 特点: 是线程私有的不会存在内存溢出 解释器会解释指令为机器码交给 cpu 执行,程序计数器会…

GCC写个库给你玩,就这?

前言 什么是GCC GCC原名为 GNU C语言编译器 「GCC」(GNU Compiler Collection,GNU编译套件) 是由GNU开发的编程语言编译器。 正文 安装命令 sudo apt-get insatll gcc g注意安装版本要大于4.8.5因为4.8.5以后的版本才支持c11标准 查看版本 gcc -v gcc --version g -v g …

Vue.js 的数据双向绑定实现原理

Vue.js 的数据双向绑定实现原理 Vue.js 是一款流行的前端框架,它采用了数据双向绑定的方式,让前端开发人员更加方便地管理数据和视图。在本文中,我们将深入探讨 Vue.js 的数据双向绑定实现原理,以及相关的代码示例。 数据双向绑定…

1. TensorRT量化的定义及意义

前言 手写AI推出的全新TensorRT模型量化课程,链接:TensorRT下的模型量化。 课程大纲如下: 1. 量化的定义及意义 1.1 什么是量化? 定义 量化(Quantization)是指将高精度浮点数(如float32)表示为低精度整数(如int8)的过程&…

jmeter性能测试步骤实战教程

1. Jmeter是什么? 2. Jmeter安装 2.1 JDK安装 由于Jmeter是基于java开发,首先需要下载安装JDK (目前JMeter只支持到Java 8,尚不支持 Java 9) 1. 官网下载地址: http://www.oracle.com/technetwork/java/…

Map、Set和哈希表的应用练习(数据结构系列15)

目录 前言: 练习题: 结束语: 前言: 在上一节博客中小编给大家介绍了Map、Set和哈希表的一些简单的知识点,同时也给大家简单的演示了一下如何使用他们里面的一些基础方法,那么接下来让小编带着你们一起来…

当心!经济学家分析:未来三年内做好随时失业的准备

AI人工智能又来抢饭碗了,这次竟然通过了公认难考的会计行业考试! 近期,OpenAI的大语言模型最新版GPT-4已经完成美国注册会计师(简称CPA)考试,四大主要会计考试所有科目的平均得分为85.1。 而在CPA考试中&…

落地页设计的营销心理学(三)

本文是「落地页设计的营销心理学」这个主题系列文章的收官篇,要给大家分享关于用户行动号召、提高用户参与度和整个营销落地页结构的设计。 回顾系列文章: 《落地页设计的营销心理学(一)》 《落地页设计的营销心理学&#xff08…

C++进阶 —— 线程库(C++11新特性)

十,线程库 thread类的简单介绍 在C11之前涉及多线程问题,都是和平台相关的,如windows和Linux下各有自己的接口,这使代码的可移植性较差;C11中最重要的特性就是对线程进行支持,使得C在并行编程时不需要依赖…

【社区图书馆】《写作脑科学》

文章目录 前言语言和思维写作技巧创造性思维总结 前言 杨滢著的《写作脑科学》是一本关于写作的科学读物,它深入探讨了人类大脑是如何进行创造性思维和表达的。这本书让我对写作有了全新的认识,也为我提供了一些实用的技巧和策略来提高自己的写作能力。…

整理 钢琴教材 约翰·汤普森现代钢琴教程(大汤)

邮箱不能及时回复,现放到网盘里了,文末按需自取 约翰-汤普森钢琴教程1 文件名:(大汤1)约翰汤普森现代钢琴教程 1 超清PDF 文件大小:9.9 MB 下载地址:https://download.csdn.net/download/qq_36040764/85051148 约翰-汤普森钢琴教程2 文件名:(大汤2)约翰汤普森现…

Python3中goto的用法

Python3代码指定跳转可以使用goto这个库: 安装: pip install goto-statement 一般安装的版本是1.2 需要做以下修改才能正常使用: python 使用goto,遇到的问题解决_奶嘴偷走初吻的博客-CSDN博客python goto 出现报错:Attribut…

Python difflib的使用

今天做了一个从list的内容取出一个与指定内容尽可能相似的内容,做完之后抽个几分钟记录下 difflib的作用 比对2个文件的差异. 使用的时候直接 import difflib 即可 get_close_matches 作用 匹配最大相似的内容返回结果 list1 ["abc", "acd", "…