MySQL数据库基础

本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。

场景体验目标

本场景将提供一台阿里云RDS MySQL数据库。完成本教程操作后,您可以使用数据管理服务DMS(Data Management Service)连接到RDS MySQL实例,然后进行数据表的CRUD操作。

背景知识

本场景主要涉及以下云产品和服务:

云数据库RDS

阿里云关系型数据库(Relational Database Service,简称RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于阿里云分布式文件系统和SSD盘高性能存储,RDS支持MySQL、SQL Server、PostgreSQL、PPAS(Postgre Plus Advanced Server,高度兼容Oracle数据库)和MariaDB TX引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。

数据管理服务DMS

数据管理服务(Data Management Service,简称DMS)支持MySQL、SQL Server、PostgreSQL、Oracle、MongoDB、Oceanbase等关系型数据库和NoSQL数据库的管理。它是一种集数据管理、结构管理、用户授权、安全审计、数据趋势、数据追踪、BI图表、性能与优化和服务器管理于一体的数据管理服务。用户使用数据管理服务实现易用的数据库和服务器统一管理入口,让数据更安全、管理更高效、数据价值更清晰。

实验详情

数据库启动与连接

本小节主要介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL。

1.通过如下操作步骤,登录阿里云管理控制台,并进入云数据库RDS实例的管理页面。

1)在页面左侧的 云产品资源 栏,查看已创建的实验资源。

2)点击 一键复制登录url,打开浏览器隐身窗口(无痕模式)输入已复制的登录链接。

3)在控制台登录页面,输入云产品资源提供的 子用户名称 和 子用户密码 ,并点击 【登录】 。

4)在阿里云管理控制台,点击顶部【产品与服务】 ,然后点击 【数据库】条目下的 【云数据库RDS版】 ,进入RDS数据库的管理页面。

5)在【实例列表】页面中,首先,选择 云产品资源 中提供的 地域,然后单击已创建的RDS实例ID,进入实例的管理页面。

2.在实例详情页,单击左侧导航栏的【账号管理】,然后单击【创建账号】。

3.参考说明配置账号信息,然后单击【确定】。

  • 数据库账号:输入数据库账号名称,例如:test_user 。
  • 账号类型:此处选择普通账号。
  • 密码:设置账号密码,例如:Password1213。
  • 确认密码:再次输入密码。

4.在实例详情页,单击左侧导航栏的【数据库管理】,然后单击【创建数据库】。

5.参考说明配置数据库信息,然后单击【创建】。

  • 数据库(DB)名称:输入数据库名称,例如:user_db 。
  • 支持字符集:默认设为utf8。
  • 授权账号:选择步骤三新建的数据库账号。
  • 账号类型:默认设置为读写。
  • 备注说明:非必填。用于备注该数据库的相关信息,便于后续数据库管理,最多支持256个字符。

6.在数据库管理页面,单击页面右上方的【登录数据库】。

7.在输入框中,输入刚才创建的用户名和密码,单击【登录】。

登录成功,进入数据管理服务系统DMS。

数据库表操作

本小节主要介绍对数据库表的基本操作,其中包括新增、删除、更新和重命名等。

1.在DMS控制台,左上角选择创建好的数据库user_db,然后单击【SQL操作】 > 【SQL窗口】。

2.使用CREATE TABLE语句创建一个数据表。将以下语句复制到SQL窗口,然后单击【执行】。

CREATE TABLE `USER` (
  `user_id` int(128) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

语句解析:

  • CREATE TABLE `USER`:新表的名字,表名称在关键字CREATE TABLE后给出。

  • `name` varchar(64) NOT NULL,:列名name,类型varchar,长度限制64,此列不能为空。

  • PRIMARY KEY (`user_id`):设置USER表主键为user_id。

  • `user_id` int(128) NOT NULL AUTO_INCREMENT,:AUTO_INCREMENT通常用于主键,表示主键自增,数值会自动+1。

执行成功后,单击【刷新】查看创建的数据表。

3.使用ALTER TABLE语句更新数据表。将以下语句复制到SQL窗口,然后单击执行。

# 在年龄age列后面,为USER表新增一列性别sex,0代表女,1代表男。
ALTER TABLE user ADD COLUMN sex tinyint(1) NOT NULL COMMENT '性别,女:0,男:1' AFTER `age`;

4.使用RENAME TABLE语句对数据表重命名。将以下语句复制到SQL窗口,然后单击执行。

# 修改表名user为student。
RENAME TABLE USER TO student;

语句格式:

RENAME TABLE table_name_a TO table_name_b;

5.使用DROP TABLE语句删除数据表。将以下语句复制到SQL窗口,然后单击执行。

说明:此操作不能撤销,请谨慎操作。

# 删除学生表。
DROP TABLE student;

语句格式:

DROP TABLE table_name;

数据操作

本小节主要为大家介绍MySQL中常用的数据查询、删除、更新、插入等基本操作。

1.在DMS控制台,单击【SQL操作】 > 【SQL窗口】。

2.使用CREATE TABLE语句创建一个数据表。将以下语句复制到SQL窗口,然后单击【执行】。

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(32) DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  `address` varchar(32) DEFAULT NULL COMMENT '住址',
  `sex` tinyint(1) DEFAULT NULL COMMENT '性别,女:0,男:1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

执行成功后,单击【刷新】查看创建的数据表。

3.插入数据

插入语句说明:

  • table_name(col_name,...)中的字段名列表必须和values(expr,...)字段值列表一致。
  • 如果数据是字符型,必须使用单引号或者双引号。
  • AUTO_INCREMENT标记的自动递增的主键,在插入数据时,可以不设置值。

将以下SQL语句复制到SQL窗口,然后单击【执行】。

INSERT INTO USER
       (name, age, address, sex)
VALUES
       ('端木巧香', 21, '江西', 0),
       ('令狐静珊', 22, '湖北', 0),
       ('钟离梦华', 23, '湖南', 0),
       ('西门怜云', 24, '河南', 1),
       ('拓跋晨潍', 25, '河北', 1),
       ('公羊曼安', 26, '山东', 1),
       ('呼延飞鹏', 27, '山西', 1) ;

4.查询数据

查询语句格式:

SELECT col_name,...
  FROM table_name
 WHERE where_condition
 GROUP BY col_name,...
HAVING where_condition
 ORDER BY col_name,...
 LIMIT offset,row_count

将以下SQL语句复制到SQL窗口,然后单击【执行】。

SELECT id,name,age,address,sex FROM user; 

5.更新数据

更新语句格式:

UPDATE table_name SET col_name=expr,... WHERE where_condition

将以下SQL语句复制到SQL窗口,然后单击【执行】。

UPDATE `user` SET `age` = 28,`address` = '四川' WHERE `name` = '公羊曼安' ;

6.删除数据

删除语句格式:

DELETE FROM table_name WHERE where_condition

将以下SQL语句复制到SQL窗口,然后单击【执行】。

DELETE FROM `user` WHERE `name` = '公羊曼安' ; 

函数操作

本小节主要为大家介绍MySQL中常用的内置函数。

1.在DMS控制台,单击【SQL操作】 > 【SQL窗口】。

2.使用CREATE TABLE语句创建一个数据表。将以下语句复制到SQL窗口,然后单击【执行】。

CREATE TABLE student_score(sid INT PRIMARY KEY NOT NULL, sname VARCHAR(30), sage INT, ssex VARCHAR(8), score INT(11));
insert into `student_score`(`sid`, `sname`, `sage`, `ssex`,`score`)
values  (1001, '小花', 17,'0', 75),
        (1002, '小红', 18,'0', 80),
        (1003, '王五', 18,'1', 90),
        (1004, '李四', 17,'1', 68),
        (1005, '张三', 19,'1', 73),
        (1006, '小黑', 19,'1', 100),
        (1007, '小马', 20,'0', 77),
        (1008, '王舞', 17,'1', 82),
        (1009, '小白', 19,'0', 88),
        (1010, '温瞳', 18,'0', 53);

3.AVG()函数

将以下语句复制到SQL窗口,然后单击【执行】。

SELECT avg(score) FROM student_score;

执行结果如下:

4.COUNT()函数

将以下语句复制到SQL窗口,然后单击【执行】。

SELECT COUNT(*) FROM student_score;

执行结果如下:

5.MAX()函数

将以下语句复制到SQL窗口,然后单击【执行】。

SELECT MAX(score) FROM student_score;

执行结果如下:

6.MIN()函数

将以下语句复制到SQL窗口,然后单击【执行】。

SELECT MIN(score) FROM student_score;

执行结果如下:

7.    SUM()函数

将以下语句复制到SQL窗口,然后单击【执行】。

SELECT SUM(score) FROM student_score;

执行结果如下:

组合查询

本小节主要介绍如何使用GROUP BY、HAVING和ORDER BY等进行分组查询。

1.在DMS控制台,单击【SQL操作】 > 【SQL窗口】。

2.使用CREATE TABLE语句创建数据表。将以下语句复制到SQL窗口,然后单击【执行】。

CREATE TABLE `student` (
  `sid` int(11) NOT NULL,
  `sname` varchar(30) DEFAULT NULL,
  `sage` int(11) DEFAULT NULL,
  `ssex` varchar(8) DEFAULT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `student`(`sid`,`sname`,`sage`,`ssex`) values
(1005,'小花',19,'0'),
(1004,'小红',18,'0'),
(1003,'王五',18,'1'),
(1002,'李四',17,'1'),
(1001,'张三',18,'1');
CREATE TABLE `sc` (
  `sid` int(11) NOT NULL,
  `cid` int(11) NOT NULL,
  `score` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `sc`(`sid`,`cid`,`score`) values
(1001,101,75),
(1001,102,85),
(1002,101,65),
(1002,102,95),
(1003,101,65),
(1003,102,95),
(1004,101,80),
(1004,102,80),
(1005,101,75),
(1005,102,85);
CREATE TABLE `course` (
  `cid` int(11) NOT NULL,
  `cname` varchar(30) DEFAULT NULL,
  `tid` int(11) DEFAULT NULL,
  PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `course`(`cid`,`cname`,`tid`) values
(102,'语文',2),
(101,'数学',1);
CREATE TABLE `teacher` (
  `tid` int(11) NOT NULL,
  `tname` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `teacher`(`tid`,`tname`) values
(2,'刘老师'),
(1,'王老师');

执行成功后,单击【刷新】查看创建的数据表。

3.查询所有同学的学号和成绩。 将以下SQL语句复制到SQL窗口,然后单击【执行】。

# 使用WHERE s. sid = sc.sid 来消除笛卡尔积。
SELECT s.sid ,s.sname ,c.score FROM student AS s ,sc AS c WHERE s.sid = c.sid ;

执行结果如下:

4.查询语文成绩在80以上同学。 将以下SQL语句复制到SQL窗口,然后单击【执行】。

SELECT a.score,
       b.cname,
       s.sname
  FROM sc as a,
       course AS b,
       student AS s
 WHERE a.cid= b.cid
   AND s.sid= a.sid
   AND a.cid= 102
   AND a.score> 80

执行结果如下:

5.查询语文成绩比数学成绩高的同学。 将以下SQL语句复制到SQL窗口,然后单击【执行】。

SELECT a.sid,
       a.score,
       s.sname
  FROM(
SELECT sid, score
  FROM sc
 WHERE cid= "102") a,
       (
SELECT sid, score
  FROM sc
 WHERE cid= "101") b,
       student as s
 WHERE a.score > b.score
   AND a.sid= b.sid
   AND s.sid= a.sid

执行结果如下:

原文地址:https://www.cnblogs.com/tu240302975/p/13466674.html