前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0 基础MYSQL自学之路

0 基础MYSQL自学之路

原创
作者头像
疯狂的KK
发布2023-06-26 14:38:31
1600
发布2023-06-26 14:38:31
举报
文章被收录于专栏:Java项目实战Java项目实战

一、SQL简述

1.SQL的概述

SQL(Structured Query Language)是结构化查询语言的缩写,用于管理和操作关系型数据库。它是一种标准化的语言,通过使用语句描述数据库中数据的定义、操作和控制。

SQL可以用于执行各种数据库操作,如创建数据库和表、插入、更新和删除数据、查询数据、定义约束等。它是与数据库进行通信的主要工具,也是开发和管理数据库的核心技术之一。

2.SQL的优点

SQL具有以下几个优点:

  • 简单易学:SQL的语法相对简单,易于学习和理解。
  • 高度可用:SQL可以用于各种数据库管理系统,如MySQL、Oracle、SQL Server等。
  • 统一性:SQL是一种标准化的语言,不受特定数据库类型的限制。
  • 丰富的功能:SQL支持各种数据库操作,包括数据的增删改查、定义约束、事务处理等。
  • 数据独立性:通过使用SQL,应用程序与数据库之间可以实现数据的独立性,不受具体数据库实现的影响。

3.SQL的分类

SQL可以根据功能的不同划分为以下几个方面:

  • 数据定义语言(DDL):用于定义和管理数据库对象,如创建数据库、创建表、修改表结构等。
  • 数据操纵语言(DML):用于对数据库中的数据进行操作,如插入、更新、删除和查询数据等。
  • 数据控制语言(DCL):用于控制和管理数据库的访问权限,如设置用户的权限和角色等。
  • 数据查询语言(DQL):用于从数据库中查询数据,如SELECT语句。
  • 事务控制语言(TCL):用于控制和管理数据库中的事务,如提交和回滚事务。

不同类型的SQL语句可以组合使用,以完成复杂的数据库操作和管理。

二、数据库的三大范式

数据库的三大范式是指在数据库设计过程中,为了保证数据库的数据关联性和一致性,遵循的一些规范和原则。它们是:

  1. 第一范式(1NF):确保每一列的原子性,即每个字段都不可再分。每个字段中的数据需要是不可再分的,不能包含多个值或多个属性。
  2. 第二范式(2NF):在1NF的基础上,确保非主键字段完全依赖于主键字段。即非主键字段必须完全依赖主键字段,而不能只依赖主键的一部分。
  3. 第三范式(3NF):在2NF的基础上,确保非主键字段之间没有传递依赖关系。即非主键字段之间不能相互依赖,而是直接依赖于主键字段。

遵循三大范式可以有效地提高数据的规范性和一致性,减少数据冗余和数据异常的出现。

三、数据库的数据类型

数据库中的数据类型决定了数据的存储格式和操作方式。常见的数据库数据类型包括整数类型、浮点数类型、字符串类型、日期与时间类型、二进制类型等。

1. 整数类型

整数类型用于存储整数数据,常见的整数类型有:

  • TINYINT:1个字节,范围为-128到127或0到255。
  • SMALLINT:2个字节,范围为-32768到32767或0到65535。
  • INT:4个字节,范围为-2147483648到2147483647或0到4294967295。
  • BIGINT:8个字节,范围为-9223372036854775808到9223372036854775807或0到18446744073709551615。

2. 浮点数类型和定点数类型

浮点数类型用于存储小数数据,包括单精度浮点数(FLOAT)和双精度浮点数(DOUBLE)。定点数类型用于存储精度固定的小数数据,包括DECIMAL。

  • FLOAT:4个字节,可精确到7位小数。
  • DOUBLE:8个字节,可精确到15位小数。
  • DECIMAL:可指定精度和小数位数的定点数类型。

3. 字符串类型

字符串类型用于存储字符数据,常见的字符串类型有:

  • CHAR:固定长度字符串,最多可存储255个字符。
  • VARCHAR:可变长度字符串,最多可存储65535个字符。
  • TEXT:可变长度字符串,最多可存储约65,535个字符。

4. 日期与时间类型

日期与时间类型用于存储日期和时间数据,常见的日期与时间类型有:

  • DATE:存储日期,格式为YYYY-MM-DD。
  • TIME:存储时间,格式为HH:MI:SS。
  • DATETIME:存储日期和时间,格式为YYYY-MM-DD HH:MI:SS。
  • TIMESTAMP:存储日期和时间的时间戳,格式为YYYY-MM-DD HH:MI:SS。

6. 二进制类型

二进制类型用于存储二进制数据,常见的二进制类型有:

  • BLOB:二进制大对象,可存储大量的二进制数据。
  • BIT:存储位值,可以是0或1。

数据库的数据类型根据具体的需求和业务逻辑选择合适的类型,以保证数据的准确性和有效性。

四、数据库、数据表的基本操作

1. 数据库的基本操作

数据库的基本操作包括创建数据库、切换数据库、删除数据库等。

  • 创建数据库:CREATE DATABASE database_name;
  • 切换数据库:USE database_name;
  • 删除数据库:DROP DATABASE database_name;

2. 数据表的基本操作

数据表的基本操作包括创建数据表、查看数据表、修改数据表和删除数据表等。

2.1 创建数据表

使用CREATE TABLE语句来创建数据表,并指定每个字段的名称、数据类型和约束等。

代码语言:sql
复制
CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    ...
);
2.2 查看数据表

使用DESCRIBE或SHOW命令来查看数据表的结构和字段信息。

代码语言:sql
复制
DESCRIBE table_name;
SHOW COLUMNS FROM table_name;
2.3 修改数据表

使用ALTER TABLE语句来修改数据表的结构,如添加字段、修改字段类型、删除字段等。

代码语言:sql
复制
ALTER TABLE table_name ADD column_name datatype constraint;
ALTER TABLE table_name MODIFY column_name new_datatype constraint;
ALTER TABLE table_name DROP column_name;
2.4 删除数据表

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

代码语言:sql
复制
DROP TABLE table_name;

五、数据表的约束

数据库表的约束用于限制数据的输入规则,保证数据的一致性和完整性。常见的数据表约束包括主键约束、非空约束、默认值约束、唯一性约束和外键约束等。

1. 主键约束

主键约束用于唯一标识数据表中的每一行数据,保证数据的唯一性和完整性。

代码语言:sql
复制
CREATE TABLE table_name (
    column1 datatype PRIMARY KEY,
    column2 datatype,
    ...
);

2. 非空约束

非空约束用于确保某个字段的值不能为空。

代码语言:sql
复制
CREATE TABLE table_name (
    column1 datatype NOT NULL,
    column2 datatype,
    ...
);

3. 默认值约束

默认值约束用于设置某个字段的默认值。

代码语言:sql
复制
CREATE TABLE table_name (
    column1 datatype DEFAULT default_value,
    column2 datatype,
    ...
);

5. 唯一性约束

唯一性约束用于确保某个字段的值在整个数据表中是唯一的。

代码语言:sql
复制
CREATE TABLE table_name (
    column1 datatype UNIQUE,
    column2 datatype,
    ...
);

6. 外键约束

外键约束用于保持数据表之间的一致性和约束关系,确保数据的完整性。

6.1 数据一致性概念

在设置外键约束之前,需要了解数据一致性的概念。数据一致性是指当表与表之间存在关联关系时,所有相关的数据必须保持一致,不会出现孤儿数据或者脏数据。通过使用外键约束,可以确保数据表之间的关联关系的一致性。

6.2 删除外键

使用ALTER TABLE语句来删除外键约束。

代码语言:sql
复制
ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
6.3 关于外键约束需要注意的细节
  • 外键约束必须指向已经存在的主键或唯一键。
  • 通过外键约束,可以实现数据表之间的一对一、一对多或多对多的关系。
  • 外键约束会导致数据库的性能下降,因此在设计数据库时需要权衡性能和数据一致性的要求。

六、数据表插入数据

向数据表中插入数据可以使用INSERT INTO语句。

1. 为表中所有字段插入数据

使用INSERT INTO语句为表中的所有字段插入数据。

代码语言:sql
复制
INSERT INTO table_name VALUES (value1, value2, ...);

2. 为表中指定字段插入数据

使用INSERT INTO语句为表中的指定字段插入数据。

代码语言:sql
复制
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

3. 同时插入多条记录

使用INSERT INTO语句一次性插入多条记录。

代码语言:sql
复制
INSERT INTO table_name (column1, column2, ...) VALUES
    (value1, value2, ...),
    (value1, value2, ...),
    ...

七、更新数据

使用UPDATE语句来更新数据表中的数据。

1. UPDATE基本语法

使用UPDATE语句来更新表中的数据。

代码语言:sql
复制
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

2. UPDATE更新部分数据

使用UPDATE语句来更新部分数据。

代码语言:sql
复制
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

3. UPDATE更新全部数据

使用UPDATE语句来更新全部数据。

代码语言:sql
复制
UPDATE table_name SET column1 = value1, column2 = value2, ...;

八、删除数据

使用DELETE语句来删除数据表中的数据。

1. DELETE基本语法

使用DELETE语句来删除数据。

代码语言:sql
复制
DELETE FROM table_name WHERE condition;

2. DELETE删除部分数据

使用DELETE语句来删除部分数据。

代码语言:sql
复制
DELETE FROM table_name WHERE condition;

3. DELETE删除全部数据

使用DELETE语句来删除全部数据。

代码语言:sql
复制
DELETE FROM table_name;

4. TRUNCATE和DELETE的区别

TRUNCATE TABLE语句用于删除数据表中的全部数据,但保留表结构。DELETE语句用于删除数据表中的部分或全部数据。

TRUNCATE TABLE语句效率比DELETE语句高,但无法回滚操作,需要谨慎使用。

九、MySQL数据表简单查询

1. 简单查询概述

简单查询是最基本的查询方式,用于从数据表中检索特定的数据。使用SELECT语句进行查询。

2. 查询所有字段(方法不唯一只是举例)

查询所有字段使用SELECT *语句。

代码语言:sql
复制
SELECT * FROM table_name;

3. 查询指定字段(sid、sname)

查询指定字段使用SELECT字段名语句。

代码语言:sql
复制
SELECT sid, sname FROM table_name;

4. 常数的查询

查询常数使用SELECT常数语句。

代码语言:sql
复制
SELECT 1, 'Hello, World!';

5. 从查询结果中过滤重复数据

使用DISTINCT关键字从查询结果中过滤重复数据。

代码语言:sql
复制
SELECT DISTINCT column_name FROM table_name;

6. 算术运算符(举例加运算符)

使用算术运算符进行计算。

代码语言:sql
复制
SELECT column1 + column2 AS result FROM table_name;

十、函数

1. 聚合函数

聚合函数用于对数据进行统计和计算,包括count()、max()、min()、sum()和avg()等。

1.1、count()

统计满足条件的行数。

代码语言:sql
复制
SELECT COUNT(column_name) FROM table_name WHERE condition;
1.2、max()

计算指定列的最大值。

代码语言:sql
复制
SELECT MAX(column_name) FROM table_name WHERE condition;
1.3、min()

计算指定列的最小值。

代码语言:sql
复制
SELECT MIN(column_name) FROM table_name WHERE condition;
1.4、sum()

计算指定列的总和。

代码语言:sql
复制
SELECT SUM(column_name) FROM table_name WHERE condition;
1.5、avg()

计算指定列的平均值。

代码语言:sql
复制
SELECT AVG(column_name) FROM table_name WHERE condition;

2. 其他常用函数

除了聚合函数外,还有其他常用的函数,如时间函数、字符串函数和数学函数等。

2.1、时间函数

常用的时间函数包括NOW()、DATE()和MONTH()等。

代码语言:sql
复制
SELECT NOW(); -- 返回当前日期和时间
SELECT DATE(column_name); -- 返回列的日期部分
SELECT MONTH(column_name); -- 返回列的月份部分
2.2、字符串函数

常用的字符串函数包括CONCAT()、LENGTH()和SUBSTRING()等。

代码语言:sql
复制
SELECT CONCAT(column1, column2) AS result FROM table_name; -- 连接两个字符串
SELECT LENGTH(column_name) FROM table_name; -- 返回字符串的长度
SELECT SUBSTRING(column_name, start, length) FROM table_name; -- 返回字符串的子串
2.3、数学函数

常用的数学函数包括ABS()、ROUND()和FLOOR()等。

代码语言:sql
复制
SELECT ABS(column_name) FROM table_name; -- 返回绝对值
SELECT ROUND(column_name) FROM table_name; -- 返回四舍五入值
SELECT FLOOR(column_name) FROM table_name; -- 返回向下取整值

十一、条件查询

条件查询用于根据条件从数据表中检索数据。

1. 使用关系运算符查询

使用关系运算符(<、<=、=、>=、>)进行条件查询。

代码语言:sql
复制
SELECT column_name FROM table_name WHERE column_name operator value;

2. 使用IN关键字查询

使用IN关键字查询满足一组值的数据。

代码语言:sql
复制
SELECT column_name FROM table_name WHERE column_name IN (value1, value2, ...);

3. 使用BETWEEN AND关键字查询

使用BETWEEN AND关键字查询某个范围的数据。

代码语言:sql
复制
SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2;

4. 使用空值查询

使用IS NULL关键字查询空值。

代码语言:sql
复制
SELECT column_name FROM table_name WHERE column_name IS NULL;

5. 使用AND关键字查询

使用AND关键字进行多条件查询。

代码语言:sql
复制
SELECT column_name FROM table_name WHERE condition1 AND condition2;

6. 使用OR关键字查询

使用OR关键字进行多条件查询。

代码语言:sql
复制
SELECT column_name FROM table_name WHERE condition1 OR condition2;

7. 使用LIKE关键字查询

使用LIKE关键字进行模糊查询。

7.1 普通字符串
代码语言:sql
复制
SELECT column_name FROM table_name WHERE column_name LIKE 'value%';
7.2 含有%通配的字符串
代码语言:sql
复制
SELECT column_name FROM table_name WHERE column_name LIKE '%value%';
7.3 含有_通配的字符串
代码语言:sql
复制
SELECT column_name FROM table_name WHERE column_name LIKE '_alue';

8. 使用LIMIT限制查询结果的数量

使用LIMIT关键字限制查询结果的数量。

代码语言:sql
复制
SELECT column_name FROM table_name LIMIT offset, count;

9. 使用GROUP BY进行分组查询

使用GROUP BY关键字对查询结果进行分组。

代码语言:sql
复制
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name;

9.1 GROUP BY和聚合函数一起使用

代码语言:sql
复制
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name
HAVING condition;

9.2 GROUP BY和聚合函数以及HAVING一起使用

代码语言:sql
复制
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name
HAVING condition;

10. 使用ORDER BY对查询结果排序

使用ORDER BY关键字对查询结果进行排序。

代码语言:sql
复制
SELECT column_name FROM table_name ORDER BY column_name ASC/DESC;

十二、别名设置

1. 为表取别名

使用AS关键字为表取别名。

代码语言:sql
复制
SELECT column_name FROM table_name AS alias_name;

2. 为字段取别名

使用AS关键字为字段取别名。

代码语言:sql
复制
SELECT column_name AS alias_name FROM table_name;

十三、表的关联关系

表的关联关系用于查询涉及多个表的数据,请参考关于关联查询的内容。

1. 关联查询

使用JOIN关键字进行表的关联查询。

代码语言:sql
复制
SELECT columns
FROM table1 JOIN table2 ON condition;

2. 关于关联关系的删除数据

在删除涉及到关联关系的数据时,需要小心处理,以确保数据的完整性和一致性。

十四、多表连接查询

1. 交叉连接查询

使用CROSS JOIN语句进行交叉连接查询。

代码语言:sql
复制
SELECT * FROM table1 CROSS JOIN table2;

2. 内连接查询

使用INNER JOIN语句进行内连接查询。

代码语言:sql
复制
SELECT columns
FROM table1 INNER JOIN table2 ON condition;

3. 外连接查询

使用LEFT JOIN或RIGHT JOIN语句进行外连接查询。

3.1 左(外)连接查询
代码语言:sql
复制
SELECT columns
FROM table1 LEFT JOIN table2 ON condition;
3.2 右(外)连接查询
代码语言:sql
复制
SELECT columns
FROM table1 RIGHT JOIN table2 ON condition;

十五、子查询

子查询是指在查询中嵌套使用的子语句。

1. 带比较运算符的子查询

使用比较运算符对子查询结果进行筛选。

代码语言:sql
复制
SELECT column_name FROM table_name WHERE column_name operator (SELECT column_name FROM table_name);

2. 带EXISTS关键字的子查询

使用EXISTS关键字来判断子查询是否返回结果。

代码语言:sql
复制
SELECT column_name FROM table1 WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);

3. 带ANY关键字的子查询

使用ANY关键字来比较子查询的结果。

代码语言:sql
复制
SELECT column_name FROM table1 WHERE column_name operator ANY (SELECT column_name FROM table_name WHERE condition);

4. 带ALL关键字的子查询

使用ALL关键字来比较子查询的结果。

代码语言:sql
复制
SELECT column_name FROM table1 WHERE column_name operator ALL (SELECT column_name FROM table_name WHERE condition);;

总结

本文按照提供的标题,结合MYSQL的基本知识点,从SQL的概述、数据库范式、数据类型、基本操作、约束、数据插入、数据更新、数据删除、简单查询、函数、条件查询、表关联关系、多表连接查询、子查询等多个方面进行了详细的介绍。希望这篇文章可以帮助你入门MYSQL,更好地理解和使用MYSQL。通过不断地学习和实践,相信你可以掌握MYSQL的基本操作和常用技巧,成为一名合格的MYSQL开发者。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、SQL简述
    • 1.SQL的概述
      • 2.SQL的优点
        • 3.SQL的分类
        • 二、数据库的三大范式
        • 三、数据库的数据类型
          • 1. 整数类型
            • 2. 浮点数类型和定点数类型
              • 3. 字符串类型
                • 4. 日期与时间类型
                  • 6. 二进制类型
                  • 四、数据库、数据表的基本操作
                    • 1. 数据库的基本操作
                      • 2. 数据表的基本操作
                        • 2.1 创建数据表
                        • 2.2 查看数据表
                        • 2.3 修改数据表
                        • 2.4 删除数据表
                    • 五、数据表的约束
                      • 1. 主键约束
                        • 2. 非空约束
                          • 3. 默认值约束
                            • 5. 唯一性约束
                              • 6. 外键约束
                                • 6.1 数据一致性概念
                                • 6.2 删除外键
                                • 6.3 关于外键约束需要注意的细节
                            • 六、数据表插入数据
                              • 1. 为表中所有字段插入数据
                                • 2. 为表中指定字段插入数据
                                  • 3. 同时插入多条记录
                                  • 七、更新数据
                                    • 1. UPDATE基本语法
                                      • 2. UPDATE更新部分数据
                                        • 3. UPDATE更新全部数据
                                        • 八、删除数据
                                          • 1. DELETE基本语法
                                            • 2. DELETE删除部分数据
                                              • 3. DELETE删除全部数据
                                                • 4. TRUNCATE和DELETE的区别
                                                • 九、MySQL数据表简单查询
                                                  • 1. 简单查询概述
                                                    • 2. 查询所有字段(方法不唯一只是举例)
                                                      • 3. 查询指定字段(sid、sname)
                                                        • 4. 常数的查询
                                                          • 5. 从查询结果中过滤重复数据
                                                            • 6. 算术运算符(举例加运算符)
                                                            • 十、函数
                                                              • 1. 聚合函数
                                                                • 1.1、count()
                                                                • 1.2、max()
                                                                • 1.3、min()
                                                                • 1.4、sum()
                                                                • 1.5、avg()
                                                              • 2. 其他常用函数
                                                                • 2.1、时间函数
                                                                • 2.2、字符串函数
                                                                • 2.3、数学函数
                                                            • 十一、条件查询
                                                              • 1. 使用关系运算符查询
                                                                • 2. 使用IN关键字查询
                                                                  • 3. 使用BETWEEN AND关键字查询
                                                                    • 4. 使用空值查询
                                                                      • 5. 使用AND关键字查询
                                                                        • 6. 使用OR关键字查询
                                                                          • 7. 使用LIKE关键字查询
                                                                            • 7.1 普通字符串
                                                                            • 7.2 含有%通配的字符串
                                                                            • 7.3 含有_通配的字符串
                                                                          • 8. 使用LIMIT限制查询结果的数量
                                                                            • 9. 使用GROUP BY进行分组查询
                                                                              • 9.1 GROUP BY和聚合函数一起使用
                                                                                • 9.2 GROUP BY和聚合函数以及HAVING一起使用
                                                                                  • 10. 使用ORDER BY对查询结果排序
                                                                                  • 十二、别名设置
                                                                                    • 1. 为表取别名
                                                                                      • 2. 为字段取别名
                                                                                      • 十三、表的关联关系
                                                                                        • 1. 关联查询
                                                                                          • 2. 关于关联关系的删除数据
                                                                                          • 十四、多表连接查询
                                                                                            • 1. 交叉连接查询
                                                                                              • 2. 内连接查询
                                                                                                • 3. 外连接查询
                                                                                                  • 3.1 左(外)连接查询
                                                                                                  • 3.2 右(外)连接查询
                                                                                              • 十五、子查询
                                                                                                • 1. 带比较运算符的子查询
                                                                                                  • 2. 带EXISTS关键字的子查询
                                                                                                    • 3. 带ANY关键字的子查询
                                                                                                      • 4. 带ALL关键字的子查询
                                                                                                      • 总结
                                                                                                      相关产品与服务
                                                                                                      TDSQL MySQL 版
                                                                                                      TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
                                                                                                      领券
                                                                                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档