MySQL简介及用法

MySQL介绍

基本特点


关系型数据库:

MySQL使用表格来存储数据,它支持SQL(结构化查询语言)进行数据查询和操作。


开源:

MySQL最初是作为一个开源项目发布的,这意味着你可以免费使用和修改它的源代码。然而,Oracle也提供了商业版本,提供额外的功能和支持。


跨平台:

支持多种操作系统,包括Linux、Windows、macOS、FreeBSD等。


使用场景


Web应用程序:

MySQL是LAMP(Linux, Apache, MySQL, PHP/Python/Perl)堆栈的核心组成部分,是构建动态网站和网络应用的常用选择。


内容管理系统(CMS):

许多流行的CMS,如WordPress、Drupal和Joomla,都使用MySQL作为其数据库后端。


电子商务平台:

例如Magento、Shopify等电子商务平台通常使用MySQL来管理产品信息、客户数据和交易记录。


主要功能


ACID支持:

通过InnoDB存储引擎,MySQL提供了ACID(原子性、一致性、隔离性、持久性)事务支持,确保数据完整性和可靠性。


复制和集群:

MySQL支持主从复制、主主复制和分布式集群,能够有效地扩展读写性能和提高可用性。


高性能:

MySQL以其高性能和低资源消耗著称,适用于大规模、高并发的应用场景。


用户管理和安全:

提供细粒度的访问控制、加密和其他安全特性,确保数据的安全性和隐私。


存储引擎


MySQL支持多种存储引擎,每种引擎针对不同的应用场景进行了优化:

InnoDB:

默认存储引擎,支持事务、安全恢复和外键。


MyISAM:

不支持事务,但具有快速读取性能,适用于只读或读多写少的应用场景。


Memory:

将数据存储在内存中,提供极快的访问速度,但数据在服务器重启时会丢失。


NDB:

用于MySQL Cluster,提供高可用性和分布式存储。


社区和生态系统


MySQL拥有强大的社区支持和丰富的生态系统,包括各种工具、库和插件。例如:

phpMyAdmin:

一个流行的基于Web的MySQL管理工具。


MySQL Workbench:

官方的图形化管理工具,支持数据建模、SQL开发和数据库管理。


Connector/J:

MySQL提供的Java数据库连接器,使Java应用程序可以轻松连接到MySQL数据库。

学习MySQL的心得

学习MySQL的过程中,有一些重要的心得体会可以帮助你更好地掌握这门数据库管理系统:

扎实的SQL基础


学习MySQL首先要掌握良好的SQL基础,包括SELECT、INSERT、UPDATE、DELETE等基本语句的使用,以及条件筛选、排序、分组等高级查询技巧。

理解数据库设计原则


深入理解数据库的设计原则和范式化概念,学习如何设计合理的数据库结构,包括表的关系、主键、外键等方面。

 实践操作


通过大量的实践操作来加深对MySQL的理解,包括创建数据库、表,插入数据,进行查询和更新操作等,通过动手实践来加深记忆。

 学习索引和优化


了解索引的作用和原理,学习如何为表添加索引以提高查询效率,以及数据库性能优化的相关知识。

 多维度学习


除了SQL语句的应用,还要学习MySQL的安全设置、备份与恢复、事务处理、存储过程和触发器等高级特性,全面提升对MySQL的应用水平。

 阅读权威资料


阅读官方文档、权威书籍或者优质的在线教程,获取系统全面的学习材料,有利于全面理解MySQL的方方面面。

参与实际项目


将学到的知识应用到实际的项目中,积累实际经验,面对真实问题时能够更加游刃有余。

不断总结与分享


学习过程中要不断总结自己的经验和体会,也要乐于分享,可以通过博客、社区或者参与讨论来和他人交流学习。

MySQL用法

MySQL是一个流行的开源关系型数据库管理系统,被广泛用于Web应用程序开发和数据驻留。以下是MySQL的一些常见用法:

连接到MySQL服务器


你可以使用命令行客户端或者通过编程语言来连接到MySQL服务器。

命令行连接:


mysql -u 用户名 -p
在提示下输入密码后,你就可以在MySQL命令行界面中执行SQL命令了。

编程语言连接:


通过编程语言(如Python、PHP、Java等)的MySQL连接库连接到数据库,可以执行更复杂的操作。

创建和选择数据库
你可以使用CREATE DATABASE命令来创建新数据库,使用USE命令选择要操作的数据库。

创建数据库:

CREATE DATABASE 数据库名;


选择数据库:

USE 数据库名;


创建表


使用CREATE TABLE命令来创建新的数据表,定义表的列和属性。


CREATE TABLE 表名 (
    列1 数据类型,
    列2 数据类型,
    ...
);


插入数据


使用INSERT INTO命令向表中插入新的数据行。


INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);


查询数据


使用SELECT命令从表中检索数据。


SELECT 列1, 列2 FROM 表名 WHERE 条件;


更新数据


使用UPDATE命令更新现有数据行的值。


UPDATE 表名 SET 列1 = 新值1, 列2 = 新值2 WHERE 条件;


删除数据


使用DELETE命令删除符合条件的数据行。


DELETE FROM 表名 WHERE 条件;


管理表结构


使用ALTER TABLE命令来添加、修改或删除表的列,以及其他结构变更操作。


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


删除表


使用DROP TABLE命令删除不再需要的表。


DROP TABLE 表名;

MySQL的基础关键字 

MySQL中有一些关键字是用于控制和管理数据库的,以下是一些常见的MySQL关键字:

SELECT:用于从数据库中查询数据。
INSERT:用于向数据库中插入新的数据。
UPDATE:用于更新数据库中的数据。
DELETE:用于从数据库中删除数据。
CREATE:用于创建新的数据库、表、视图、索引等对象。
ALTER:用于修改数据库中的表结构。
DROP:用于删除数据库中的表、视图、索引等对象。
TRUNCATE:用于快速清空表中的数据。
JOIN:用于在多个表之间建立关联关系。
WHERE:用于设置查询条件。
GROUP BY:用于对查询结果进行分组。
ORDER BY:用于对查询结果进行排序。
LIMIT:用于限制查询结果的数量。
UNION:用于合并多个查询结果。
GRANT:用于授予用户权限。
REVOKE:用于撤销用户权限。
COMMIT:用于提交事务。
ROLLBACK:用于回滚事务。
BEGIN:用于开始一个事务。
SHOW:用于显示数据库、表、索引等对象的信息。

MySQL的使用领域 

MySQL是一个功能强大且广泛应用的关系型数据库管理系统,被用在许多不同的领域和应用场景中。以下是一些常见的应用领域:

Web开发


MySQL在Web开发中非常流行,特别是在LAMP(Linux, Apache, MySQL, PHP/Perl/Python)堆栈中。它通常用于:

内容管理系统(CMS):

WordPress、Joomla、Drupal等。


电子商务平台:

Magento、PrestaShop、OpenCart等。


论坛和社交网络:

phpBB、vBulletin等。

 企业应用


企业环境中,MySQL常用于:

客户关系管理(CRM)系统:

SugarCRM、Vtiger CRM等。


企业资源计划(ERP)系统:

Odoo、ERPNext等。


业务数据分析和商业智能(BI)工具:

用于存储和分析企业数据。

金融服务


金融机构使用MySQL来管理交易、账户信息和其他关键的数据。MySQL的高性能和可靠性使其适合于处理大量金融交易和数据分析。

在线游戏


在线游戏公司使用MySQL来管理玩家数据、游戏状态、排行榜等。这些数据通常需要实时更新和高并发访问。

 教育


教育机构和在线学习平台使用MySQL来管理学生信息、课程内容、成绩记录等。如Moodle是一种流行的开源学习管理系统(LMS),其后端通常使用MySQL。

 媒体和娱乐


媒体公司使用MySQL来管理内容库、用户数据和广告系统。如视频网站、音乐流媒体服务和新闻网站等。

 云服务


许多云服务提供商,如Amazon Web Services (AWS)、Google Cloud Platform (GCP) 和 Microsoft Azure,都提供MySQL作为其数据库服务的一部分。例如,AWS RDS 中的 MySQL 实例。

 物联网(IoT)


在物联网应用中,MySQL用作存储和分析来自各种传感器和设备的数据,支持实时监控和数据处理。

数据仓库


虽然MySQL主要是一个事务性数据库,但它也可以用于数据仓库,用于存储和分析大量历史数据。在这种情况下,通常会与其他工具一起使用,如ETL(提取、转换、加载)工具。

创业公司和中小企业


由于MySQL的易用性、良好的性能和低成本(开源),它非常适合初创公司和中小企业用来构建其核心应用和服务。

 

科学研究


科研机构和项目使用MySQL来存储和分析实验数据、研究结果和文献资料。

 代码示例:

use library11

-- select练习六:

-- 

-- 1.查询出图书的索取号、书名、出版社、类别名称。(分别使用隐式连接和显示连接完成)

SELECT bO.BookID,bo.BookName,bo.Publisher,bc.ClassName

from tbl_bookinfo as bo,tbl_bookclass as bc

WHERE bO.ClassId=bc.ClassId; 

-- 2.在TBL_Borrowinfo表中用SQL语句插入如下两条记录:

-- 

--           ('G40-092.2/5', '20050402005', '2007-7-6',null,0)

-- 

--           ('G633.7/202','20050402005', '2007-7-26',null,0)

INSERT INTO tbl_borrowinfo ( BookID, UserID, BorrowDate, ReturnDate, IsReturned )

VALUES( 'G40-092.2/5', '20050402005', '2007-07-06', NULL, 0 ),

( 'G633.7/202', '20050402005', '2007-07-26', NULL, 0 );

-- 3. 查询出借阅索取号为“G40-092.2/5”图书的读者姓名、班级。

select a.BookID,b.UserName,b.Class

FROM tbl_borrowinfo a inner join tbl_user b

 ON a.userID=b.userID

where a.BookID='G40-092.2/5';#2

-- 4.显示没有归还书的书名、读者姓名、读者的班级。

SELECT BookName,UserName,Class

FROM tbl_bookinfo a inner join tbl_borrowinfo b on a.BookID=b.BookID

inner join tbl_user c on b.userID=c.userID

where IsReturned=0;#9

-- 5.查询出所有借过书的女生的信息。

SELECT BorrowDate,sex

from tbl_borrowinfo a inner join tbl_user b on a.userid=b.UserID

where sex=0 and BorrowDate is not null;#5

-- 6.查询出所有2007年7月、8月被借出过的书的信息及借出时间。

SELECT a.*,b.* 

from tbl_borrowinfo a RIGHT join tbl_bookinfo b on a.BookID=b.BookID

where year(BorrowDate)=2007 and month(BorrowDate)=7 OR MONTH(BorrowDate)=8;#3

-- 7.查询出男、女生各借过多少本书。

SELECT sex,COUNT(*)

from tbl_borrowinfo a inner join tbl_user b on a.userid=b.UserID

where BorrowDate is not null

GROUP BY Sex;#2

-- 8.查询出各出版社在1985年以后出版的图书被借出的数量,并按借出数量的降序显示查询结果。

SELECT tbl_bookinfo.Publisher AS 出版社,COUNT( DISTINCT tbl_borrowinfo.BookID ) AS 被借出数量 

FROM tbl_bookinfo tbl_borrowinfo

JOIN tbl_bookinfo ON tbl_bookinfo.BookID = tbl_borrowinfo.BookID 

WHERE tbl_bookinfo.PublishDate > '1985-12-31' 

GROUP BY tbl_bookinfo.Publisher 

ORDER BY tbl_borrowinfo.BookID DESC;#33

-- 9.查询出2008年的所有借阅信息(包括:书名、借书时间、读者名)。

SELECT tbl_bookinfo.BookName AS 书名,tbl_borrowinfo.BorrowDate AS 借书时间,tbl_user.UserName AS 读者名 

FROM tbl_bookinfo

JOIN tbl_borrowinfo ON tbl_bookinfo.BookID = tbl_borrowinfo.BookID

JOIN tbl_user ON tbl_user.UserID = tbl_borrowinfo.UserID 

WHERE

YEAR ( tbl_borrowinfo.BorrowDate ) = 2008;#2

-- 10.从图书信息表及图书类型表中检索书名、作者、出版社、类别编号、类别名称,所有的类别名称均显示。(分别使用右外连接和左外连接完成)

SELECT tbl_bookinfo.BookName AS 书名,  

    tbl_bookinfo.Author AS 作者,  

    tbl_bookinfo.Publisher AS 出版社,  

    tbl_bookinfo.ClassId AS 类别编号,  

    tbl_bookclass.ClassName AS 类别名称  

FROM      tbl_bookinfo

LEFT JOIN      tbl_bookclass ON tbl_bookinfo.ClassId = tbl_bookclass.ClassId; #109

RIGHT JOIN      tbl_bookclass ON tbl_bookinfo.ClassId = tbl_bookclass.ClassId; #109

-- 左外连接 

SELECT a.*,b.*

from tbl_bookinfo a LEFT JOIN tbl_bookclass b on a.ClassId=b.classid;#109

-- 右外连接

SELECT a.*,b.*

from  tbl_bookclass a RIGHT JOIN  tbl_bookinfo b on a.ClassId=b.classid;#109

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值