数据库的背景知识:
1.结构说明:Mysql是客户端—服务器结构的程序。
2.数据时存储在服务器硬盘上的。
数据库的线性描述:数据库服务器-->多个数据库-->多个数据表-->多个记录行-->多个记录列
关于MySQL数据库的基本操作:
小贴士:1.MySQL编写时,是不会区分大小写的,所以大家大写小写都可以,大小写混用也是没问题的。2.注意,所有的标点符号,必须是键盘在英文模式下的。
1.查看所有数据库:语法 :show databases;
如图,我们查看到的就是所有之前已经创建的数据库。
2.数据库的创建:语法:create database 数据库名称;
如图所示,我们创建了一个market数据库;再次查询所有数据库就可以看到marktet数据库了。
我用黄色的荧光笔给大家标注了出来。
3.选中数据库:语法:use 数据库名称;
说明:我们由之前背景知识的图片可以知道,表格是放在数据库里的,但是数据库并不唯一,所以我们要想创建表格,先要选定一个你想使用的数据库。因此,为了避免混淆,一定要注意数据库的名字,不要随便起名,要根据需求,有实际意义。
如图所示:出现Database changed证明我们已经选择成功;
4.删除数据库 语法:drop database 数据库名称;(drop(v.) 落下,终止)
我们可以看到,进行删除操作后,数据库List当中已经没有数据库marktet了。
注意:删除数据库是非常危险的操作,我们刚开始没有一些重要的数据可以随便删除,以便练习。
以后工作,比如你操作的是银行用户账户的表格,表格中每行记录着每个用户的账户数目,此时你如果删除,虽然有技术可以恢复,但是耽误的时间成本导致的财物损失是非常可怕的!
我们学习每一种语言,最基本的在创建变量时要使用正确的数据类型,因此我们接下来看一下MySQL数据类型有哪些。
数值类型:分为整型和浮点型
数据类型 | 大小 | 特殊说明 | 对应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 |
注意:对于整型类型的范围: 1. 有符号范围:-2^(类型字节数*8-1)到2^(类型字节数*8-1)-1,如int是4字节,就 是-2^31到2^31-1 2. 无符号范围:0到2^(类型字节数*8)-1,如int就是2^32-1
同时尽量不要使用Unsigned int。因为往往Int放不下的数据,无符号整型一样放不下。所以设计时,不如将数据设置为Bigint。
字符串类型:
数据类型 | 大小 | 说明 | 对于java类型 |
VARCHAR (SIZE) | 0-65,535字节 | 可变长度字符串 | String |
TEXT | 0-65,535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[] |
关于二进制文本说明:有时候我们打开一个文本,会发现里面全都是乱码或者是生僻字,这些一般是文本创建人处于保密或其他原因,设置成了二进制文本,因此在我们看来就是一堆乱码符号生僻字。
日期类型:
之前我们应用的比较少,接触不多。但是在日常工作生活中,这是非常重要的数据类型,员工上下班打卡时间;学生体育锻炼时间打卡;以及学生出校返校时间。常用的表格都会大量使用到日期类型,所以请大家重视起来。
数据类型 | 大 小 | 说明 | 对应java类型 |
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的 检索及转换。 | ava.util.Date、 java.sql.Timestamp |
TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时 区并进行转换。 | java.util.Date、 java.sql.Timestamp |
关于库的基本操作我们和数据类型我就基本介绍到此。库的操作大家应该也很明白了,都是比较宏观的操作,很容易理解。接下来,我们开始走进细节,开始表的操作介绍。
1.1 创建表:语法 create table table_name(表的名字)(field1 datatype, field2 datatype, field3 datatype);
如图,我们创建了一个名为book的表,有两列:名字以及ID号
1.2查看表:语法 desc 表名;
其中:Key:指索引类型;后面我们会介绍索引。
extra:顾名思义 指扩充或补充;
1.3删除表: 语法:drop table 表名;
如图,我们删除后,在java106这个库中,就找不到book表了。
额外知识补充:
1.注意:表名以及列名在创建时,不允许和关键字重名
如果实在想重名,也不是不可以,就要给对应的名字加上反引号`(波浪键位置);
2.关于MySQL的字符集说明
字符集指的是某个范围字符的编码规则,而Mysql的字符集默认是拉丁文,所以导致如果单纯按默认的规则创建一个数据库,我们使用varchar()插入汉字的时候就会报错。如下图:
为了解决这个问题,我们必须在创建数据库的时候就要人为设置字符集。
我们看到,在认为设置字符集之后,中文就可以正常插入了。具体插入的方法我们后再将。
3.同一个数据库当中是不允许有两个表的名字相同的。同样的,不同数据库的名字也是不允许相同的。
我们可以用if not exists关键句来将此错误变为警报,并通过show wainings来查看警报的具体内容。
4.同样的,drop的时候,也不可以(不可能)删除一个不存在的数据库或者表。
我们同样可以使用 if exists来将错误变为警报。