【JavaWeb入门】:MySQL 基础语句

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 前面讲过,SQL 分类如下:DDL:数据定义语言,用来定义数据库对象,如数据库,表,列等;DML:数据操作语言,用来对数据库中表的数据进行增删改;DQL:数据查询语言,用来查询数据库中表的记录(数据);DCL:数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户;下面记录了 MySQL 中常用的 SQL 语句。

SQL 分类

前面讲过,SQL 分类如下:

  • DDL:数据定义语言,即Data Definition Language,用来定义数据库对象,如数据库,表,列等;
  • DML:数据操作语言,即Data Manipulation Language,用来对数据库中表的数据进行增删改
  • DQL:数据查询语言,即Data Query Language,用来查询数据库中表的记录(数据);
  • DCL:数据控制语言,即Data Control Language,用来定义数据库的访问权限和安全级别,及创建用户;

下面记录了 MySQL 中常用的 SQL 语句。

DDL

操作数据库

查询

显示数据库:

SHOW DATABASES;

创建

创建数据库:

CREATE DATABASE 数据库名;

创建数据库(加了判断,如果数据库不存在则创建):

CREATE DATABASE IF NOT EXISTS 数据库名;

删除

删除数据库:

DROP DATABASE 数据库名;

删除数据库(加了判断,如果存在该数据库则删除):

DROP DATABASE IF NOT EXISTS 数据库名;

使用

查看当前使用的数据库:

SELECT DATABASE();

使用数据库:

USE 数据库名;

操作表

查询表

查询当前数据库下所有表的名称(查看有哪些表):

SHOW TABLES;

查询指定表的结构(查看表结构):

DESC 表名;

创建表

  • 创建表的语法
CREATE TABLE 表名 (
    字段名1  数据类型1,
    字段名2  数据类型2,
    字段名3  数据类型3,
    ...
    字段名n  数据类型n,
);

需要注意,创建表的时候,最后一行不用加逗号。

  • 创建表的例子

字段需求:

  1. 编号
  2. 姓名(最长不超过10个汉字)
  3. 生日(取值为 年月日)
  4. 成绩(小数点后保留两位)
  5. 邮件地址(最大长度不超过64)
  6. 联系电话(不一定是手机号码,可能出现 - 字符)

建表语句如下:

create table student (
    id int,
    name varchar(10),
    gender char(1),
    birthday date,
    score double(5,2),
    email varchar(64),
    tel varchar(15)
);

删除表

删除表:

DROP TABLE 表名;

删除表时判断表是否存在:

DROP TABLE IF EXISTS 表名;

修改表

修改表名:

ALTER TABLE 表名 RENAME TO 新表名;

添加一列:

ALTER TABLE 表名 ADD 列名 数据类型;

修改数据类型:

ALTER TABLE 表名 MODIFY 列名 新数据类型;

修改列名和数据类型:

ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

删除列:

ALTER TABLE 表名 DROP 列名;

DML

添加数据

给指定的列添加数据:

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 表名 SET 列名1=值1, 列2=值2, ... [WHERE 条件];

注意:如果 update 语句没有添加 where 子句,则会修改表中的所有数据。

删除数据

DELETE FROM 表名 [WHERE 条件];

注意:如果 delete 语句没有添加 where 子句,则会删除表中的所有数据。

DQL

基础查询

查询多个字段:

SELECT 字段列表 FROM 表名;

查询全部字段(查询整张表):

SELECT * FROM 表名;

去除重复记录:

SELECT DISTINCT 字段列表 FROM 表名;

起别名:

AS 别名;

注意,使用AS关键字起别名时,AS关键字可以省略。

条件查询

条件查询的语法:

SELECT
    字段列表
FROM
    表名
WHERE
    条件列表;

在条件列表中常用的操作符如下:

  • > :大于
  • < :小于
  • >= :大于或等于
  • <= :小于或等于
  • = :等于
  • <>!= :不等于
  • BETWEEN ... AND ... :在某个范围之内(都包含)
  • IN() :多选一
  • LIKE 占位符 :模糊查询(_表示单个任意字符,%表示多个任意字符)
  • IS NULL :是NULL
  • IS NOT NULL :不是NULL
  • AND&& :并且
  • OR|| :或者
  • NOT! :非、不是

排序查询

排序查询的语法:

SELECT
    字段列表
FROM
    表名 
ORDER BY
    排序字段1[排序方式1],
    排序字段2[排序方式2],
    ...
    排序字段n[排序方式n]
;

排序方式有两种:

  • ASC:升序排列(默认值)
  • DESC:降序排列

注意:如果有多个排序条件,则当前边的条件值一样时,才会根据第二条件进行排序,以此类推。

聚合函数

概念:

  • 将一列数据作为一个整体进行纵向计算,就可以使用聚合函数。

聚合函数的分类:

  • count(字段名):统计不为null的列的数量;
  • max(字段名):求最大值;
  • min(字段名):求最小值;
  • sum(字段名):求和;
  • avg(字段名):求平均值;

聚合函数的语法:

SELECT
    聚合函数(字段名)
FROM 
    表名;

需要注意的是,null值不参与所有聚合函数的运算。

分组查询

SELECT
    字段列表
FROM
    表名
WHERE
    分组前的条件限定
GROUP BY
    分组字段名
HAVING
    分组后条件过滤;

注意:

  • WHERE子句和HAVING子句可以省略
  • 分组之后,查询的字段为聚合函数和分组字段,查询其他字段将无任何意义。

执行顺序:

  • where > 聚合函数 > having

where 和 having 的区别:

  • 执行时机不同where 是分组之前进行限定,不满足where 条件,则不参与分组,而having 是分组之后对结果进行过滤。
  • 可判断的条件不一样where 不能对聚合函数进行判断,having 可以。

举几个例子:

-- 分为两组,查询男同学和女同学各自的数学平均分以及各自人数,要求分数低于70的不参与分组,并且分组后的人数必须大于2人:
SELECT 
    sex, AVG(math), COUNT(*)
FROM
    stu
WHERE 
    math > 70
GROUP BY
    sex
HAVING
    COUNT(*) > 2;

分页查询

分页查询的语法如下:

SELECT
    字段列表
FROM
    表名
LIMIT
    起始索引, 查询条目数;

需要注意:

  • 起始索引从 0 开始
  • 计算公式为:起始索引 = (当前页码 - 1) * 每页显示的条数
  • 另外,分页查询的关键字 LIMIT 是MySQL 数据库的方言,比如 Oracle 分页查询使用 rownumber,SQL Server 分页查询使用 top

举一些例子:

-- 从 0 开始查询,查询 5 条数据:
SELECT * FROM tb1 LIMIT 0, 5;

-- 每页显示 5 条数据,查询第 1 页数据:
SELECT * FROM tb1 LIMIT 0, 5;

-- 每页显示 5 条数据,查询第 2 页数据:
SELECT * FROM tb1 LIMIT 5, 5;

-- 每页显示 5 条数据,查询第 2 页数据:
SELECT * FROM tb1 LIMIT 10    , 5;

DQL 小结

SELECT
    字段列表
FROM
    表名列表
WHERE
    条件列表
GROUP BY
    分组字段
HAVING
    分组后条件
ORDER BY
    排序字段
LIMIT
    分页限定
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
3月前
|
关系型数据库 MySQL 数据库
MySQL基本操作入门指南
MySQL基本操作入门指南
105 0
|
3月前
|
SQL 关系型数据库 MySQL
JavaWeb基础1——MySQL
SQL语句、DDL、DML、DQL(分组查询、子查询等)、Navicat、约束、 一对多等数据库设计、多表查询(联合查询/连接查询)、事务、函数
JavaWeb基础1——MySQL
|
3月前
|
SQL 关系型数据库 MySQL
MySQL入门到精通
MySQL入门到精通
|
5月前
|
SQL 关系型数据库 MySQL
「Python入门」python操作MySQL和SqlServer
**摘要:** 了解如何使用Python的pymysql模块与MySQL数据库交互。首先,通过`pip install pymysql`安装模块。pymysql提供与MySQL的连接功能,例如创建数据库连接、执行SQL查询。在设置好MySQL环境后,使用`pymysql.connect()`建立连接,并通过游标执行SQL(如用户登录验证)。注意防止SQL注入,使用参数化查询。增删改操作需调用`conn.commit()`来保存更改。pymssql模块类似,但导入和连接对象创建略有不同。
67 0
「Python入门」python操作MySQL和SqlServer
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL从入门到精通】常用SQL语句分享
【MySQL从入门到精通】常用SQL语句分享
65 2
|
5月前
|
存储 关系型数据库 MySQL
MySQL小白教程:从入门到查询高手
MySQL小白教程:从入门到查询高手
|
3天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
45 15
|
3天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
7天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。