MySQL入门实战2:SQL基础操作

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 云起冬季实战营第三期:MySQL数据库进阶实战。参加复习一下mysql,教程很好,做笔记记录一下。

1. 数据库表操作

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


1.使用CREATE TABLE语句创建一个数据表。

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。


2. 使用ALTER TABLE语句更新数据表。

在年龄age列后面,为USER表新增一列性别sex,0代表女,1代表男。

ALTER TABLE user ADD COLUMN sex tinyint(1) NOT NULL COMMENT 'sex,woman:0,man:1' AFTER `age`;


3. 使用RENAME TABLE语句对数据表重命名。

修改表名user为student。

RENAME TABLE USER TO student;

语句格式:

RENAME TABLE table_name_a TO table_name_b;


4. 使用DROP TABLE语句删除数据表。

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

删除学生表。

DROP TABLE student;

语句格式:

DROP TABLE table_name;


2. 数据操作

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


1. 使用CREATE TABLE语句创建一个数据表。

CREATE TABLE `user` (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',  `name` varchar(32) DEFAULT NULL COMMENT 'name',  `age` int(11) DEFAULT NULL COMMENT 'age',  `address` varchar(32) DEFAULT NULL COMMENT 'address',  `sex` tinyint(1) DEFAULT NULL COMMENT 'sex,woman:0,man:1',  PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

2. 插入数据

插入语句说明:

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

INSERT INTO USER        (name, age, address, sex) VALUES        ('zhangsan', 21, 'jiangxi', 0),        ('lisi', 22, 'hubei', 0),        ('wangwu', 23, 'hunan', 0),        ('lilei', 24, 'henan', 1),        ('hanmeimei', 25, 'hebei', 1),        ('xiaoming', 26, 'shandong', 1),        ('xiaoli', 27, 'shanxi', 1) ;


3. 查询数据

查询语句格式:

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

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


4. 更新数据

更新语句格式:

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

UPDATE `user` SET `age` = 28,`address` = 'sichuan' WHERE `name` = 'xiaoming' ;


5. 删除数据

删除语句格式:

DELETE FROM table_name WHERE where_condition

DELETE FROM `user` WHERE `name` = 'xiaoming' ;


3. 函数操作

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


1. 使用CREATE TABLE语句创建一个数据表。  

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, 'xiaohua', 17,'0', 75),  (1002, 'xiaohong', 18,'0', 80),  (1003, 'wangwu', 18,'1', 90),  (1004, 'lisi', 17,'1', 68),  (1005, 'zhangsan', 19,'1', 73),  (1006, 'xiaohei', 19,'1', 100),  (1007, 'xiaoma', 20,'0', 77),  (1008, 'xiaoli', 17,'1', 82),  (1009, 'xiaobai', 19,'0', 88),  (1010, 'wentong', 18,'0', 53);


2. AVG()函数

SELECT avg(score) FROM student_score;

执行结果如下:

image.png


3. COUNT()函数  

SELECT COUNT(*) FROM student_score;

执行结果如下:

image.png


4. MAX()函数  

SELECT MAX(score) FROM student_score;

执行结果如下:

image.png


5. MIN()函数  

SELECT MIN(score) FROM student_score;

执行结果如下:

image.png


6. SUM()函数

SELECT SUM(score) FROM student_score;

执行结果如下:

image.png


4. 组合查询

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


1. 使用CREATE TABLE语句创建数据表。  

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,'xiaohua',19,'0'), (1004,'xiaohong',18,'0'), (1003,'wangwu',18,'1'), (1002,'lisi',17,'1'), (1001,'zhangsan',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,'yuwen',2), (101,'shuxue',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,'liulaoshi'), (1,'wanglaoshi');


2. 查询所有同学的学号和成绩。

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


3. 查询语文成绩在80以上同学。  

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


4. 查询语文成绩比数学成绩高的同学。  

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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22天前
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(07) 她气鼓鼓递来一条SQL | 怎么看执行计划、SQL怎么优化?
在日常研发工作当中,系统性能优化,从大的方面来看主要涉及基础平台优化、业务系统性能优化、数据库优化。面对数据库优化,除了DBA在集群性能、服务器调优需要投入精力,我们研发需要负责业务SQL执行优化。当业务数据量达到一定规模后,SQL执行效率可能就会出现瓶颈,影响系统业务响应。掌握如何判断SQL执行慢、以及如何分析SQL执行计划、优化SQL的技能,在工作中解决SQL性能问题显得非常关键。
|
22天前
|
SQL 存储 关系型数据库
MySQL原理简介—1.SQL的执行流程
本文介绍了MySQL驱动、数据库连接池及SQL执行流程的关键组件和作用。主要内容包括:MySQL驱动用于建立Java系统与数据库的网络连接;数据库连接池提高多线程并发访问效率;MySQL中的连接池维护多个数据库连接并进行权限验证;网络连接由线程处理,监听请求并读取数据;SQL接口负责执行SQL语句;查询解析器将SQL语句解析为可执行逻辑;查询优化器选择最优查询路径;存储引擎接口负责实际的数据操作;执行器根据优化后的执行计划调用存储引擎接口完成SQL语句的执行。整个流程确保了高效、安全地处理SQL请求。
166 76
|
7天前
|
SQL Oracle 关系型数据库
【YashanDB 知识库】如何将 mysql 含有 group by 的 SQL 转换成崖山支持的 SQL
在崖山数据库中执行某些 SQL 语句时出现报错(YAS-04316 not a single-group group function),而这些语句在 MySQL 中能成功执行。原因是崖山遵循 SQL-92 标准,不允许选择列表中包含未在 GROUP BY 子句中指定的非聚合列,而 MySQL 默认允许这种操作。解决办法包括:使用聚合函数处理非聚合列或拆分查询为两层,先进行 GROUP BY 再排序。总结来说,SQL-92 更严格,确保数据一致性,MySQL 在 5.7 及以上版本也默认遵循此标准。
|
17天前
|
SQL 存储 关系型数据库
MySQL原理简介—10.SQL语句和执行计划
本文介绍了MySQL执行计划的相关概念及其优化方法。首先解释了什么是执行计划,它是SQL语句在查询时如何检索、筛选和排序数据的过程。接着详细描述了执行计划中常见的访问类型,如const、ref、range、index和all等,并分析了它们的性能特点。文中还探讨了多表关联查询的原理及优化策略,包括驱动表和被驱动表的选择。此外,文章讨论了全表扫描和索引的成本计算方法,以及MySQL如何通过成本估算选择最优执行计划。最后,介绍了explain命令的各个参数含义,帮助理解查询优化器的工作机制。通过这些内容,读者可以更好地理解和优化SQL查询性能。
|
1月前
|
SQL 存储 机器学习/深度学习
如何让SQL速度飞起来 入门YashanDB优化器
优化器,SQL引擎的核心组成部分,是数据库中用于把关系表达式转换成最优执行计划的核心组件,影响数据库系统执行性能的关键组件之一。
35 15
|
2月前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
2月前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
2月前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
362 3
|
2月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
2月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。