MySQL Day01 概述及数据库、表操作

MySQL概述及数据库、表操作

前言:

JavaEE:企业级Java开发 Web

前端(页面:展示,数据!)

后台(连接点:连接数据库JDBC,链接前端(控制,控制视图跳转,给前端传递数据))

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

1 什么是数据库?

数据库(DB DataBase)

概念:数据仓库~软件,安装在操作系统(window, linux, mac…)之上!

作用:存储数据,管理数据,可以存储大量的数据,500万以下还是可以的!

2 数据库分类

关系型数据库: (SQL)

  • MySQL,Oracle,Sql Server, DB2,SQLlite
  • 通过表和表之间,行和列之间的关系进行数据的存储,比如学院信息表,考勤表…

非关系型数据库:(NoSQL~Not Only SQL)

  • Redis,MongDB
  • 以对象存储,通过对象自身的属性来决定操作

DBMS(数据库管理系统)

  • 数据库的管理软件,科学有效的管理我们的数据。维护和获取数据

  • MySQL-数据库管理系统!

在这里插入图片描述

3 MySQL简介

MySQL是一个关系型数据库管理系统

前世:瑞典MySQL AB公司

今生:属于Oracle旗下产品

MySQL是最好的RDBMS(RElational Database Management System,关系数据库管理系统)应用软件之一。开源的数据库软件~

体积小、速度快、总体拥有成本低,招人成本比较低。

中小型网站、或某些大型网站都在使用!

此处省略MySQL的安装与初始化,可自行查找博客。

我采用的是 MySQL 8.0.18 + Sequel Pro

4 连接数据库

命令行连接!

mysql -u root -p123123 -- 连接数据库

在这里插入图片描述

查看数据库、表基本操作:

-- 单行注释(SQL的的单行注释)
/* (SQL的多行注释)
hello
world
*/
mysql> show databases; -- 查看所有数据库

mysql> use test; -- 使用数据库test

mysql> show tables; -- 查看该数据库中所有的表

mysql> describe teacher; -- 显示数据库中某个表的信息

mysql> create database jeverdata; -- 创建一个新的数据库

mysql> show databases; -- 查看此时的数据库

mysql> exit -- 退出连接数据库 
Bye

数据库xxx语言:

  • DDL 定义 (Database Define Language)
  • DML 操作 (Database Manager Language)
  • DQL 查询 (Database Query Language)
  • DCL 控制 (Database Control Language)

5 操作数据库

操作数据库 --> 操作数据库中的表 --> 操作数据库中表的数据

mysql关键字不区分大小写

5.1 创建数据库

mysql> create database jeverdata;
Query OK, 1 row affected (0.00 sec)

也可直接在Navicat中创建,右键单机我的连接,选择创建数据库,之后按照下图勾选,即可创建成功!

在这里插入图片描述

2、删除数据库

mysql> drop database jeverdata;
Query OK, 0 rows affected (0.00 sec)

3、使用数据库

mysql> use test;
Database changed

4、查看数据库

show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| medicine           |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set (0.00 sec)

5.2 数据库的列类型

数值

  • tinyint 十分小的数据 1个字节

  • smallint 较小的数据 2个字节

  • int 标准的整数 4个字节

  • bigint 较大的数据 8个字节

  • float 浮点数 4个字节

  • double 浮点数 8个字节

  • decimal 字符串形式的浮点数 金融计算的时候,一般使用decimal

字符串

  • char 字符串固定大小的 0~255
  • **varchar 可变字符串 0~65535 ** 常用的变量 String
  • tinytext 微型文本 2^8-1
  • text 文本串 2^16-1 存放大文本

时间日期

java.util.Data

  • data YYYY-MM-DD 日期格式
  • time HH:mm:ss 时间格式
  • datatime YYYY-MM-DD HH: mm: ss 最常用的时间格式
  • timestamp 时间戳 --> 1970.1.1到现在的毫秒数! 也较为常用!
  • year 年份表示

null

  • 没有值,未知
  • 注意,不要使用NULL进行运算,结果为NULL

5.3 数据库的字段属性(重点)

Unsigned:

  • 无符号的整数
  • 声明了该列不能声明为负数

zerofill:

  • 0填充
  • 不足的位数,使用0来填充,int(3) --> 5~005

自增:

  • 通常理解为自增,自动在上一条记录的基础上+1(默认)
  • 通常用来设计唯一的主键~index,必须是整数类型
  • 可以自定义设计主键自增的起始值和步长

非空 not null

  • 假设设置为not null,如果不给它赋值,就会报错!
  • NULL,如果不填写值,默认就是null!

默认:

  • 设置默认的值!
  • gender,默认值为男,如果不指定该列的值,则会有默认的值

扩展:

/*项目中根据规范每一个表必须要存在以下五个字段:
id		主键
`version`		乐观锁
is_delete		伪删除
gmt_create	创建时间
gmt_update	修改时间
*/

6 操作数据表

6.1 创建表案例

-- 目标:创建一个school数据库
-- 创建学生表(列,字段)    使用SQL创建
-- 学号int、登陆密码varchar(20)、姓名、性别varchar(2)、出生日期(datatime)、家庭住址、email

-- 注意点,使用英文(),表的名称和字段 尽量使用``扩起来
-- AUTO_INCREMENT 自增
-- 字符串使用单引号扩起来
-- 所有的语句后面加,(英文的),最后一个不加
-- PRIMARY KEY 主键,一个表只能有一个唯一的主键
create table if not exists `student`(
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`gender` 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

说明:其中数据库的引擎INNODB在 ‘数据表的类型’ 中说明。

格式:

CREATE TABLE [IF NOT EXISTS] `表名`(
	`字段名` 列类型 [属性][索引][注释],
  `字段名` 列类型 [属性][索引][注释],
	...
  `字段名` 列类型 [属性][索引][注释]
)[表类型][字符集设置][注释]

常用查看语句:

SHOW CREATE DATABASE school -- 查看创建数据库的语句
SHOW CREATE TABLE student -- 查看student数据表的定义语句
DESC student; -- 查看表的结构

数据表的类型

-- 关于数据库的引擎
/*
InnoDB 默认使用~
MYISAM 早些年使用
*/
MYISAM INNODB
事务支持 不支持 支持
数据行锁定 不支持(表锁定) 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为MYISAM两倍

常规使用操作:

  • MYSIAM: 节约空间,速度较快
  • INNODB: 安全性高,支持事务的处理,多表多用户操作

设置数据库表的字符集编码:

CHARSET=utf8

如果不设置,会是mysql默认的字符集编码~(不支持中文!)

MySQL的默认编码是Latin1,不支持中文。

6.2 修改和删除数据表字段

-- 修改表名: ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE students RENAME AS student;

-- 增加表的字段: ALTER TABLE 表名 ADD 字段名 列属性
ALTER TABLE student ADD age INT(11);

-- 修改表的字段:
-- ALTER TABLE 表名 MODIFY 字段名 列属性[]
ALTER TABLE student MODIFY age VARCHAR(11) -- 修改约束
-- ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性[]
ALTER TABLE student CHANGE age Age INT(11) -- 字段重命名

-- 删除表的字段
ALTER TABLE student DROP Age;

-- 删除表(如果表存在再删除)
DROP TABLE IF EXISTS student;

注意:

  • change 用来字段重命名,不能修改字段类型和约束;
  • modify 不能用来字段重命名,只能修改字段类型和约束;

所有的创建和删除操作尽量加上判断,以免报错!

写在最后

Making the most of every opportunity, because the days are evil.

——Ephesians 5: 16

To Demut and Dottie~

发布了35 篇原创文章 · 获赞 44 · 访问量 3861

猜你喜欢

转载自blog.csdn.net/qq_44958172/article/details/105339391
今日推荐