目录
一、数据库的操作(针对“数据集合”的操作)
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 |
TINYINT | 1字节 | Byte | |
SMALLINT | 2字节 | Short | |
💡INT | 4字节 | Integer | |
BIGINT | 8字节 | 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 |
TEXT | 0-65,535字节 | 长文本数据(这里的长度是自适应的,比较依赖自动扩容,为了明确数据存储的上限需谨慎使用) | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[] |
3.日期类型
数据类型 | 大小 | 说明 | 对应java类型 |
💡DATETIME | 8 字 节 | 范围从1000到9999年,不会进行时区的检索及转换。 | java.util.Date、java.sql.Timestamp |
TIMESTAMP | 4 字 节 | 范围从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)删除表,是一个比删除数据库还危险的操作 .删库,是把所有的表都删了,好比被利器所伤,如果不是命中要害,很大概率可以抢救回来;删表,只是删除其中的某一个,好比被钝器所伤,可能不会立即爆发,等爆发的时候就来不及了