当前位置: 首页 > java >正文

Linux下的MySQL从DDL到DQL的基础操作

一、DDL(数据定义语言)操作

1. DDL 概述

DDL(Data Definition Language)用于定义数据库结构,主要包括:

  • 数据库的创建、查看、删除、修改
  • 表结构的设计与修改

2. 数据库常用操作

功能SQL 语句
查看所有数据库SHOW DATABASES;
创建数据库CREATE DATABASE [IF NOT EXISTS] mydb1 [CHARSET=utf8];
切换数据库USE mydb1;
删除数据库DROP DATABASE [IF EXISTS] mydb1;
修改数据库编码ALTER DATABASE mydb1 CHARACTER SET utf8;

3. 表结构操作 - 创建表

表创建语法

sql

CREATE TABLE [IF NOT EXISTS] 表名(字段名1 类型[(宽度)] [约束条件] [COMMENT '字段说明'],字段名2 类型[(宽度)] [约束条件] [COMMENT '字段说明'],...
)[表的一些设置];
示例

sql

USE mydb1;
CREATE TABLE IF NOT EXISTS student(sid INT,NAME VARCHAR(20),gender VARCHAR(20),age INT,birth DATE,address VARCHAR(20),score DOUBLE
);
数据类型详解
数值类型
类型大小有符号范围无符号范围用途
TINYINT1 字节(-128, 127)(0, 255)小整数值
INT4 字节(-21 亿,21 亿)(0, 42 亿)大整数值
FLOAT4 字节单精度浮点数浮点数
DECIMAL-依赖 M 和 D小数值
字符串类型
类型大小用途
CHAR0-255 字节定长字符串
VARCHAR0-65535 字节变长字符串
TEXT0-65535 字节长文本
LONGBLOB0-4GB极大二进制数据
日期类型
类型大小范围格式
DATE3 字节1000-01-01~9999-12-31YYYY-MM-DD
DATETIME8 字节完整日期时间YYYY-MM-DD HH:MM:SS
TIMESTAMP4 字节1970-2038YYYYMMDD HHMMSS

4. 表结构操作 - 其他操作

功能SQL 语句
查看当前表SHOW TABLES;
查看表创建语句SHOW CREATE TABLE 表名;
查看表结构DESC 表名;
删除表DROP TABLE 表名;

5. 修改表结构

添加列

sql

ALTER TABLE student ADD `dept` VARCHAR(20);
修改列名和类型

sql

ALTER TABLE student CHANGE `dept` department VARCHAR(30);
删除列

sql

ALTER TABLE student DROP department;
修改表名

sql

RENAME TABLE `student` TO stu;

二、DML(数据操作语言)操作

1. DML 概述

DML(Data Manipulation Language)用于操作表中数据记录,主要包括:

  • 插入(INSERT)
  • 更新(UPDATE)
  • 删除(DELETE/TRUNCATE)

2. 数据插入

语法格式

sql

-- 指定列插入
INSERT INTO 表 (列1,列2,...) VALUES (值1,值2,...);
-- 全列插入
INSERT INTO 表 VALUES (值1,值2,...);
示例

sql

INSERT INTO student(sid,NAME,gender,age,birth,address,score)
VALUES(1001,'张三','男',18,'1996-12-23','北京',83.5);
INSERT INTO student VALUES(1001,'张三','男',18,'1996-12-23','北京',83.5);

3. 数据修改

语法格式

sql

-- 无条件更新
UPDATE 表名 SET 字段1=值1,字段2=值2...;
-- 条件更新
UPDATE 表名 SET 字段1=值1,字段2=值2... WHERE 条件;
示例

sql

-- 将所有学生地址改为重庆
UPDATE student SET address = '重庆';
-- 将ID=1004的学生地址改为北京
UPDATE student SET address = '北京' WHERE id = 1004;

4. 数据删除

语法格式

sql

-- 条件删除
DELETE FROM 表名 [WHERE 条件];
-- 清空表(DDL操作)
TRUNCATE TABLE 表名;
示例

sql

-- 删除ID=1004的学生
DELETE FROM student WHERE sid = 1004;
-- 清空表
TRUNCATE TABLE student;
注意事项
  • DELETE是 DML 操作,可回滚,保留表结构
  • TRUNCATE是 DDL 操作,不可回滚,相当于重建表

三、MySQL 约束详解

1. 约束概述

  • 约束用于保证数据完整性和有效性
  • 常见约束类型:主键、自增长、非空、唯一、默认、零填充、外键

2. 主键约束(PRIMARY KEY)

  • 唯一标识表中每行数据,相当于UNIQUE + NOT NULL
  • 每个表只能有一个主键
  • 自动创建唯一索引
操作示例

sql

-- 单列主键(定义时声明)
CREATE TABLE emp1(eid INT PRIMARY KEY,NAME VARCHAR(20)
);-- 单列主键(定义后声明)
CREATE TABLE emp2(eid INT,NAME VARCHAR(20),CONSTRAINT pk1 PRIMARY KEY(eid)
);-- 联合主键
CREATE TABLE emp3(NAME VARCHAR(20),deptId INT,PRIMARY KEY(NAME, deptId)
);-- 修改表添加主键
ALTER TABLE emp4 ADD PRIMARY KEY(eid);-- 删除主键
ALTER TABLE emp1 DROP PRIMARY KEY;

3. 自增长约束(AUTO_INCREMENT)

  • 主键自动赋值,默认从 1 开始递增
  • 一个表只能有一个自增长字段,且必须是主键或唯一索引
操作示例

sql

-- 创建时指定自增长
CREATE TABLE t_user1(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20)
);-- 指定初始值
CREATE TABLE t_user2(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20)
) AUTO_INCREMENT=100;-- 修改初始值
ALTER TABLE t_user2 AUTO_INCREMENT=100;

4. 非空约束(NOT NULL)

  • 字段值不能为 NULL
操作示例

sql

-- 创建时指定
CREATE TABLE t_user6(id INT,NAME VARCHAR(20) NOT NULL,address VARCHAR(20) NOT NULL
);-- 修改表添加约束
ALTER TABLE t_user7 MODIFY NAME VARCHAR(20) NOT NULL;-- 删除约束
ALTER TABLE t_user7 MODIFY NAME VARCHAR(20);

5. 其他约束类型

约束类型说明示例
唯一约束(UNIQUE)字段值唯一ALTER TABLE t ADD UNIQUE(phone);
默认约束(DEFAULT)字段默认值CREATE TABLE t (addr VARCHAR(20) DEFAULT '北京');
零填充约束(ZEROFILL)不足长度时补 0CREATE TABLE t (id INT ZEROFILL);
外键约束(FOREIGN KEY)关联其他表主键ALTER TABLE t ADD FOREIGN KEY(deptId) REFERENCES dept(id);

四、DQL(数据查询语言)基础

1. DQL 概述

  • 使用SELECT语句查询数据
  • 支持复杂条件筛选、排序、聚合等操作

2. 简单查询

基本语法

sql

SELECT [ALL|DISTINCT] 列1,列2... FROM 表 [WHERE 条件];
示例

sql

-- 查询所有商品
SELECT * FROM product;
-- 查询商品名和价格
SELECT pname, price FROM product;
-- 别名查询
SELECT pname AS pn FROM product;
-- 去重查询
SELECT DISTINCT price FROM product;
-- 运算查询
SELECT pname, price+10 FROM product;

3. 运算符详解

算术运算符
符号说明示例
+加法SELECT 6+2;
-减法SELECT price-10 FROM product;
*乘法SELECT price*1.1 FROM product;
/除法SELECT 6/2;
%取余SELECT 7%2;
比较运算符

sql

-- 等于
SELECT * FROM product WHERE pname = '海尔洗衣机';
-- 范围查询
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;
-- 空值判断
SELECT * FROM product WHERE category_id IS NULL;
-- 模糊查询(%匹配任意字符,_匹配单个字符)
SELECT * FROM product WHERE pname LIKE '%裤%';
逻辑运算符

sql

-- 且
SELECT * FROM product WHERE price > 200 AND category_id = 'c001';
-- 或
SELECT * FROM product WHERE price = 200 OR price = 800;
-- 非
SELECT * FROM product WHERE NOT(price = 800);

4. 排序查询

sql

-- 单字段降序
SELECT * FROM product ORDER BY price DESC;
-- 多字段排序(价格降序,分类升序)
SELECT * FROM product ORDER BY price DESC, category_id ASC;
-- 去重后排序
SELECT DISTINCT price FROM product ORDER BY price DESC;

5. 聚合查询

函数作用示例
COUNT()统计行数SELECT COUNT(*) FROM product;
SUM()求和SELECT SUM(price) FROM product;
MAX()最大值SELECT MAX(price) FROM product;
AVG()平均值SELECT AVG(price) FROM product;
NULL 值处理
  • COUNT(*)统计所有行,COUNT(列)忽略 NULL
  • SUM/AVG忽略 NULL 行
  • MAX/MIN忽略 NULL 行

6. 分组查询

sql

-- 按分类统计商品数
SELECT category_id, COUNT(*) FROM product GROUP BY category_id;
-- 分组后筛选(只显示数量>1的分类)
SELECT category_id, COUNT(*) FROM product 
GROUP BY category_id HAVING COUNT(*) > 1;

7. 分页查询

sql

-- 显示前5条
SELECT * FROM product LIMIT 5;
-- 从第4条开始显示5条(页码=2,每页5条)
SELECT * FROM product LIMIT 3, 5;

8. 数据导入

sql

-- 从表1导入到表2(表2需存在)
INSERT INTO table2 SELECT * FROM table1;
-- 从表1导入并创建表2
SELECT * INTO table2 FROM table1;

五、正则表达式查询

1. 正则表达式概述

  • 通过REGEXP关键字实现字符串模式匹配
  • 常用于复杂文本筛选

2. 常用模式

模式描述示例
^匹配开头'abc' REGEXP '^a'
$匹配结尾'abc' REGEXP 'c$'
.匹配任意字符'abc' REGEXP '.b'
[...]匹配集合中任意字符'abc' REGEXP '[xaz]'
[^...]匹配非集合字符'x' REGEXP '[^abc]'
*匹配 0 次或多次'stab' REGEXP '.ta*b'
+匹配 1 次或多次'stab' REGEXP '.ta+b'
{n}匹配 n 次'auuuuc' REGEXP 'au{4}c'
ab匹配 a 或 b`'a' REGEXP 'ab'`

3. 示例

sql

-- 匹配以"海"开头的商品
SELECT * FROM product WHERE pname REGEXP '^海';
-- 匹配包含"裤"字的商品
SELECT * FROM product WHERE pname REGEXP '裤';
-- 匹配第二个字为"蔻"的商品
SELECT * FROM product WHERE pname REGEXP '_蔻';

总结

通过本文,我们系统学习了 MySQL 数据库的四大核心操作:

  1. DDL:数据库与表结构的定义与修改
  2. DML:数据记录的增删改操作
  3. 约束:保证数据完整性的各种规则
  4. DQL:强大的查询功能,包括条件筛选、排序、聚合等

vm下的centos7使用时出现Datasource error: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

http://www.xdnf.cn/news/14364.html

相关文章:

  • Leetcode 刷题记录 15 —— 二分查找
  • Elastic Search 学习笔记
  • 强化学习-UCB示例
  • Python 模块
  • 鸿蒙Next仓颉语言开发实战教程:设置页面
  • 实验绘图参考-0615版(自用)
  • 力扣第 454 场周赛
  • 「AI产业」| 《德勤:AI案例精选》
  • NJet Portal 应用门户管理介绍
  • Django构建简易视频编辑管理系统
  • Hadoop HDFS存储机制与块大小选择权衡
  • 如何面试网络信息安全岗位答疑(一)NISP管理中心
  • 2.1 Python解释器工作原理
  • [深度学习]目标检测基础
  • leetcode 1432. 改变一个整数能得到的最大差值 中等
  • MQTT:构建高效物联网通信的轻量级协议
  • Python实战项目 贪吃蛇 源码分享 毕业设计
  • 自动驾驶系统研发系列—激光雷达干扰实战:自动驾驶安全的隐形陷阱
  • (LeetCode 动态规划(基础版)) 518. 零钱兑换 II (动态规划dp)
  • Python训练营打卡 Day54
  • ONLYOFFICE 协作空间 企业版使用秘籍-5.企业电子文件如何管理?便于查找、访问和协作,轻松提升效率
  • 操作系统八股文
  • Python密码加密与校验详解
  • python profiling
  • (十六)GRU 与 LSTM 的门控奥秘:长期依赖捕捉中的遗忘 - 更新机制对比
  • ShardingSphere 全面学习路径
  • 编译链接实战(31)再论静态库的本质是啥
  • LeetCode 2300.咒语和药水的成功对数
  • leetcode复盘(1)
  • 【项目实训】【项目博客#08】HarmonySmartCodingSystem系统前后端知识图谱与可视化实现(5.12-6.1)