MySQL基础语法入门-基础操作

上个文章我们写了如何安装MySQL数据库以及辅助工具Navicat安装,现在我们来学习MySQL结合Navicat简单使用, 注意SQL语法不区分大小写书写!!!

MySQL简介之基础操作

MySQL 是一种流行的关系型数据库管理系统(RDBMS),广泛应用于各种应用程序中。 DDL(Data Definition Language,数据定义语言)是 SQL 的一部分,用于定义和管理数据库结构。DDL 主要包括创建、修改和删除数据库对象的语句,例如数据库、表、索引等。

连接到 MySQL

安装完成后,你可以通过命令行或图形化工具连接到 MySQL。

使用命令行连接:

sh 复制代码
mysql -u root -p

创建数据库:

sql 复制代码
CREATE DATABASE test;

如果连续操作两次或者以上报错

sql 复制代码
-- 安全创建数据库 (推荐该方式 防止误操作) 
CREATE DATABASE IF NOT EXISTS test;

查询数据库

sql 复制代码
SHOW DATABASES;

或者使用命令行操作(对新手比较不友好支持大佬使用)

使用数据库:

sql 复制代码
USE test;

删除数据库

sql 复制代码
-- 删除数据库 一般不推荐这样写 再次执行时候就报错了
DROP DATABASE 数据库名; 
sql 复制代码
-- 删除数据库 最好先判断一下
DROP DATABASE IF EXISTS test;

DDL表结构

DDL(数据定义语言)中,表结构是数据库设计的核心部分。表结构定义了表中包含的列(字段)、数据类型、约束条件等信息。

1. 表结构的基本组成部分

表结构由以下部分组成:

  • 表名:表的唯一标识符。
  • 列名:表中每一列的名称。
  • 数据类型:定义列中存储的数据类型(如整数、字符串、日期等)。
  • 约束:定义列的规则(如主键、唯一性、非空等)。

2. 创建表的基本语法

sql 复制代码
-- 基础语法格式
CREATE TABLE table_name (
    column1 datatype [constraints],
    column2 datatype [constraints],
    ...
);

如下这样即表示创建成功

3. 修改表名称

sql 复制代码
-- 修改表名称
ALTER TABLE product RENAME TO product_desc;

4. 删除表名称

sql 复制代码
-- 删除表名称
DROP TABLE product_desc;
-- 安全 删除表名称
DROP TABLE IF EXISTS product_desc;

5. 表格插入数据 (INSERT INTO)

sql 复制代码
INSERT INTO 表名 (列名1, 列名2, ...)
VALUES (值1, 值2, ...);
sql 复制代码
-- 向person_info表中插入一条数据 时间格式DATE
INSERT INTO person_info(
  id,
  name,
  age,
  addr,
  create_time
)VALUES(2,'lala',22,'赣州市安远县',20250111)
-- 时间字符串也行有时分秒的加上即可 '2025-01-11'

6. 表格查询数据(SELECT)

sql 复制代码
-- 基础语法
SELECT 列名1, 列名2, ...
FROM 表名
WHERE 条件;
sql 复制代码
-- 查询表数据
SELECT name,age,addr FROM person_info WHERE id=1;

7. 更新/修改表格数据(SELECT)

sql 复制代码
UPDATE 表名
SET 列名1 = 值1, 列名2 = 值2, ...
WHERE 条件;
sql 复制代码
-- 更新表格数据
UPDATE person_info SET age = 41 WHERE id = 1;

添加列

sql 复制代码
ALTER TABLE 表名
ADD 列名 数据类型;
sql 复制代码
--添加列
ALTER TABLE person_info
ADD Email VARCHAR(100);

删除列

sql 复制代码
ALTER TABLE 表名
DROP COLUMN 列名;
sql 复制代码
ALTER TABLE person_info
DROP COLUMN Email;

修改列数据类型

sql 复制代码
ALTER TABLE 表名
MODIFY COLUMN 列名 新数据类型;
sql 复制代码
ALTER TABLE person_info
MODIFY COLUMN Age TINYINT;

8. 删除表格数据(DELETE)

sql 复制代码
DELETE FROM 表名
WHERE 条件;
sql 复制代码
--删除表格数据
DELETE FROM person_info WHERE id = 2;

SQL 数据类型及其特点

类别 数据类型 描述 大小/范围
数值类型 INT 整数类型 4 字节,范围:-2,147,483,648 到 2,147,483,647
TINYINT 较小的整数 1 字节,范围:0 到 255(无符号)或 -128 到 127(有符号)
SMALLINT 小整数类型 2 字节,范围:0 到 65,535(无符号)或 -32,768 到 32,767(有符号)
BIGINT 大整数类型 8 字节,范围很大
FLOAT 单精度浮点数 4 字节
DOUBLE 双精度浮点数 8 字节
字符串类型 CHAR(n) 定长字符串 n 字符 (1-255)
VARCHAR(n) 可变长度字符串 n 字符 (1-65,535)
TEXT 长文本类型 超过 65,535 字符
BLOB 二进制大对象 超过 65,535 字节
日期和时间类型 DATE 存储日期 'YYYY-MM-DD'
TIME 存储时间 'HH:MM:SS'
DATETIME 存储日期和时间 'YYYY-MM-DD HH:MM:SS'
TIMESTAMP 存储时间戳 自 1970 年 1 月 1 日以来的秒数
YEAR 存储年份 2 位或 4 位
布尔类型 BOOLEAN 布尔类型 0(假)和 1(真)
其他类型 ENUM 枚举类型 从预定义的字符串值中选择
SET 集合类型 允许存储多个值,从预定义的字符串集合中选择

DDL和DML的区别

1. DDL(数据定义语言)

  • 功能:用于定义或修改数据库结构(如表、索引、视图等)。

  • 特点

    • 操作的是数据库的结构,而不是数据本身。
    • 通常由数据库管理员(DBA)使用。
    • 执行后会自动提交事务(隐式提交),无法回滚。
  • 常用语句

    • CREATE:创建数据库对象(如表、视图、索引等)。
    • ALTER:修改数据库对象的结构。
    • DROP:删除数据库对象。
    • TRUNCATE:清空表中的所有数据,但保留表结构。
    • RENAME:重命名数据库对象。

示例

sql 复制代码
CREATE TABLE Students (
    StudentID INT PRIMARY KEY,
    Name VARCHAR(50),
    Age INT
);

ALTER TABLE Students ADD COLUMN Email VARCHAR(100);

DROP TABLE Students;

2. DML(数据操作语言)

  • 功能:用于操作数据库中的数据(如插入、更新、删除、查询等)。

  • 特点

    • 操作的是数据库中的数据,而不是结构。
    • 通常由开发人员或数据分析师使用。
    • 需要显式提交事务(如 COMMIT),否则可以回滚(如 ROLLBACK)。
  • 常用语句

    • SELECT:查询数据。
    • INSERT:插入数据。
    • UPDATE:更新数据。
    • DELETE:删除数据。

示例

sql 复制代码
INSERT INTO Students (StudentID, Name, Age)
VALUES (1, '张三', 20);

UPDATE Students SET Age = 21 WHERE StudentID = 1;

DELETE FROM Students WHERE StudentID = 1;

SELECT * FROM Students;

DDL 和 DML 的主要区别

特性 DDL(数据定义语言) DML(数据操作语言)
操作对象 数据库结构(如表、索引、视图等) 数据库中的数据(如记录)
主要语句 CREATE, ALTER, DROP, TRUNCATE SELECT, INSERT, UPDATE, DELETE
事务处理 自动提交(隐式提交),无法回滚 需要显式提交(如 COMMIT),可以回滚
使用场景 数据库设计、结构管理 数据操作、查询、更新
使用者 数据库管理员(DBA) 开发人员、数据分析师

总结

  • DDL 用于定义和管理数据库结构,操作的是数据库的"骨架"。
  • DML 用于操作和管理数据库中的数据,操作的是数据库的"血肉"。
相关推荐
穷儒公羊1 小时前
第三十六章 Spring之假如让你来写MVC——拦截器篇
java·后端·spring·servlet·mvc·jsp
五行星辰4 小时前
Servlet与JSP:Java的秘密花园入口
java·开发语言·servlet
Q_27437851095 小时前
django基于 Python 的考研学习系统的设计与实现
java·python·考研·django
Yang-Never5 小时前
Shader -> SweepGradient扫描渐变着色器详解
android·java·kotlin·android studio·着色器
我想学LINUX5 小时前
【2024年华为OD机试】 (C卷,100分)- 消消乐游戏(Java & JS & Python&C/C++)
java·c语言·javascript·c++·游戏·华为od
葡萄架子5 小时前
线程安全问题介绍
java·jvm·安全
Q_27437851095 小时前
django基于Python的校园个人闲置物品换购平台
java·数据库·python·django
牛马baby5 小时前
Java高频面试之SE-11
java·python·面试
kingbal5 小时前
SpringCloud:gateway分发服务报302,Network Error
java·spring cloud·gateway
ldj20206 小时前
基于文件系统分布式锁原理
java·分布式锁