SQL的增删改查及函数应用

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于搭建容器环境
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
简介: 本实验提供一台基础环境为CentOS的云服务器ECS实例。我们将会在这台服务器上安装MySQL,然后学习基本的SQL语句。

SQL的增删改查及函数应用

1. 创建资源

创建资源

  1. 在页面左侧,单击 云产品资源 下拉列表,查看本次实验资源。
  2. 单击 免费开通 ,创建所需资源。

说明:  

资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP地址、用户名和密码等。


2. 连接ECS服务器

连接ECS服务器

1. 打开系统自带的终端工具。

  • Windows:打开命令窗口。
  • MAC:打开命令行终端Terminal。

Windows用户请检查系统中是否安装有ssh工具。检查方法:

a. 在终端中输入命令ssh -V,查看ssh版本号。

b. 终端中返回以下结果说明已安装。

c. 否则请下载安装OpenSSH

2. 在终端中输入连接命令ssh [username]@[ipaddress]。您需要将username和ipaddress替换成ECS服务器的登录名和公网地址,ECS服务器的登录名和公网地址可在第一小节中的云产品资源下拉列表中查看。例如:

ssh root@139.xxx.xxx.230

请参照下图在资源栏中查找ECS服务器的弹性公网IP。

命令显示结果如下:

3. 输入 yes。

4. 同意继续后将会提示输入登录密码。密码为已创建的ECS云服务器的登录密码。

说明:输入密码的过程中没有回显,请确保键入内容正确。

登录成功后会显示如下信息。


3. 安装并配置MySQL

安装并配置MySQL

1. 依次执行如下命令,下载并安装MySQL。

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server --nogpgcheck

返回如下结果,表示MySQL安装成功。

2. 执行如下命令,启动MySQL 数据库。

systemctl start mysqld.service

3. 执行如下命令,查看MySQL运行状态。

systemctl status mysqld.service

返回如下结果,表示MySQL正常运行。

4. 执行如下命令,查看MySQL初始密码。

grep "password" /var/log/mysqld.log

返回如下结果。

5. 执行如下命令,登录数据库。

mysql -uroot -p

返回如下结果,输入MySQL初始密码。

返回如下结果,表示登录成功。

6. 执行如下命令,修改MySQL默认密码。

说明

  • 您需要将下面命令中的NewPassWord1.修改为您要设置的数据库密码。
  • 设置的新密码必须同时包含大小写英文字母、数字和特殊符号中的三类字符,否则会因为密码过于简单报错。
  • 注意每条完整的SQL命令结尾都有一个半角分号(;),如果多行命令中间没有分号分隔,这些命令将不会执行,直至遇到一个分号。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassWord1.';

7. 依次执行如下命令,退出MySql重新登录。

exit
mysql -uroot -p


4. 创建数据库和创建数据表

创建数据库和创建数据表

1. 使用create命令创建数据库,语法如下:

create DATABASE 数据库名;

执行如下命令,创建数据库Test。

create DATABASE Test;

2. 执行如下命令,查看当前数据库列表,即可看到创建的Test数据库。

show databases;

3. 执行如下命令,连接Test数据库。

说明

执行如下命令后,您就已经成功选择了Test数据库,您的后续所有操作都会在Test数据库中执行。

use Test;

4. 创建MySQL数据表。

创建MySQL数据表时需要以下相关信息:

  • 表名。
  • 表字段名。
  • 定义每个表字段。

创建数据表的SQL通用语法:

CREATE TABLE table_name(column_name column_type);

执行如下命令,在Test数据库中创建数据表web。

CREATE TABLE `web` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
  `url` varchar(255) NOT NULL DEFAULT '',
  `rank` int(11) NOT NULL DEFAULT '0' COMMENT '排名',
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

5. 执行如下命令,查看数据库Test下的所有数据表。

show tables;


5. SQL的增删改查

SQL的增删改查

1. 使用INSERT INTO语句。

INSERT INTO语句用于向表中插入新记录。INSERT INTO语句可以有两种编写形式。

第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name
VALUES (value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

执行如下命令,向web表中插入五条数据。

INSERT INTO `web` VALUES ('1', '阿里云', 'https://www.aliyun.com/','123'), ('2', '淘宝', 'https://www.taobao.com/','1'), ('3', '帮助中心', 'https://help.aliyun.com/','112'), ('4', '开发者社区', 'https://developer.aliyun.com/','213'), ('5', '体验实验室', 'https://developer.aliyun.com/adc/labs/',456);

2. 使用SELECT语句。

SELECT语句用于从数据库中选取数据,并将选取的数据存储在一个结果表中,称为结果集。SQL的SELECT语法如下。

第一种形式语法如下,表示从表(table_name)中查询某些字段(column_name)。

SELECT column_name,column_name
 FROM table_name;

第二种形式语法如下,表示从表(table_name)中查询所有字段。

SELECT * FROM table_name;

a. 执行如下命令,从"web"表中查询"name"和"url"列。

SELECT name,url FROM web;

返回结果如下。

b. 执行如下命令,从"web"表中查询所有的列。

SELECT * FROM web;

返回结果如下。

3. 使用UPDATE语句。

UPDATE语句用于更新表中已存在的记录。SQL的UPDATE语法如下,表示在表(table_name)中,如果某列(some_column)取值为特定值(some_value),则将column更新成value。

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

注意:

使用UPDATE语句时请注意设置WHERE子句。如果您省略了WHERE子句,会将数据表中所有的数据都更新。

执行如下命令,把name为"阿里云"的数据的rank更新为5。

UPDATE web SET rank='5' WHERE name='阿里云';

b. 执行如下命令,查询所有数据。

SELECT * FROM web;

返回结果如下,您可以看到数据已经被更新。

4. 使用DELETE语句。

DELETE语句用于删除表中的行。SQL的DELETE语法如下。

DELETE FROM table_name
WHERE some_column=some_value;

注意:

WHERE子句规定哪条记录或者哪些记录需要删除。如果您省略了WHERE子句,所有的记录都将被删除!

a. 执行如下SQL语句,向web表中插入一条数据。

INSERT INTO web(name, url, rank)
VALUES ('新手入门','https://help.aliyun.com/learn/getting-started.html','789');

b. 执行如下SQL语句,查询所有数据,您可以看到新增的数据。

select * from web;

c. 执行如下SQL语句,从web表中删除name为新手入门的数据。

DELETE FROM web WHERE name='新手入门';

d. 执行如下SQL语句,查询所有数据,您可以看到数据已经删除。

select * from web;


6. SQL的AND和OR运算符

SQL的AND和OR运算符

AND和OR运算符用于基于一个以上的条件对记录进行过滤。

1. 使用AND运算符。

如果第一个条件和第二个条件都成立,则AND运算符显示一条记录。

执行如下SQL语句,从web表中选取id为1且rank大于2的数据:

SELECT * FROM web WHERE id= '1' AND rank > 2;

返回的结果如下。

2. 使用OR运算符。

如果第一个条件和第二个条件中只要有一个成立,则OR运算符显示一条记录。

执行如下SQL语句,从web表中选取rank大于300的或name为阿里云的数据:

SELECT * FROM web WHERE rank > 300 OR name = '阿里云';

返回的结果如下。


7. SQL的ORDER BY关键字

SQL的ORDER BY关键字

ORDER BY关键字用于对结果集按照一个列或者多个列进行排序。

ORDER BY关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用DESC关键字。ORDER BY语法如下。

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

1. 使用ORDER BY。

执行如下SQL语句,从web表中选取所有数据,并按照rank列排序。

SELECT * FROM web ORDER BY rank;

返回结果如下。

2. 使用ORDER BY DESC。

执行如下SQL语句,从web表中选取所有数据,并按照rank列降序排序。

SELECT * FROM web ORDER BY rank DESC;

返回结果如下。

3. 使用ORDER BY多列。

执行如下SQL语句,查询web表中选取所有数据,并按照rank列降序排序。

SELECT * FROM web ORDER BY name,rank;

返回结果如下。


8. SQL函数说明

SQL函数说明

1. 使用AVG()函数。

AVG()函数返回数值列的平均值。AVG()语法如下。

SELECT AVG(column_name) FROM table_name

SELECT AVG(column_name) FROM table_name;

a. 执行如下SQL语句,在Test数据库中创建数据表access_log。

CREATE TABLE `access_log` (
  `aid` int(11) NOT NULL AUTO_INCREMENT,
  `site_id` int(11) NOT NULL DEFAULT '0' COMMENT '网站id',
  `count` int(11) NOT NULL DEFAULT '0' COMMENT '访问次数',
  `date` date NOT NULL,
  PRIMARY KEY (`aid`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

b. 执行如下SQL语句,向数据表access_log插入数据。

INSERT INTO `access_log` VALUES ('1', '1', '45', '2016-05-10'), ('2', '3', '100', '2016-05-13'), ('3', '1', '230', '2016-05-14'), ('4', '2', '10', '2016-05-14'), ('5', '5', '205', '2016-05-14'), ('6', '4', '13', '2016-05-15'), ('7', '3', '220', '2016-05-15'), ('8', '5', '545', '2016-05-16'), ('9', '3', '201', '2016-05-17');

c. 执行如下SQL语句,从access_log数据表的count列获取平均值。

SELECT AVG(count) AS CountAverage FROM access_log;

返回结果如下。

2. 使用COUNT()函数 。

COUNT()函数返回匹配指定条件的行数。COUNT()函数有三种语法,如下所示。

COUNT(column_name)语法 :COUNT(column_name)函数返回指定列的值的数目(NULL不计入)。

SELECT COUNT(column_name) FROM table_name;

COUNT(*) 语法 COUNT(*) :函数返回表中的记录数。

SELECT COUNT(*) FROM table_name;

COUNT(DISTINCT column_name)语法 :COUNT(DISTINCT column_name)函数返回指定列的不同值的数目 。

SELECT COUNT(DISTINCT column_name) FROM table_name;

测试方法如下:

a. 执行如下SQL语句,计算access_log数据表中site_id=3的总访问量。

SELECT COUNT(count) AS nums FROM access_log WHERE site_id=3;

返回结果如下。

b. 执行如下SQL语句,计算access_log数据表中总记录数。

SELECT COUNT(*) AS nums FROM access_log;

返回结果如下。

c. 执行如下SQL语句,计算access_log数据表中不同site_id的记录数。

SELECT COUNT(DISTINCT site_id) AS nums FROM access_log;

返回结果如下。

3. 使用MAX()函数 。

MAX()函数返回指定列的最大值。MAX()语法 如下。

SELECT MAX(column_name) FROM table_name;

执行如下SQL语句,获取web数据表中rank列的最大值。

SELECT MAX(rank) AS max_rank FROM web;

4. 使用MIN()函数 。

MIN()函数返回指定列的最小值。MIN()语法 如下。

SELECT MIN(column_name) FROM table_name;

执行如下SQL语句,获取web数据表中rank列的最小值。

SELECT MIN(rank) AS min_rank FROM web;

返回结果如下。

5. 使用SUM()函数 。

SUM()函数返回数值列的总数。SUM()语法 如下。

SELECT SUM(column_name) FROM table_name。

执行如下SQL语句,获取access_log数据表的count字段的总数。

SELECT SUM(count) AS nums FROM access_log;

6. 使用GROUP BY语句。

GROUP BY语句用于结合聚合函数,根据一个或多个列对结果集进行分组。GROUP BY语法如下。

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value 
GROUP BY column_name;

执行如下SQL语句,获取access_log数据表各个site_id的访问量。

SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;

7. 使用EXISTS运算符。

EXISTS运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回False。EXISTS语法 如下。

SELECT column_name(s) 
FROM table_name
WHERE EXISTS 
(SELECT column_name FROM table_name WHERE condition);

执行如下SQL语句,查找查找count字段大于200的网站是否存在。

SELECT web.name, web.url 
FROM web
WHERE EXISTS (SELECT count FROM access_log WHERE web.id = access_log.site_id AND count > 200);

实验链接:https://developer.aliyun.com/adc/scenario/ad08dc06f71349dd9375a8779061e605

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 人工智能 数据挖掘
如何在`score`表中正确使用`COUNT`和`AVG`函数?SQL聚合函数COUNT与AVG使用指南
本文三桥君通过score表实例解析SQL聚合函数COUNT和AVG的常见用法。详解COUNT(studentNo)、COUNT(score)、COUNT()的区别,以及AVG函数对数值/字符型字段的不同处理,特别指出AVG()是无效语法。实战部分提供6个典型查询案例及结果,包含创建表、插入数据的完整SQL代码。产品专家三桥君强调正确理解函数特性(如空值处理、字段类型限制)对数据分析的重要性,帮助开发者避免常见误区,提升查询效率。
152 0
|
6月前
|
SQL Oracle 关系型数据库
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
在Oracle数据库开发中,双引号的使用是一个重要但易被忽视的细节。本文全面解析了双引号在SQL中的特殊应用场景,包括解决标识符与保留字冲突、强制保留大小写、支持特殊字符和数字开头标识符等。同时提供了最佳实践建议,帮助开发者规避常见错误,提高代码可维护性和效率。
221 6
|
11月前
|
SQL 数据库
如何应用SQL约束条件?
【10月更文挑战第28天】如何应用SQL约束条件?
286 11
|
12月前
|
SQL Oracle 关系型数据库
SQL语言的主要标准及其应用技巧
SQL(Structured Query Language)是数据库领域的标准语言,广泛应用于各种数据库管理系统(DBMS)中,如MySQL、Oracle、SQL Server等
381 9
|
12月前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
170 3
|
12月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
12月前
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
2106 5
|
12月前
|
SQL 存储 数据库
SQL在构建系统中的应用:关键要素与编写技巧
在构建基于数据库的系统时,SQL(Structured Query Language)扮演着至关重要的角色
|
12月前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
408 3
|
11月前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
171 0

热门文章

最新文章