当前位置:   article > 正文

MySQL数据库学习1_了解mysql

了解mysql

初识 MySQL


  • 数据库是所有软件体系中最核心的存在

数据库


  • 数据库(DB:DataBase)
  • 概念:数据仓库,软件,安装在操作系统之上,可以存储大量数据。数据500万以上需要优化
  • 作用:存储,管理数据

数据库分类


关系型数据库(SQL)

  • MySQL,Oracle,Sql Server,DB2,SQLlite
  • 通过表和表之间,行和列之间的关系进行数据的存储

非关系型数据库(NoSQL)

  • Redis,MongoDb
  • 通过对象自身的属性来决定存储

DBMS(数据库管理系统)


  • 数据库的管理软件
  • 科学有效的管理,维护和获取数据
  • MySQL 本质是一个数据库管理系统

sqlyog 的使用



  • sqlyog 是 MySQL 的一个可视化软件
  • 每一个 sqlyog 的执行操作,本质就是对应了一个 sql 语句,可以在软件的历史记录中查看

创建第一张表

  1. 创建新的数据库

在这里插入图片描述

在这里插入图片描述

  1. 新建一张表

在这里插入图片描述

在这里插入图片描述

数据库引擎

所有的数据库文件都是存在 data 目录下的,一个文件夹都对应一个数据库,本质还是文件的存储

  • INNODB 默认使用,安全性高,支持事务处理,可以多表多用户操作
  • MYISAM 早些年使用,节约空间,速度较快

区别

INNODBMYISAM
事务支持支持不支持
数据行锁定支持不支持,只能表锁定
外键约束支持不支持
全文索引不支持支持
表空间的大小较大,约为 MYISAM 的 2 倍较小
物理文件只有表目录中的 .ibd 文件和上级目录下的 ibdata1 文件.sdi 文件(存储表结构),.MYD 文件(存储数据),.MYI 文件(存储索引)

数据库的字符集编码

  • MySQL 的默认编码是 Latin1,不支持中文
  • 一般使用 utf8mb4

命令行指令


  • 所有的语句都必须以分号结尾

命令行连接

mysql -u root -p123456       -- 连接数据库
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';       -- 修改用户密码
flush privileges;       -- 刷新权限
exit;       -- 退出连接
  • 1
  • 2
  • 3
  • 4

命令行操作数据库

show databases;       -- 查看全部数据库
use school       -- 切换进入数据库
show tables;       -- 查看数据库中所有的表
describe student;       -- 查看表结构
create database teacher;       -- 创建一个名为teacher的数据库
-- #       -- 两种单行注释方法
/*
*/       -- 多行注释
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

操作数据库


  • 本质:CRUD(增删改查)
  • 操作数据库 > 操作数据库中的表 > 操作数据库中表的数据
  • mysql 关键字不区分大小写

操作库

创建库
CREATE DATABASE `库名`;
  • 1
CREATE DATABASE school;       -- 直接创建,存在会报错
CREATE DATABASE IF NOT EXISTS school;       -- 先判断再创建
  • 1
  • 2
删除库
DROP DATABASE `库名`;
  • 1
DROP DATABASE teacher;       -- 直接删除,不存在会报错
DROP DATABASE IF EXISTS teacher;       -- 先判断再删除
  • 1
  • 2
打开库
USE `库名`;
  • 1
USE school;       -- 打开数据库
  • 1

如果库名,表名或字段名是一个特殊字符,就需要在名称前后加反引号(``),防止与 MySQL 数据库关键字重名

查看库
SHOW CREATE DATABASE `库名`;
  • 1
SHOW DATABASES;       -- 查看所有数据库
SHOW CREATE DATABASE school;       -- 查看创建数据库的语句    
  • 1
  • 2

操作表

数据库的数据类型
数值
数据类型字节数
tinyint十分小的整数数据1个字节
smallint较小的整数数据2个字节
mediumint中等大小的整数数据3个字节
int(常用)(对应 java 的 int)一般整数数据4个字节
bigint(对应 java 的 long)较大的整数数据8个字节
float(对应 java 的 float)单精度浮点数4个字节
double(对应 java 的 double)双精度浮点数8个字节
decimal字符串形式的浮点数

从MySQL 8.0.17开始,对于整数数据类型,不建议如 INT(M) 格式定义,而是建议使用如 INT 直接定义

金融计算的时候,一般使用 decimal 来避免出现精度问题

字符串
数据类型长度
char固定大小字符串0~255 字符
varchar(常用)(对应 java 的 String)可变字符串0~65535 字符
tinytext微型文本2^8-1 字节
text(保存大文本)文本串2^16-1 字节
时间日期
数据类型
dateYYYY-MM-DD日期格式
timeHH:mm:ss时间格式
datetime(最常用)YYYY-MM-DD HH:mm:ss时间日期格式
timestamp(较常用)时间戳,1970.1.1 00:00:00 到现在的毫秒数
year年份格式
null
  • 没有值,未知
  • 不要使用 null 进行运算,无意义,结果为 null
数据库的字段属性
Unsigned
  • 只能对数据类型为数值的属性使用
  • 使用后声明该属性的值不能为负数
zerofill
  • 当数据长度小于规定长度时,自动用 0 不全空位
  • 例如:int(10),10 --> 0000000010
自增(AUTO_INCREMENT)
  • 自动在上一条记录的基础上加 1(默认)
  • 通常用来设置唯一的主键
  • 必须是整数类型
  • 可以自定义设置主键自增的起始值和步长
非空(NOT NULL)
  • 使用后规定属性不能为空,为空会报错
默认
  • 使用后,不填数据时,自动写入默认值
创建表

格式

CREATE TABLE IF NOT EXISTS `表名`(
    `字段名` 字段类型 属性 索引 注释,
    `字段名` 字段类型 属性 索引 注释,
    `字段名` 字段类型 属性 索引 注释
)表类型 表字符集 注释
  • 1
  • 2
  • 3
  • 4
  • 5
-- 字符串使用单引号括起来
-- 主键一般在最后设置,一个表中一般只有一个唯一主键
CREATE TABLE IF NOT EXISTS `student`(       -- 创建一个新表
-- 表的属性设置
`id` INT NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '名字',
`password` VARCHAR(16) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` DATETIME DEFAULT '1970.1.1' COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(20) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)       -- 设置主键
)ENGINE=INNODB DEFAULT CHARSET=utf8mb4       -- 设置表的类型和字符集
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
查看表
SHOW CREATE TABLE `表名`;
DESC `表名`;
  • 1
  • 2
SHOW CREATE TABLE student;       -- 查看数据表的定义语句
DESC student;       -- 查看表的结构
  • 1
  • 2
删除表
ALTER TABLE `表名` DROP `字段名`;
DROP TABLE `表名`;       -- 直接删除,不存在会报错
DROP TABLE IF EXISTS `表名`;       -- 先判断再删除
  • 1
  • 2
  • 3
ALTER TABLE `teacher1` DROP `phone`;       -- 删除字段
DROP TABLE `teacher`;       -- 直接删除,不存在会报错
DROP TABLE IF EXISTS `teacher`;       -- 先判断再删除
  • 1
  • 2
  • 3
修改表
ALTER TABLE `旧表名` RENAME AS `新表名`;       
ALTER TABLE `表名` ADD `字段名` 字段类型 属性 索引 注释;      
ALTER TABLE `表名` MODIFY `字段名` 字段类型 属性 索引 注释;       
ALTER TABLE `表名` CHANGE `旧字段名` `新字段名` 字段类型 属性 索引 注释;      
  • 1
  • 2
  • 3
  • 4
ALTER TABLE `teacher` RENAME AS `teacher1`;       -- 修改表名
ALTER TABLE `teacher1` ADD `age` INT NOT NULL COMMENT '年龄';       -- 增加字段
ALTER TABLE `teacher1` MODIFY `phone` VARCHAR(11);       -- 修改字段,不能重命名,只能修改约束
ALTER TABLE `teacher1` CHANGE `phone` `phone1` INT;       -- 修改字段,可以重命名,可以修改约束
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/680274
推荐阅读
相关标签
  

闽ICP备14008679号