Day01.操作数据库(整体非重点)
一、初始MySQL
1.1 数据库分类以及DBMS
1. 关系型数据库:(SQL)
-
MySQL
-
将数据保存在不同的表中
2. 非关系型数据库 (NoSQL 这里的No是指Not only)
-
Redis
-
对象储存,通过对象的自身属性来决定
3. DBMS (数据库管理系统)
-
数据库的管理软件,科学有效的管理数据。 用于维护和获取数据
1.2 MySQL相关知识
1.2.1 基本指令(这里是5.7版本)
flush privileges; -- 刷新权限
-------------------------------------------------------
mysql -u root -p -- 进入数据库
show databases; -- 查看所有的数据库
mysql> use school -- 切换数据库 use + 数据库名
Database changed
show tables; -- 查看所有数据库中所有表的信息
describe student; -- 显示数据库中所有表的信息 describe 表名
create database xxx; -- 创建一个数据库
exit; -- 退出连接
-- 单行注释 (SQL本来的注释,在sqlyog中可以使用#)
/*
这是多行注释
*/
1.2.2 四种数据库语言
-
DDL 定义 Database definition language
-
DML 操作 Database Manipulation Language
-
DQL 查询 Database query language
-
DCL 控制 Database Control language
二、操作数据库(了解)
须知:操作数据库 > 操作数据库中的表 > 操作数据库表中的数据
2.1 操作数据库的相应指令(数据库层面)
MySQL的指令不区分大小写
-
创建数据库
CREATE DATABASE [IF NOT EXISTS] xxx -
删除数据库
DROP DATABASE [IF EXISTS] xxx -
使用数据库
USE `xxx` -- 如果表明或者字段名为特殊字符,需要加` ` -
查看数据库
SHOW DATABASE -- 查看所有数据库
2.2 数据库的数据类型
数值
-
tinyint 十分小的数据 1个字节
-
smallint 比较小的数据 2个字节
-
mediumint 中等大小的数据 3个字节
-
int (常用) 标准的整数 4个字节
-
bigint 较大的数据 8个字节
-
float 浮点数 4个字节
-
double 浮点数 8个字节
-
decimal (金融常用) 字符串形式的浮点数
字符串
-
char 固定大小的字符串 0 ~ 255
-
varchar (常用) 可变字符串 0 ~ 65535
-
tinytext 微型文本 2^8 - 1
-
text(保存大文本) 文本串 2^16 - 1
时间日期
在Java里面 java.tuil.Date
-
data YYYY-MM-DD 日期格式
-
time HH :mm : ss 时间格式
-
datatime(常用) YYYY-MM-DD HH :mm : ss
-
timestamp(常用) 时间戳(1970.1.1到现在的毫秒数)
-
year 年份表示
null
-
没有值或者未知值
-
注意:不要使用NULL进行运算,因为其计算结果还是NULL
2.3 数据库的字段属性 (重点)
UnSigned (无符号的的整数
-
声明该列不允许负数 .
ZEROFILL (0 填充的
-
不足位数的用 0 来填充 , 如 int(3),5 则为 005
-
INT(M) M指的是最大的显示宽度 最大的有效显示宽度为255 显示宽度与储存大小或者类型包含的值的范围无关
-
而 VARCHAR(m) 后面的m是规定的最大长度 输入内容不能超过这个长度
Auto_InCrement
-
自动增长的 , 每添加一条数据 , 自动在上一个记录数上加 1(默认)
-
通常用于设置主键 , 且为整数类型
-
可定义起始值和步长
-
-
-
当前表设置步长 (AUTO_INCREMENT=100) : 只影响当前表
-
-
-
SET @@auto_increment_increment=5 ; 影响所有使用自增的表 (全局)
-
NULL 和 NOT NULL
-
不给值则为 NULL , 即没有插入该列的数值
-
如果勾选了NOT NULL , 则该列必须有值
DEFAULT
-
默认的
-
用于设置默认值
-
例如, 性别字段, 默认为 "男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为 "男" 的值
2.4 创建数据库表 (重点)
创建数据库表
CREATE TABLE IF NOT EXISTS `student2`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT'学号',
`name` VARCHAR(30)NOT NULL DEFAULT '匿名' COMMENT'姓名',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT'性别',
`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭地址',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
常用命令
SHOW CREATE DATABASE XXX -- 查看创建数据库
SHOW CREATE TABLE XXX -- 查看创建数据表
DESC xxx -- 显示表的结构
2.5 数据表的类型(5.7版本)
-- 关于数据库引擎
/*
INNODB 现在默认使用
MYISAM 早些年使用
*/
| 数据库引擎 | MYISAM | INNODB |
|---|---|---|
| 事务支持 | 不支持 | 支持 |
| 数据行锁定 | 不支持 | 支持 |
| 外键约束 | 不支持 | 支持 |
| 全文索引 | 支持 | 不支持 |
| 表空间的大小 | 较小 | 较大,约为MYISM2倍 |
常规使用操作:
-
MYISAM
-
节约空间,速度较快
-
-
INNODB
-
安全性高
-
事物的处理
-
多表多用户操作
-
在物理空间存在的位置
所有的数据库文件都存在data目录下面 本质上还是文件的储存
MySQL引擎在物理文件上的区别
-
INNODB 在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
-
MYISAM对应文件
-
*.frm 表结构的定义文件
-
*.MYD 数据文件(data)
-
*.MYI 所以文件(index)
-
设置数据库表的字符集编码
CHARSET=UTF8
不设置的话,MySQL的默认编码是Latin1(不支持中文)
还有一种方法就是在物理文件my.ini中配置默认的编码 (不推荐)
character-set-server=utf-8
2.6 修改删除表
修改
-- 修改表名:ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE student2 RENAME AS student3
-- 字段重命名: ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型
ALTER TABLE student3 CHANGE gamepwd gamezzx INT(1)
-- 增加表的字段: ALTER TABLE 表名 ADD 字段名 数据类型
ALTER TABLE student3 ADD gamepwd INT(10)
-- 修改表的字段:ALTER TABLE 表名 MODIFY 字段名 更新后的数据类型
ALTER TABLE student3 MODIFY gamepwd VARCHAR(2)
-- 删除表的字段:ALTER TABLE 表名 DROP 字段名
ALTER TABLE student3 DROP gamezzx
-- 删除表:DROP TABLE IF EXISTS 表名
DROP TABLE IF EXISTS student3
浙公网安备 33010602011771号