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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 云起冬季实战营第三期: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
相关文章
|
1天前
|
SQL 关系型数据库 MySQL
网安入门之MySQL后端基础
《网安入门之MySQL后端基础》简介: 本文介绍了数据库及MySQL的基础知识,涵盖数据库的概念、结构与操作。数据库是组织化存储数据的集合,通过表、列、行等结构实现高效管理。MySQL作为开源的关系型数据库管理系统,广泛应用于Web开发。文中详细讲解了MySQL的基本操作,如增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT)等语句的使用方法,并介绍了数据库事务的ACID特性。此外,还探讨了SQL注入攻击的风险及防范措施,强调了预处理语句的重要性。最后,简述了PHP中mysqli扩展的使用方法,包括连接数据库、执行查询和关闭连接等步骤。
|
14天前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
1月前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
132 3
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
1月前
|
SQL Oracle 关系型数据库
SQL(MySQL)
SQL语言是指结构化查询语言,是一门ANSI的标准计算机语言,用来访问和操作数据库。 数据库包括SQL server,MySQL和Oracle。(语法大致相同) 创建数据库指令:CRATE DATABASE websecurity; 查看数据库:show datebase; 切换数据库:USE websecurity; 删除数据库:DROP DATABASE websecurity;
|
2月前
|
SQL 缓存 监控
SQL性能提升指南:五大优化策略与十个实战案例
在数据库性能优化的世界里,SQL优化是提升查询效率的关键。一个高效的SQL查询可以显著减少数据库的负载,提高应用响应速度,甚至影响整个系统的稳定性和扩展性。本文将介绍SQL优化的五大步骤,并结合十个实战案例,为你提供一份详尽的性能提升指南。
63 0
|
16天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
40 3
|
16天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
43 3