【狂神说Java】--MySQL(二)操作数据库

注意点

1:Mysql的关键字不区分大小写

2:如果mysql命令中,如果你的表名或者字段名是一个特殊字符,就需要带 ``
如下图,user 是student表中的一个字段,但是 user 也是mysql的关键字,mysql就会把user变成大写,但是不影响我们查询,不过我们最好改成如下代码

SELECT `user` FROM student

在这里插入图片描述
在这里插入图片描述
3:思路:不会的指令可以在SQLyog中进行操作,然后在历史记录里面会生成相应的代码
在这里插入图片描述

4:固定的语法或关键字必须强行记住

5:金融领域存数据一般用BigDecimal,因为它是字符串类型的浮点数,可以存很多位的小数,直接转过去就行了,因为Java中存在精度问题,计算机无法…无限循环小数,但是字符串可以,用的时候直接转过去就行了

6: 所有的创建和删除操作尽量加上判断(if exists),以免报错

注意点:

字段名,使用``包裹!。
注释 --/**/
·sql关键字大小写不敏感,建议大家写小写
所有的符号全部用英文!

2.1 操作数据库

操作数据库分为3种
1:操作数据库
2:操作数据库中的表
3:操作表中的元素

1、创建数据库

不能创建已经存在的数据库
在这里插入图片描述

CREATE DATABASE  IF NOT EXISTS life;

执行成功
在这里插入图片描述

2、删除

移除数据库

DROP DATABASE life;

在这里插入图片描述
如果移除不存在的数据库会报错,使用如下命令

DROP DATABASE IF EXISTS life;

3、使用数据库

USE ssm;

注意红框处会跳转到我们当前使用的数据库
在这里插入图片描述

4、查看数据库

查看所有数据库

SHOW DATABASES;

在这里插入图片描述

2.2数据库的数据类型

数值

类型 存储 大小 对应Java中的数据类型
tinyint 十分小的数据 1字节
smallint 较小的数据 2个字节
mediumint 中等大小的数据 3个字节
int(常用) 标准的整数 4个字节 Integer
bigint 较大的数据 8个字节 long
float 浮点数 4个字节 float
double 浮点数 8个字节 double
decimal(金融领域常用) 字符串类型的浮点数

字符串

类型 字符串类型 大小
char(不常用) 固定大小 0-255
varchar(最常用,对应java中的String) 可变字符串 0-65535
tinytext 微型文本 2^8-1
text(保存大文本) 文本串 2^16-1

时间日期

在Java中,Java.util.Date

类型 格式 描述
date YYYY-MM-DD 日期格式
time HH:MM:SS 时间格式
datetime(最常用) YYYY-MM-DD HH:MM:SS 时间日期形式
timestamp(较为常用) 时间戳(1970.1.1到当前的毫秒数,全球唯一)
year 年份表示

null

没有值,或未知,注意不要使用null进行运算

2.3 数据库的字段属性(重点)

在这里插入图片描述
unsigned:
无符号的整数,
如果打了√,说明该列不能声明为负数
zerofill:
0填充,如果你定义了5个长度的int类型,但是只写了一个1,就会给你自动填充为00001,即不足的位数使用0来填充
自增
通常理解为,自动在上一条记录的基础上加1,通常用来设计唯一的主键,比如index,必须是整数类型,可以自定义设计主键的起始值和步长,如下图所示
在这里插入图片描述

非空:
假设勾选了非空,那么该列不插入数据就会报错

默认:
设置默认的值

2.4 创建数据库表

举例

--  字段 表名都用``
-- 字符串使用单引号括起来
-- 所有的语句后面加,(英文的),最后一个不用加
-- PRIMARY KEY一般一张表只有一个,所以放在最后
-- use shop;
--  Drop student2;
DROP TABLE `shop`.`student2`; -- 删除某个数据库中的特定表
CREATE TABLE IF NOT EXISTS `student2`(
 `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
 `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
 `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
 `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
 `birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
 `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
 `email`  VARCHAR(50) DEFAULT NULL COMMENT '邮箱',  
  PRIMARY KEY (`id`) -- 设置主键
)ENGINE=INNODB DEFAULT CHARSET=utf8

结果
在这里插入图片描述

格式:

在这里插入图片描述
查看表的结构

DESC student2

在这里插入图片描述
在这里插入图片描述

2.5数据表的类型

数据库引擎:InnoDB MyISAM

关于数据库引擎:默认使用InnoDB,mySql5.5以前使用MyISAM,其他类型的基本没有用,也就是说MyISAM是早些年使用的数据库引擎

在这里插入图片描述
在这里插入图片描述

MyISAM InnoDB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大(约为MyISAM的两倍)

事务支持:假设两个sql同时执行,要么都成功,要么都失败,如果一个成功,一个失败,就无法提交,说明代码失败(可以暂时这样理解)

数据行锁定:锁定一行,假设了两个sql语句要查询同一个表,会把一个表锁住,剩下的就要排序等待,而行锁比表锁效率更高

外键约束:一张表能不能在数据库级别关联另外一张表

全文索引:可以理解为在一篇大的文章里面找某一个字段

综上所述:
MyISAM:节约空间,速度较快
InnoDB:安全性高,事务的处理,多表多用户操作(外键约束,行锁定)

在物理空间存在的位置
所有的表都在Mysql安装目录的Data文件夹下面,数据库的本质是一个文件,本质是文件的存储
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

设置数据库表的字符集编码

CHARSET=utf8

不设置的话,会是mysql默认的字符集编码~(不支持中文!)
MySQL的默认编码是Latin1,不支持中文

在my.ini中配置默认的编码

 character-set-server=utf8

2.6 修改删除表

修改

ALTER TABLE student2 RENAME AS teacher  --修改表的名字
ALTER TABLE teacher ADD  age INT(11)  --给表增加字段
ALTER TABLE teacher MODIFY age VARCHAR(10)  --修改字段 (修改字段的约束)

在这里插入图片描述

ALTER TABLE teacher CHANGE age age1 INT(1)  --修改字段(改变字段名)

在这里插入图片描述

删除

ALTER TABLE teacher DROP age1  --删除表中的字段

保证安全性的删除

DROP TABLE IF EXISTS teacher  --删除表,用 IF EXISTS保证安全性

所有的创建和删除操作尽量加上判断(if exists),以免报错

注意点:

字段名,使用``包裹!。
注释 --/**/
·sql关键字大小写不敏感,建议大家写小写
所有的符号全部用英文!

猜你喜欢

转载自blog.csdn.net/ningmengshuxiawo/article/details/114761070