文章目录
注意点
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关键字大小写不敏感,建议大家写小写
所有的符号全部用英文!