数据库和SQL的学习对于开发来说是非常重要的,本篇将带你快速上手MySQL并了解什么是DDL和DML!​

一、数据库

1、概述

1.1 数据库

DataBase (DB),是存储和管理数据的仓库。如下是一些市面上常见的数据库产品

1.2 数据库管理系统

DataBase Management System (DBMS),操纵和管理数据库的大型软件。

1.3 SQL

Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。

二、MySQL

1、安装配置

官网:https://www.mysql.com/
关于MySQL的下载安装以及环境变量的配置,网上有很多教程,这里不再赘述。

1.1 初始化MySQL

1
mysqld --initialize-insecure

1.2 注册MySQL服务

1
mysqld -install

1.3 启动MySQL服务

1
net start mysql

1.4 修改默认账户密码

1
mysqladmin -u root password 1234

这里的1234是指默认管理员(即root账户)的密码,可以自行修改。

1.5 登录MySQL

1
mysql -uroot -p1234

同样1234是你自己的密码。
或者直接输入

1
mysql -uroot -p

再输入对应密码,这样可以保证密码的安全性。

2、MySQL数据模型 & SQL简介

2.1 概述

关系型数据库(RDBMS): 建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

2.2 特点

1)使用表存储数据,格式统一,便于维护
2)使用SQL语言操作,标准统一,使用方便,可用于复杂查询

2.3 MySQL数据模型

2.4 SQL简介

SQL:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。

1)通用语法
1.1)书写规范
SQL语句可以单行或多行书写,以分号结尾。

SQL语句可以使用空格/缩进来增强语句的可读性。

1
show databases;

MySQL数据库的SQL语句不区分大小写。

1
SHOW DATABASES;

1.2)注释
单行注释

1
2
-- 注释内容 或 #注释内容(MySQL特有)
-- show databases;

多行注释

1
2
/*注释内容*/
/*show databases;*/

2.4 SQL分类

SQL通常被分为4大类,如下,我们需要重点掌握前三类即 DDL,DML和DQL

3、DDL-数据库操作

整体学习框架

3.1 查询

查询所有数据库

1
show databases;

查询当前数据库

1
select database();

3.2 使用

使用数据库

1
use 数据库名;

3.3 创建

创建数据库

1
create database [ if not exists ] 数据库名;

3.4 删除

删除数据库

1
drop database [ if exists ] 数据库名;

4、MySQL图形化工具

我使用的是Navicat Premium 15,关于下载安装,网上也有很多教程,但好像它是收费的,这也简单,网上一搜破解版一大堆,这里就不再赘述了。
Navicat官网:https://www.navicat.com/en/download/navicat-for-mysql

当然,如果实在不想安装,可以直接使用我们强大的IDEA,因为IDEA里面已经集成了DataGrip,如下,我们只要在IDEA中连接好我们的MySQL数据库,就可以快乐地写SQL了。

DataGrip是JetBrains旗下的一款数据库管理工具,是管理和开发MySQL、Oracle、PostgresQL的理想解决方案。

5、DDL-表结构操作

5.1 创建表

1)基本语法

1
2
3
4
5
create table 表名(
字段1 字段类型 [约束] [ comment 字段1注释]
......
字段n 字段类型 [约束] [ comment 字段n注释]
) [comment 表注释];

2)约束
约束是作用于表中字段上的规则,,用于限制存储在表中的数据

目的:保证数据库中数据的正确性、有效性和完整性。

3)案例
在已有的数据库 db1下创建一个uer表,字段有 id,username(用户名),name(姓名),age,gender。类型及长度自行设定,合理即可。
要求添加的约束为:id(主键约束,且设置自增),username(非空且唯一),name(非空),gender(默认值为男)


对应的SQL语句如下:

1
2
3
4
5
6
7
8
9
-- DDL:表结构
-- 创建表:基本语法
create table tb_user(
id int primary key auto_increment comment 'ID,唯一标识',
username varchar(20) not null unique comment '用户名',
name varchar(10) not null comment '姓名',
age int comment '年龄',
gender char(1) default '男' comment '性别'
) comment '用户表';

设置主键自增:auto_increment

创建完成后,可以右键 tb_user表 ->设计表,通过图形化界面方式来进行相关的校验和修改


运行SQL后,右键刷新数据库 db1,就会显示新创建的表,双击表,就能添加数据了。可以不用编辑 id,因为设置了自增。同理不编辑 gender的话默认都为男

注1:按 tab键自动切换到下一个字段进行编辑,按方向键 上下左右 也能实现切换。

注2:添加完数据后需要 ctrl+s保存,否则可能不会添加成功。也可以通过新建查询的方式,查询一下该表,看其中的数据来验证是否添加成功。

5.2 数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
1)数值类型
了解一些常用的,并对范围能有一个大概的了解

2)字符串类型
主要熟悉 char 和 varchar即可

1、定长字符串:如 char(10),最多只能存10个字符,不足10个字符,占用10个字符空间。性能高但浪费空间(以空间换时间)

2、变长字符串:如 varchar(10),最多只能存10个字符,不足10个字符,按照实际长度存储。性能低但节省空间(以时间换空间)

3)日期时间类型
主要熟悉 date 和 datetime即可

例如:birthday ->date,update_time ->datetime

4)设计流程
根据页面原型/需求创建表(设计合理的数据类型、长度、约束)

注:通常需要加上这两个时间,create _time,记录的是当前这条数据插入的时间。update_time,记录当前这条数据最后更新的时间。

5.3 查询 & 修改 & 删除

很多情况下,该部分的操作可以直接通过图形化工具界面来实现。
查询
1)查询当前数据库所有表

1
show tables;

2)查询表结构

1
desc 表名;

3)查询建表语句

1
show create table 表名;

修改
1)添加字段

1
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];

2)修改字段类型

1
alter table 表名 modify 字段名 新数据类型(长度);

3)修改字段名和字段类型

1
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];

4)删除字段

1
alter table 表名 drop column 字段名;

5)修改表名

1
rename table 表名 to 新表名;

删除
1)删除表

1
drop table [if exists] 表名;

注:在删除表时,表中的全部数据也会被删除。

6、DML-添加 & 修改 & 删除数据

回顾:DML,即Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。

6.1 添加数据(insert)

1)指定字段添加数据

1
insert into 表名(字段名1,字段名2) values (值1,值2);

2)全部字段添加数据

1
insert into 表名 values (值1,值2,...);

3)批量添加数据(指定字段)

1
insert into 表名(字段名1,字段名2) values (值1,值2),(值1,值2);

4)批量添加数据(全部字段)

1
insert into 表名 values(值1,值2,...),(值1,值2,...);

5)几点注意

  • 插入数据时,指定的字段顺序需要与值的顺序一一对应。
  • 字符串和日期型数据应该包含在引号中。
  • 插入的数据大小应在字段的规定范围内。

6.2 修改数据(update)

1)修改数据

1
update 表名 set 字段名1=1,字段名2=2,....[where 条件];

eg:将 tb_user表中 id为1的用户,姓名改为 lishi

1
update tb_user set name = 'lishi' where id = 1;

注:修改语句的条件可有可无,如果没有,则会修改整张表的所有数据。

6.3 删除数据(delete)

1)删除数据

1
delete from 表名 [where 条件];

eg1:将 tb_user表中 id为1的用户删除

1
delete from tb_user where id = 1;

eg2:将 tb_user表中的所有数据(需谨慎操作)

1
delete from tb_user;

注1:DELETE语句的条件可有可无,如果没有条件,则会删除整张表的所有数据。

注2:DELETE语句不能删除某一个字段的值(如果要操作,可以使用UPDATE,将该字段的值置为NULL)。