首页 > 数据库 >MySQL数据库基础

MySQL数据库基础

时间:2024-08-17 11:23:10浏览次数:12  
标签:编码 字符集 创建 数据库 MySQL 基础 utf8 test

目录

1. 数据库的操作

1.1  创建数据库

1.2 查看数据库

1.3 选中数据库

1.4 删除数据库

2. 常用数据类型

2.1 数值类型

2.2 字符串类型

2.3 日期类型

3. 表的操作

3.1 创建表

3.2 查看所有表

3.3 查看表的结构

3.4 删除表

4. 内容重点总结

5. 练习


1. 数据库的操作

1.1  创建数据库

语法:

create database test;
//这里的create和database都是sql中有特定含义的单词,关键字
//(数据库名,表名,列名都不能和关键字重复)

//sql的关键字是大小写不敏感的

//数据库名字是随便起的,切记不要和关键字冲突

//单词和单词之间要至少有一个空格

 test数据库创建好了,那么我再尝试创建一个名为test的数据库会怎样呢?

这里也会报错,不能创建test数据库,因为test数据库已经存在。所以这里告诉我们数据库得是唯一的。

数据库在创建的时候,要求不能重复,此时就可以在创建的时候,加上一个修饰,来应对上述问题。

create database if not exists test;
//if(如果) not(不) exists(存在) 意思就是如果不存在就创建,
//反之,存在就不创建

当我们执行这个语句的时候不会报错,但也不会创建第二个test数据库, 当我们加了if not exists之后就不会因为数据库同名而报错了。

那么这个到底有啥用呢?知道同名不创建就行了,为啥要加上这个呢?

这个if not exists最主要的用途就是避免SQL报错,避免报错就是因为我们实际工作中,很多时候是把一系列sql写道一个文件中,批量执行的,很少会这样一条一条执行。在批量指向的情况下,如果一条sql报错,后面的sql就无法继续执行了。

创建数据库的时候,是可以手动指定一下字符集的。

character set 字符集名字 / charset 字符集名字

咱们需要在数据库中保存中文,mysql默认的字符集是拉丁文,不支持中文,必须要在创建数据库的时候,手动指定编码方式为中文编码(GDK,UTF8)。

那么字符集是啥?

在计算机中,一个汉字占几个字节?

不同的字符集,不同的编码方式下,一个汉字占几个字节是不同的。

很多人会以为是2,2这个数字是学习C的时候,留下的印象,当时使用的是VS,在windows上写的代码,windows简体中文版默认字符集是gbk,VS默认的字符集是和系统一致(gbk),在这个情况下,一个汉字是占2个字节,gbk现在已经用的越来越少了,主要是使用utf8作为编码方式,utf8对gbk来说最大的特点就是变长编码,utf8里面的字符最短是一个字节,最长可能是四个字节,变长编码留有更大的编码的空间,因此utf8不仅仅可以表示中文,也可以表示世界上的任何一种语言文字。

如果使用utf8编码,一个汉字通常是3个字节。

unicode跟utf8有一些渊源,它是给一个字符进行编码的,但是它无法给"字符串"进行编码,比如,把多个unicode编码的字符放到一起,构成一个字符串,就可能会乱套了,无法区分字符和字符之间的边界。

基于unicode就演化出了一些可以给"字符串"编码的版本,utf8就是其中一个。

在Java中,谈到char类型,内部编码就是unicode,谈到String,内部的编码一般是utf8,因为Java内部会自动完成编码转换。

指定字符集的语句:

create database test charset utf8;
//这么写的时候确实可以指定字符集为utf8,
//但是mysql的utf8不是正真的utf8,是一个"残本"
//相较于正真的utf8相比少了emoji表情
//后来mysql又搞了个utf8mb4,则是完全体的utf8了,这个是mysql独有的,别的地方很难见到

每种字符集,都是一个很大的码表,和ASCII码差不多。

查看某一个文字的utf8和gbk编码的网站:

查看字符编码(UTF-8)icon-default.png?t=N7T8http://mytju.com/classcode/tools/encode_utf8.asp

后续如果出现乱码的情况或者分不清字符集编码的时候就可以通过这样的网站查。编码就是很简单的一个表格,只不过utf8有一套自己的表格,GBK有一套自己的表格,只不过我们在使用的时候得保证当前的编码方式和解码方式对的上,要不然会出现乱码。

1.2 查看数据库

列出当前mysql数据库服务器上一共都有哪些数据库。

语法:

show databases;
//sql都需要以;结束(英文分号)
//mysql客户端允许输入sql的时候换行

输入多行最终都要以分号结束。

红色框中就是当前mysql数据库服务器上所有的数据库,我们还可以看到前面创建的test数据库,别的数据库都是自带的。

尤其是自带的mysql数据库,这个数据库是很重要的,这个数据库就保存了当前数据库服务器的各种信息,就比如我们想去修改一些配置,都可以通过mysql数据库来操作。

1.3 选中数据库

语法:

use 数据库名;
//数据库中最关键的操作就是针对表进行增删改查
//表示从属于数据库的
//要针对表操作,就需要先指定是哪个数据库里的表

1.4 删除数据库

语法:

drop database 数据库名;

这样的操作就完成了数据库的删除,完成删除之后我们再次查看数据库。

再次查看数据库,我们会发现test这个数据库没了,这就说明被我们删除掉了。 

删除操作删掉的不仅仅是database,而且也删除了database中所有的表和表中的数据!

删除数据库操作时一个非常危险的操作。

2. 常用数据类型

一个表,包含很多行,每一行也称为一条记录,一个行里可以有很多列,每一列也称为时一个字段,每个列都是有一个具体的类型的。

2.1 数值类型

分为整型和浮点型:

2.2 字符串类型

 2.3 日期类型

 3. 表的操作

进行表操作的前提,是必须要先能够选中数据库:

use test;

 3.1 创建表

语法:

create table 表名(列名 类型,列名 类型....);
//teble -> 表的意思,也是一个关键字
//列名和类型可以存在多个,而且表名和列名不能和关键字冲突
//如果确实想让表面/列名和关键字一样,可以使用反引号`(esc下面)来把表面列名引起来
/此处列名在前面,类型在后面
//也不是所有的语言都是类型在前的,有些语言,类型就是在后面的!!!
//比如C++,GO,Python....

student是表的名字,这个表有两列,id和那么,其中id是int类型,name是varchar类型,然后下面显示ok,就说明创建成功了,后面的(0.08 sec),sec表示second(秒),就说明这个操作所消耗的时间为0.08秒。

站在计算机的角度,0.08s也就是80ms,是一个挺慢的时间了,mysql这样的数据库,性能其实是短板。

3.2 查看所有表

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

语法:

show tables;

如果我们直接输入命令的话会报错,所有我们必须先选中数据库。

 这样我们就可以看到我们前面创建的表了。

3.3 查看表的结构

desc 表名;
//desc --> describe 描述

这个就是当前的student表。

 3.4 删除表

语法:

//删除表
drop table 表名;
//如果表存在,则删除表
drop table if exists 表名;

删除表的同时,也会把表里的数据给一起删除掉.删除表,也是一定要慎重,也是非常危险的!! 

4. 内容重点总结

  • 操作数据库
-- 显示
show databases;
-- 创建
create database xxx;
-- 使用
use xxx;
-- 删除
drop database xxx;
  • 常用数据类型
INT : 整型
DECIMAL(M,D) : 浮点数类型
VARCH(SIZE) : 字符串类型
TIMESTAMP : 日期类型
  • 操作表
-- 创建表
create table 表名(字段1 类型1,字段2 类型2,.....);
-- 查看所有表
show tables;
-- 查看表的结构
desc 表名;
-- 删除表
drop table 表名;

5. 练习

1. 有一个商店的数据,记录客户及购物情况,有以下三个表组成:

  • 商品goods(商品编号goods_id,商品名goods_name,单价unitprice,商品类别category,供货商provider)
  • 客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)
  • 购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)

这里的单价unitprice用int因为单位是分,其实用decimal表示小数就可以,但这个特别占内存,而且效率低,int效率高,而且我们日常生活中算钱最多精确到分就可以了,所有这里用int表示钱。

这里varchar后面的长度是我们自己想出来的,如果在以后的工作中,这些都是产品经理提出来的。

标签:编码,字符集,创建,数据库,MySQL,基础,utf8,test
From: https://blog.csdn.net/m0_74271757/article/details/141174840

相关文章

  • 01、Vue3+TypeScript基础,创建第一个页面
    1、main.js代码如下://引入createApp用于创建Vue实例import{createApp}from'vue'//引入App.vue根组件importAppfrom'./App.vue'constapp=createApp(App);//App.vue的根元素id为appapp.mount('#app')2、App.vue代码如下:<template><div......
  • 【数据库】事务 | 视图 | 自定义函数创建
    1、事物及其特征事物机制的应用:淘宝订单交易,微信转账等。视图--------筛子---------过滤-------筛选想要的信息数据库只存放了视图对应的SQL语句。视图是一个虚拟的表,本质是一个虚拟的SQL命令集合。(1)创建单表视图(虽然视图里没有30的数据,但原表里插入这个30的数据......
  • MySQL数据库入门,pycharm连接数据库—详细讲解
    一.安装MySQL1.常用MySQL5.7,首先安装MySQL,(一) (二)(三)(四)(五)2.配置环境变量打开MySQL安装路径,在其中找到bin文件,复制路径,打开系统高级设置,点击环境变量,在下方找到path,将bin文件路径粘贴其中。3.检验安装是否完成win+r 输入cmd,打开命令提示符,输入指令:netstart|......
  • Ubuntu安装mysql 以及远程连接mysql Windows—适合初学者的讲解(详细)
    目录准备工作一.Xshell中操作(1)在虚拟机中安装mysql(2)连接Windows数据库(3)进入linux数据库。(4)修改mysql配置文件二.Windows命令窗口操作 需要软件虚拟机,Xshell。准备工作1.首先需要打开虚拟机,然后在终端上安装ssh,远程传输协议。安装指令为:sudo apt install......
  • 坑!火山引擎云数据库 MySQL 版节点内存只增不减
    火山引擎云数据库说明文档什么是云数据库MySQL版?云数据库MySQL版是火山引擎基于开源数据库MySQL打造的弹性、可靠的在线关系型数据库服务。MySQL实例使用云原生方式部署,结合本地SSD存储类型,提供高性能读写能力;完全兼容MySQL引擎,并提供实例管理、备份恢复、日志管理......
  • Polars简明基础教程十二:可视化(二)
     设置绘图后端我们可以使用hv.extension更改绘图后端。但是,我们不在此处运行此单元格,因为它会导致下面的Matplotlib/Seaborn图表无法渲染。注释:hvPlot利用HoloViews库来构建图表,并且可以使用多个后端进行渲染,包括Bokeh(默认)和Matplotlib。hv.extension是一个函数......
  • Polars简明基础教程十三:可视化(三)
     (示例中用到的csv数据文件可在CSDN免费下载:“泰坦尼克号生还者数据集”):importpolarsasplimporthvplotashvimportmatplotlib.pyplotaspltimportseabornassnsimportplotly.expressaspximportaltairasaltimportvegafusionasvfcsv_file=r"..\da......
  • 读软件开发安全之道:概念、设计与实施01基础
    1. 基础1.1. 实现软件安全既需要运用逻辑,又是一项艺术1.1.1. 一项仰赖直觉来做出判断的艺术1.1.2. 需要践行者对当代数字系统有所掌1.1.3. 需要他们对人与系统之间的交互有所体悟1.2. 需要准确地思考一下何谓安全1.2.1. 安全定义的主观性颇强,因此厘清安全......
  • 【408DS算法题】016基础-倒序输出单链表的结点值
    Index题目分析实现总结题目给定单链表的头结点,倒序输出单链表的结点值。分析实现要倒序输出链表结点值,首先可以想到的是先将链表的结点值存储到数组中,然后利用数组随机访问的特性进行倒序输出。如果考虑其它思路的话,还可以使用栈来代替数组——将链表元素依次......
  • Mysq-造数工具mysql_random_data_load
    1.背景实际开发中,做sql优化,为确保可行性,可能需要模拟出大量数据验证。此处,介绍一个造数工具mysql_random_data_load,体验了下,很方便。2.使用2.1下载下载:mysql_random_data_load(releases页面)选择合适的版本,例如。2.2安装上传到服务器直接解压即可。tar-zxvfmysql_r......