什么是数据库
数据库是一个组织化的数据集合,它被设计为方便存储、管理和检索数据。数据库通常以表格的形式组织数据,其中每一行代表一个数据记录,每一列代表一个数据字段。数据库系统提供了一种结构化的方法来存储和管理数据,以便用户可以有效地访问和操作数据。
MySQL数据库
MySQL是一个开源的关系型数据库管理系统(RDBMS),它具有以下优势:
-
开源性: MySQL是开源软件,意味着用户可以免费获取、使用和修改它的源代码。这使得MySQL成为许多开发人员和组织的首选数据库,因为它不需要付费许可证费用。
-
跨平台支持: MySQL支持多种操作系统,包括Windows、Linux、macOS等,使得它能够在各种环境中运行和部署。
-
易于使用: MySQL的安装、配置和使用相对简单,具有友好的用户界面和广泛的文档资料。它提供了丰富的功能和工具,使得用户能够轻松地管理和操作数据库。
-
高性能: MySQL具有优化的查询执行引擎,能够处理大量数据和复杂的查询。它支持索引、缓存、分区等功能,提高了数据检索和处理的效率。
-
可扩展性: MySQL支持水平和垂直两种扩展方式,可以根据应用需求灵活扩展数据库的性能和容量。它还支持主从复制、集群等高可用性和负载均衡解决方案。
-
丰富的功能: MySQL提供了许多强大的功能,包括事务支持、存储过程、触发器、视图、复制、安全性等,使得它能够满足各种复杂的业务需求。
-
活跃的社区支持: MySQL拥有一个庞大的开发者社区,提供了丰富的资源和支持。用户可以通过社区论坛、邮件列表、文档、教程等获取帮助和交流经验。
-
广泛应用: MySQL被广泛应用于各种领域,包括Web开发、企业应用、电子商务、云计算等。许多知名的网站和应用程序都使用MySQL作为其后端数据库。
MySQL安装及图形化界面安装
MySql官网安装,选择msi的安装方式,msi是图形化界面,直接安装即可。
Navicat
Navicat是一款流行的数据库管理工具,它提供了用于连接、管理和维护多种类型数据库的图形化界面。Navicat最初由PremiumSoft CyberTech Ltd.开发,目前已经成为了许多开发人员和数据库管理员的首选工具之一。
MySql数据类型
MySQL支持多种数据类型,包括以下主要类型:
-
整数类型:
INT
: 常用的整数类型,存储范围为-2147483648到2147483647。TINYINT
: 一个字节的整数类型,存储范围为-128到127。SMALLINT
: 两个字节的整数类型,存储范围为-32768到32767。BIGINT
: 长整数类型,存储范围更大。
-
浮点数类型:
FLOAT
: 单精度浮点数。DOUBLE
: 双精度浮点数。DECIMAL
: 用于存储固定精度的小数。
-
字符串类型:
CHAR
: 定长字符串。VARCHAR
: 变长字符串。TEXT
: 较大的文本数据。ENUM
: 枚举类型,存储一个预定义的值列表。SET
: 集合类型,存储零个或多个预定义的值。
-
日期和时间类型:
DATE
: 日期,格式为'YYYY-MM-DD'。TIME
: 时间,格式为'HH:MM:SS'。DATETIME
: 日期和时间,格式为'YYYY-MM-DD HH:MM:SS'。TIMESTAMP
: 时间戳,用于存储从UNIX纪元开始的秒数。
-
二进制类型:
BLOB
: 用于存储二进制大对象数据。BIT
: 位数据类型。
这些是MySQL中常用的数据类型,每种数据类型都具有特定的用途和存储特性,可以根据实际需求选择合适的数据类型来存储数据。
MySql基础语法
通过图形化界面创建一个表,字段如下:
bash
-- 数据简单查询
-- SELECT FIELD(str,str1,str2,str3,...)
-- FROM TABLE
-- [WHERE CONDITION]
-- [GROUP BY FIELD(str,str1,str2,str3,...)]
-- [ORDER BY FIELD(str,str1,str2,str3,...)]
-- LIMIT
SELECT * FROM t_student
SELECT stuid,name,gender FROM t_student
-- WHERE查询
SELECT stuid,name,gender,age FROM t_student WHERE gender = 1
-- 避免重复数据查询
SELECT DISTINCT name FROM t_student
-- 拼接
SELECT CONCAT(stuid,name) FROM t_student
-- in 查询
SELECT * FROM t_student WHERE classno =1 OR classno =2
SELECT * FROM t_student WHERE classno IN (1,2,3)
SELECT * FROM t_student WHERE classno NOT IN (1,2,3)
-- BETWEEN AND 范围查询
SELECT * FROM t_student WHERE age BETWEEN 16 AND 20
-- 聚合和统计
SELECT count(1) as peoplenum,gender,MAX(age),MIn(age),AVG(age),SUM(age),GROUP_CONCAT(name) FROM t_student GROUP BY gender
SELECT count(1) as peoplenum,name FROM t_student GROUP BY name HAVING peoplenum > 1
-- 分页
SELECT count(1) FROM t_student
-- 模糊查询 LIKE
SELECT * FROM t_student WHERE name LIKE '%i'
-- 匹配单个字符. _是占位符,
SELECT * FROM t_student WHERE name LIKE '__i'
SELECT * FROM t_student WHERE name LIKE 'h%'
-- 排序
SELECT stuid,name,gender,age FROM t_student WHERE gender = 1 ORDER BY age DESC
-- 联合查询
-- INNER JOIN 交集 两边都有
SELECT t1.*,t2.* FROM t_student t1 INNER JOIN t_classroom t2 ON t1.classno = t2.classno
-- LEFT JOIN 先查询左表所有数据 再匹配右表数据 无数据填充null
SELECT * FROM t_student t1 LEFT JOIN t_classroom t2 ON t1.classno = t2.classno
UNION
-- RIGHT JOIN 先查询左表所有数据 再匹配右表数据 无数据填充null
SELECT * FROM t_student t1 RIGHT JOIN t_classroom t2 ON t1.classno = t2.classno
WHERE t1.classno IS NOT NULL
-- 子查询 先执行括号内的
SELECT * FROM t_student WHERE classno IN (SELECT classno FROM t_classroom)
-- EXISTS
SELECT * FROM t_student t1 WHERE EXISTS (SELECT * FROM t_classroom t2 WHERE t1.classno = t2.classno)
-- 分页处理
SELECT * FROM t_student LIMIT 2,2