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的指令不区分大小写

  1. 创建数据库

    CREATE DATABASE [IF NOT EXISTS] xxx
  2. 删除数据库

    DROP DATABASE [IF EXISTS] xxx
  3. 使用数据库

    USE `xxx`  -- 如果表明或者字段名为特殊字符,需要加` `
  4. 查看数据库

    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 早些年使用
*/
数据库引擎MYISAMINNODB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为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

 

posted on 2022-03-31 10:11  Oooops2  阅读(39)  评论(0)    收藏  举报