前言
一般数据库分为两种,关系型数据库和非关系型数据库。而我们使用MySQL操作的是关系型数据库。
SQL分类:
- DDL数据定义语言,用于维护存储数据的结构。代表指令:create,drop,alter
DML数据操纵语言,用于对数据进行操作。代表指令:insert,delete,updat DML中又单独分了一个DQL,数据查询语言,代表指令:select
- DCL数据控制语言,主要负责权限管理和事物。代表指令:grant,revoke,commit
接下来通过对数据库、表进行操作,来理解
注:在MySQL当中,不区别大小写。
一.数据库的操作
1.1显示当前数据库
显示当前数据库,显示的是 目前为止 所拥有的数据库。
语法格式:SHOW DATABASES;
注:MySQL中会有4个自带的,因此千万不能操纵这4个数据库。否则可能会导致MySQL异常,需要重新安装。
1.2创建数据库
创建有3种方式式
- 创建一个新的数据库,用于存放数据。 语法格式:CREATE DATABASE 数据库名;
- 创建一个数据库,不确定是否存在。 (使用IF NOT EXISTS 如果存在则不创建) 语法格式:CREATE DATABASE IIF NOT EXISTS 数据库名;
- 创建一个 指定字符集 的数据库,不确定是否存在。 语法格式:CREATE DATABASE IF NOT EXISTS 数据库名 CHARACTER SET 字符集名;
注:1.如果创建的数据库没有指定字符集时,默认为 utf8 。
2.由于MySQL的utf8编码不是真正的utf8,它不包含某些复杂的中文字符,建议使用utf8mb4;
- 3.字符集一般使用两种,gbk和utf8,不同的字符集,字符排序是不一样的。 gbk使用2个字节代表一个中文,utf8使用3个字节代表一个中文。
创建实例图:
1.3使用数据库
此方式,更加趋向于,指定数据库,然后对其进行其他操作。
语法格式:use 数据库名;
1.4删除数据库
语法格式:drop database 数据库名;
此操作,将数据库彻底删除,包含存储在数据库中的表和数据。慎之又慎!!!
二.数据类型
数据表里存放的数据是需要数据类型的。而数据库的数据类型和编程语言的数据类型不同,因此需要单独的学习。
可是有人会说怎么麻烦,为什么不通用呢?因为数据库出现的时间比Java语言早。
2.1数值类型
数值分为整型和浮点型。
数据类型 | 大小 | 说明 | 对应的java类型 |
BIT [(M)] | M指定位数,默认为1 | 二进制数,M范围1到64,存储数值范围从0到2^M-1 | 默认为1时,对应Boolean |
TINYINT | 1字节 | Byte | |
SMALLINT | 2字节 | Short | |
INT | 4字节 | Interger |
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 | 双精度,M指定长度,D指定小数位数 | BigDecimal |
注:1字节(bytes)=8bit。 数值类型可以指定为无符号,表示不取负数。
2.2字符串类型
数据类型 | 大小 | 说明 | 对应的java类型 |
VARCHAR(SIZE) | 0 —— 65,535字节 | 可变长度字符串 | String |
TEXT | 0 —— 65,535字节 | 长文本数据 | String |
MEDIUMTEXT | 0 —— 16 777 215 字节 | 中等长度文本数据 | String |
BLOB | 0 —— 65,535字节 | 二进制形式长文本数据 | byte[ ] |
2.3日期类型
数据类型 | 大小 | 说明 | 对应的java类型 |
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换。 | java.util.Date、java.sql.Timestamp |
TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换 | java.util.Date、java.sql.Timestamp |
一般使用DATETIME。
三.数据表的操作
需要操作数据表,我们需要先选择数据库: use 数据库名;
3.1 创建表结构。
语法格式:create Table 表名(
字段名1 数据类型 [ 列级完整性约束],
------------------------- [ 列级完整性约束],
字段名n 数据类型 [ 列级完整性约束],
);
列级完整性约束:
- NOT NULL :限制列取值不为空。
- DEFAULT: 给定列的默认值。
- UNIQUE:限制列的取值不重复。
- CHECK:限制列的取值范围。
- PRIMARY KEY:指定本列为主码。
- FREIGN KEY :定义本列为引用其他表的外码。
注:列级完整性约束 可不用 定义,目前刚刚接触,之后会有更详细讲解。
comment--->注释,可加可不加。且中文需要英文的单引号包括。
讲解:
3.2查看数据库中拥有的数据表
语法格式:show tables;
3.3查看指定的表结构
语法格式:desc 表名;
讲解:
3.4修改表结构
对数据表的结构进行修改。
1.修改列的数据类型定义: alter table 表名 MODIFY 字段名 新字段类型 ; 2.修改列名 : alter table 表名 CHANGE COLUMN 旧字段名 新字段值 字段类型 ; 3.更改表名:alter table 旧表名 RENAME 新表名 ;
4.添加列:alter table 表名 add 字段名 字段类型;
1.修改列的数据类型定义
2.修改列名
3.更改表名
4.添加列
3.5删除表结构
1.将数据表彻底删除:drop 表名;
2.删除数据表字段:2种,第一种删除单列:ALTER TABLE 表名 DROP 字段;
第二种删除多列: ALTER TABLE 表名 DROP 字段1,字段2;
删除字段book_price之后,表中便无此字段。
总结
理解方式: 数据库------>仓库,数据表------> 存放在仓库中已分类好的货物 ,数据库包含数据表。
而数据库的操作步骤:
1.用户在客户端输入 SQL。 2.客户端会把 SQL 通过网络发送给服务器 3.服务器执行这个 SQL把结果返回给客户端 4.客户端收到结果,显示到界面上