【MySQL】MySQL数据库基础|数据库的操作|常用数据类型|表的操作

目录

一、数据库的操作(针对“数据集合”的操作)

1.显示当前的数据库

2.创建数据库

3.使用数据库

4.删除数据库

二、常用数据类型

1.数值类型

2.字符串类型

3.日期类型

三、表的操作

1.列出当前数据库的表

2.创建表

3.查看表结构

4.删除表


💡推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击跳转到网站


 MySQL组织形式:数据库->数据表->行->列(此处的数据库表示一个抽象的概念,含义就是一个”“数据集合“)

谈到"数据库”这个词要明确,指的是"学科",还是一类"软件",还是某个数据库软件的"服务器程序",还是一个"数据集合”,要结合上下文来理解

💡一个MySQL服务器上,可以有多个数据库

每个数据库里,可以有多个数据表

每个数据表里,可以有很多行

每个行中可以有很多列


一、数据库的操作(针对“数据集合”的操作)

1.显示当前的数据库

show databases;

注意:

(1)现有数据库不止一个,所以要加 s 

(2)最后要带上; 而且必须是英文的分号

(3)输入的单词之间,要带有空格,多个空格是可以的,但是至少有一个

(4)输入完毕后,按 回车 执行这个命令

(5)如果输入命令错误的时候,mysql会给出错误的提示,告诉我们错误出现的位置

(6)SQL是大小写不敏感的,写成大写或者小写都行


2.创建数据库

create database 数据库名 (charset 字符集名);

注意:

(1)创建一个数据库,所以不是复数

(2)这里的数据库名不能和“关键字"(eg:create)重复,最好是带有特定涵义的单词,如果想用关键字作为数据库名,可使用反引号( ` )把这个名字引起来

(3)在创建数据库的时候,可以指定字符集,charset 字符集名即可;后续创建数据库的时候,建议大家使用utf8(mb4)作为字符集,否则mysql 5.7默认字符集是拉丁文,不支持中文,(mysql 8默认的就是utf8),mysql 的 utf8 其实不是 完全体,比标准的 utf8 少了一些东西 (主要是少了 emoji 表情),为了解决上述问题,mysql 提供utf8mb4 这样的字符集(mysql 独有, 就是完整的 utf8)

(4)校验规则:可以认为是字符串比较的时候,对应的规则般不需要修改,就使用默认值即可

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

答:和字符编码是密切相关的,ACSII码,计算机存储的是二进制数据,约定了某个数字表示某个字符,对于汉字来说,数目远远超过ASCII字符了,某个汉字和数字之间的对应关系,这样的表格不只有一个版本,每个版本的编码规则不同,当下主流的表示汉字的编码方式

GBK:使用2个字节表示1个汉字

UTF8:变长编码,对于汉字来说一般就是3个字节


3.使用数据库

use 数据库名;

后续进一步操作,都是需要先选中,再操作


4.删除数据库

drop database 数据库名;

注意:

删除数据库操作,非常的危险,数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除

事实上,公司也会防着大家,防止出现上述删库的情况造成太大的影响:

(1)控制好权限:mysql 自身支持丰富的权限配置功能,根据你的账号,你能够进行哪些操作都是有明确限制的

(2)备份:重要的数据多备份几份,一旦删除了,可以从备份的数据中恢复回来,但是!即使你有备份,可能你备份的数据不是最新的(上周备份的)一周时间内可能已经产生了很多新的数据了,虽然数据没有完全丢,但是也丢了一部分,此时可能造成严重的后果


二、常用数据类型

前面谈到的是”数据库“操作,表操作才是更核心的,先说一下mysql中的数据类型,数据库中的表,每一列都是有“数据类型”的

1.数值类型

数据类型大小说明对应java类型
BIT[ (M) ]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean对应BIT,此时默认是1位,即只能存0和1
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)float(3,1):表示小数的长度是3,小数点后保留1位

double和float这种表示方式表示的数据存在精度误差,所以使用double/float的时候,不适合用来表示对于“精度要求”很高的场景

(2 ) declmal和numerlc这俩类型就能解决上述问题,他们可以精确的存储小数,但是这样需要消耗更多的空间,计算也需要更多的时间


2.字符串类型

数据类型大小说明对应java类型
💡VARCHAR (SIZE)0-65,535字节可变长度字符串(参数size表示能存储的最大长度,单位是字符)String
TEXT0-65,535字节长文本数据(这里的长度是自适应的,比较依赖自动扩容,为了明确数据存储的上限需谨慎使用)String
MEDIUMTEXT0-16 777 215字节中等长度文本数据String
BLOB0-65,535字节二进制形式的长文本数据byte[]

3.日期类型

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

💡数据类型小结:重点掌握这4个,其他的简单了解即可

(1)表示整数:int

(2)表示小数:double ( float也用的很少)

(3)表示字符串:varchar

(4)表示时间日期:datetime


三、表的操作

在进行后续表操作之前,一定要先use选中数据库

1.列出当前数据库的表

show tables;

如果没有表在这个数据库里,看到的就是空的集合不同的数据库,里面包含的表是不一样的,show tables 只能看到当前的数据库的表


2.创建表

create table 表名(列名 类型,列名 类型,列名 类型...);

 注意:

(1)设定表名/列名的时候, 也是不能和 SQL 的关键字重复的,如果确实需要重复, 可以使用( ` ) 引起来.

(2)同一个数据库中,表名不能重复(不同数据库就可以了)

(3)可以使用comment增加字段说明(类似注释),更推荐用 # 作为注释,或者-- 作为注释(两个减号加上一个空格);注释写了之后不会存储到数据库中,仅仅起到解释说明的作用

eg:

create table stu_test (
    id int,
    name varchar(20) comment '姓名',
    password varchar(50) comment '密码',
    age int,
    sex varchar(1),
    birthday timestamp,
    amout decimal(13,2),
    resume text
);

3.查看表结构

desc 表名;

desc =>describe(描述) 

 表中有哪些列,都叫啥,都是哪些类型,以及有啥其他的注意的东西


4.删除表

drop table 表名;

注意:

(1)不仅仅是删除表的本身,也删除了表中的数据

(2)删除表,是一个比删除数据库还危险的操作 .删库,是把所有的表都删了,好比被利器所伤,如果不是命中要害,很大概率可以抢救回来;删表,只是删除其中的某一个,好比被钝器所伤,可能不会立即爆发,等爆发的时候就来不及了