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

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

相关文章:

  • YSYX学习记录(九)
  • Python打卡第54天
  • 使用存储型 XSS 窃取 cookie 并发送到你控制的服务器
  • 【JS-2】JavaScript基础语法完全指南:从入门到精通
  • 【小沐杂货铺】基于Babylon.JS绘制三维数字地球Earth(GIS 、WebGL、vue、react,提供全部源代码)
  • Java学习笔记——lambda表达式
  • LangGraph--设计一个给出标准提示词模板的聊天机器人
  • 【MySQL】TencentOS 安装登录MySQL
  • 如何通过 noindex 阻止网页被搜索引擎编入索引?
  • 土建施工安全管理难?免费AI系统 24h 监控预警
  • 疗愈经济崛起:如何把“情绪价值”转化为医疗健康产品?
  • 【JavaEE】(2) 多线程1
  • nlp和大模型
  • 大语言模型:提示词决定自我反思效果: “检查回答是否错误” “验证回答是否正确”
  • EXCEL破解VBA密码 ( 仅供学习研究使用)
  • 多模态大语言模型arxiv论文略读(122)
  • 期权入门介绍
  • 基于CNN深度学习的小程序识别-视频介绍下自取
  • Java—— ArrayList 和 LinkedList 详解
  • Linux服务器入门教程
  • 专门做正品的网站手机版/淄博seo培训
  • 完善网站建设报告/企业微信scrm
  • 网站要怎么做吸客户引眼球/百度seo推广软件
  • 学校培训网站开发/百度霸屏推广多少钱一个月
  • arvixe如何做网站/百度网址安全检测中心
  • 深圳快速网站制作服/长沙建站优化