MySQL:DDL和DML语句

数据库开发

在web开发中,一般将web应用程序分为三层

Controller

Service

Dao

数据存储

可以使用XML,但XML不便管理和维护,操作难度大.

在真实的企业开发中,都会采用数据库来存储和管理数据.

即Dao层直接访问数据库

什么是数据库

DataBase,数据存储和管理的仓库

操作数据库和数据库中的数据->数据库管理系统

DataBase Management System(DBMS)

操作和管理数据库的大型软件,可以直接操作和管理数据库.

需要通过SQL(Structured Query Language)语言

MySQL概述

连接

mysql -u用户名 -p密码 [-h数据库服务器的IP地址 -p端口号]

-h 默认为本地127.0.0.1的mysql服务器

-P参数不加,默认连接端口号为3306

数据模型

关系型数据库(RDBMS)

建立在关系数据模型上,由多张相互连接的二维表组成的数据库

二维表:即行和列组成的表

基于二维表存储数据的数据库就是关系型数据库

表存储数据,格式统一,便于维护
SQL语言操作,标准统一,方便查询

反之就是非关系型数据库

redis

使用键值对存储数据

数据模型

MySQL是关系型数据库

客户端->sql->DBMS->数据库->表

一个数据库服务器中可以创建多个数据库,数据库可以包含多张表,而表中又可以包含多行记录.

SQL介绍

Structured Query Language结构化查询语言

SQL通用语法

可以单行或者多行书写,以分号结尾

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

语句关键字不区分大小写

--单行注释
#单行注释
/*多行注释*/
SQL语句分类
DDL(Data Definition Language)

数据定义语言,用于定义数据库对象(数据库,表,字段)

DML(Data Manipulation Language)

数据操作语言,用来对数据库表中的数据进行增删改

DQL(Data Query Language)

数据查询语言,用来查询数据库中表的记录

DCL(Data Control Language)

数据控制语言,用来创建数据库用户,控制数据库的访问权限.

项目开发流程

需求文档->

设计->数据库
操作->Java程序
优化->优化操作

数据库的设计

1,根据页面原型和需求文档进行需求分析,然后进行项目设计和数据库设计

2,根据页面原型和需求文档,分析需求,实现业务功能,最终通过java程序完成数据的增删改查操作.

3,通过索引,sql优化,分库优化等操作实现数据库优化

DDL语句

database可以换成schema

show databases;
//查询所有数据库
select database;
//查询当前数据库
create database[if not exists]数据库名
//创建数据库
use 数据库名
//切换数据库
//操作表时需要先切换到对应的数据库
drop database[if exists] 数据库名
//删除不存在的数据库会报错
建表
id,创建时间,修改时间需要在所有表中添加作为隐藏字段
create table 表名(
	字段 字段类型[约束] [comment 字段注释]
	id int comment 'ID'
)[表注释]
约束

作用于表中字段上的规则,用于限制存储在表中的数据

保证数据库中数据的正确,有效和完整性

可以在表的创建或者修改时添加约束

NOT NULL
//非空约束
UNIQUE
//唯一约束
PRIMARY KEY
//主键约束(唯一非空)
DEFAULT
//默认约束(未指定值就使用默认值)
FOREIGN KEY
//外键约束(用来让两张表的数据之间建立联系)
AUTO_INCREMENT
//自增约束(一个正数序列从1开始自增)配合主键使用
查询
show tables
//查询当前数据库所有表
desc 表名
//查看指定表结构
show create table 表名
//查询指定表的建表语句
修改
alter table 表名 add 字段名 类型(长度) [comment注释] [约束]
alter table emp add qq varchar(11) comment 'QQ号'
alter table 表名 modify 字段名 新数据类型(长度)
alter table emp modify qq varchar(13)
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释][约束]
alter table emp change qq qq_num varchar(13) comment 'QQ'
rename table 表名 to 表名
删除
alter table 表名 drop 字段名
alter table emp drop qq_num
drop table [if exists]表名
truncate table 表名 #删除指定表并重新创建表
delete from emp;#删除表的内容(不会删除表结构)

数据类型

数值类型

分为有符号数(SIGNED)和无符号数(UNSIGNED)

TINYINT -128-127
SMALLINT -32768-32767
MEDIUMINT
INT/INTEGER
BIGINT
FLOAT
DOUBLE
DECIMAL
字符串类型
CHAR #定长字符串 0-255bytes
VARCHAR #变长字符串 0-65535bytes
TINYBOLB #二进制短文本
TINYTEXT #短文本
BLOB #二进制较短文本
TEXT #较短文本
MEDIUMBLOB #二进制中等长度文本数据
MEDIUMTEXT #中等长度文本数据
LONGBLOB #二进制极大文本数据
LONGTEXT #极大文本数据
日期时间类型
DATE #YYYY-MM-DD 日期
TIME #HH:MM:SS 时间值或持续时间
YEAR #YYYY 年份值
DATETIME #YYYY-MM-DD HH:MM:SS 日期时间
TIMESTAMP #YYYY-MM-DD HH:MM:SS 混合时间戳

DML语句

增(insert)

字段顺序应与值顺序一一对应

insert into 表名(字段名1,字段名2..) values(1,2...)
Insert into 表名 values(1,2....)
#给全部字段添加数据
Insert into 表名 (字段名1,字段名2..) values(1,2....),(1,2....),(1,2....);
#批量指定添加数据
Insert into 表名 values(1,2....),(1,2....),(1,2....);
#批量添加数据

修改(update)

如果没有条件会修改整张表的全部语句

一般修改时需要同时修改公共字段update_time为当前时间

update 表名 set 字段名 =,字段名 =..[where 条件]
update emp set username = 'itheima1' where id = 1;

删除(delete)

delete from 表名 [where 条件];
上一篇:【数据库】MySQL分页查询


下一篇:构建云原生湖仓:Apache Iceberg与Amoro的结合实践-Apache Iceberg与云原生