MySQL基础 | OVERVIEW

1.数据库概述

1.1两种类型

关系型数据库

MySQL、sqlServer等,通过表和表之间、行和行之间的关系进行数据库连接

非关系型数据库

Redi、MongDB等,对象存储、通过对象自身的属性来决定

1.2DB/DBS/DBMS三者关系

  1. DBS包括DB和DBMS。数据库系统是一个通称,包括数据库、数据库管理系统、数据库管理人员等的统称,是最大的范畴。
  2. DBMS和DB:DBMS是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库(DB)。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库(DB)中的数据。
  3. DBS和DB:数据库系统DBS是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库(DB)和数据管理员组成。

1.3基本语句

1
2
3
4
5
6
7
8
9
10
11
刷新权限 flush privileges;
查询数据库 show databases;
查询表 show tables;
切换数据库 Use 数据库名称;
显示数据库表中所有表信息 describe 表名称;
创建数据库 creat database 数据库名称;
退出数据库 exit;
单行注释 -- 注释内容;
多行注释 /*和Java写法一样*/
更改密码
update mysql.user set authentication_string=password('123456') where user='root'and Host = 'localhost';

1.4字段属性

  • Unsigned:无符号的整数,声明了该列不可声明为负数
  • Zerofill:不足的位数用0来补充 int(3) 5-005
  • 自增:自动在上一条记录上+1,通常用于设置唯一的主键 index,必须是整数类型,可在高级选项中自定义设置主键自增和起始步长
  • 非空:设置为非空,若不赋值就会报错,不设置不写的情况下,默认显示(NULL)

SQLyog示意图

1.5数据类型

数据类型表

1.6表类型

  • MYISAM 节约空间,速度更快
  • INNODB 主流类型,安全性高,事务的处理,多表用户操作
  • 在物理空间的位置,数据库文件都存在在data目录下,一个文件对应一个数据库
  • 两者在物理上的区别
  1. INNODB生产为frm结尾的文件,及上级目录ibdata1文件
  2. MYISAM生产三个文件
  3. .frm表结构定义文件
  4. .MYD 数据文件(data)
  5. .MYI 索引文件(index)

2.操作数据库

2.1创建数据库

1
2
3
4
5
6
7
-- 创建
CREATE DATABASE IF NOT EXISTS 数据库名称
-- 删除
DROP DATABASE 数据库名称
-- 如果和关键词冲突需加 `
-- 使用数据库
USE `school`

2.2创建表

1
2
3
4
5
6
-- 格式 []代表为可选项
CREATE TABLE IF NOT EXISTS `表名`(
`字段名` 列类型(位数) [属性] [索引] [注释] ,
............
`字段名` 列类型(位数) [属性] [索引] [注释]
)ENGINE=数据表类型 DEFAULT CHARSET=字符集
1
2
3
4
5
6
7
-- 例子
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(10) NOT NULL AUTO_INCREMENT COMMENT 'jsei_id',
`name` VARCHAR(30) NOT NULL COMMENT 'name',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- CHARSET=XXX 为设置此表的字符集

2.3查询指令

1
2
3
4
5
-- 显示创建这张表/数据库使用的语句
SHOW CREATE TABLE jsei_info
SHOW CREATE DATABASE school
-- 显示表的结构
DESC `表名称`

2.4修改删除表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 修改表名称
ALTER TABLE 表名称 RENAME AS 新名称
-- 添加属性
ALTER TABLE 表名称 ADD `字段名称` 数据类型(100)
-- 修改约束
ALTER TABLE 表名称 MODIFY `字段名称` 数据类型(3)
-- 修改字段名
ALTER TABLE 表名称 CHANGE `旧的字段名` `新的字段名` CHAR(3)
-- 删除表字段
ALTER TABLE 表名称 DROP `字段名称`
-- 删除表
DROP TABLE IF EXISTS 表名称
-- 保留表格式 清除全部数据
TRUNCATE TABLE `表名称`
  • MODIFY只能修改字段的数据类型
  • CHANGE能修改字段名和数据类型

3.外键理解

3.1概述

  • 两种方式都为物理外键,看懂即可基本不用
  • 数据库作为单纯的表,存储数据只有行和列
  • 阿里开发手册:不得使用外键与级联,一切外键概念必须在应用层解决

3.2注意事项

  • 删除有外键关系的表的时候
  • 必须要删除引用别人的表(从表)
  • 再删除被引用的表(主表)

3.3创表时增加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
--主表
CREATE TABLE `表名称` (
`id` INT(10) NOT NULL AUTO_INCREMENT COMMENT 'jsei_id',
`gradeid` VARCHAR(10) NOT NULL COMMENT '年纪代号',
PRIMARY KEY (`id`),
-- 设置约束 `FK_字段名`为默认格式
KEY `FK_gradeid` (`gradeid`),
--REFERENCES后面代表引用的表和表里面的引用列
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
-- 被引用表
CREATE TABLE `grade`(
`gradeid` VARCHAR(10) COMMENT '年纪代号',
`gradename` VARCHAR(10) NOT NULL COMMENT '名字',
PRIMARY KEY (`gradeid`)
)ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

3.2使用ALTER

1
2
ALTER TABLE `表名称`
ADD CONSTRAIN `FK_字段名` FOREIGN KEY (`字段名`) REFERENCES `被引用表名称`(`被引用表字段`)

MySQL基础 | OVERVIEW
http://example.com/2022/06/23/MySQL/MySQL概述/
Author
John Doe
Posted on
June 23, 2022
Licensed under