MySQL数据库基础

一、认识数据库

MySQL是一种开源的关系型数据库管理系统(RDBMS),广泛用于开发Web应用程序。 

  1. 数据库管理系统(DBMS):数据库管理系统是用于管理数据库的软件。它提供了创建、修改、查询和删除数据库中数据的功能,并处理数据的存储、检索和安全性等方面的细节。常见的DBMS包括MySQL、Oracle、SQL Server等。

  2. 关系型数据库(RDBMS):关系型数据库是一种基于关系模型的数据库。它使用表(也称为关系)来组织数据,表由行和列组成。关系型数据库使用结构化查询语言(SQL)进行数据操作和查询。

  3. 表(Table):表是数据库中的基本组成单位,用于存储具有相同结构的数据。表由列和行组成,列定义了数据的属性,行则包含了实际的数据记录。

  4. 列(Column):列是表中的一个字段,定义了存储在表中的数据的类型和属性。每列具有一个列名和一个数据类型,例如整数、字符串、日期等。

  5. 行(Row):行是表中的一个数据记录,包含了一组相关的数据值。每行中的数据值对应于该行的列定义,也称为记录或元组。

  6. 主键(Primary Key):主键是表中的一列或一组列,用于唯一标识表中的每个行。主键的值必须是唯一的且不为空,常用于快速查找和关联表中的数据。

  7. 外键(Foreign Key):外键是表中的一列,用于建立表与表之间的关联关系。外键引用了其他表的主键,用于维护数据的一致性和完整性。

  8. 索引(Index):索引是加速数据库查询的一种数据结构。它类似于书中的目录,提供了快速查找数据的方法。通过在一列或多列上创建索引,可以减少数据扫描的次数,提高查询性能。

  9. 查询语言(SQL):结构化查询语言(SQL)是一种用于管理和操作数据库的语言。SQL提供了创建、修改、查询和删除数据库、表和数据的语法和命令。

二、数据定义

  1. CREATE DATABASE语句:用于创建数据库。

    示例:CREATE DATABASE database_name;

  2. USE语句:用于选择要使用的数据库。

    示例:USE database_name;

  3. CREATE TABLE语句:用于创建表。

    示例:CREATE TABLE table_name ( column1 datatype, column2 datatype, ... );

  4. ALTER TABLE语句:用于修改表的结构。

    示例:ALTER TABLE table_name ADD column_name datatype, MODIFY column_name datatype, DROP column_name;

  5. DROP TABLE语句:用于删除表。

    示例:DROP TABLE table_name;

  6. PRIMARY KEY约束:用于定义主键。

    示例:CREATE TABLE table_name ( column1 datatype, column2 datatype, ... PRIMARY KEY (column1) );

  7. FOREIGN KEY约束:用于定义外键。

    示例:CREATE TABLE table_name1 ( column1 datatype, column2 datatype, ... FOREIGN KEY (column1) REFERENCES table_name2(column2) );

  8. INDEX语句:用于创建索引。

    示例:CREATE INDEX index_name ON table_name (column1, column2);

  9. UNIQUE约束:用于创建唯一约束。

    示例:CREATE TABLE table_name ( column1 datatype, column2 datatype, ... UNIQUE (column1) );

  10. DEFAULT约束:用于指定列的默认值。

    示例:CREATE TABLE table_name ( column1 datatype DEFAULT default_value, column2 datatype, ... );

这些是常用的MySQL数据定义语句,用于创建和修改数据库、表以及相关约束和索引。根据具体需求,可以组合和调整这些语句来定义和管理数据库结构

 三、数据操作

  1. INSERT INTO语句:用于向表中插入新的数据。

    示例:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

  2. UPDATE语句:用于更新表中的数据。

    MySQL的UPDATE语句用于修改数据库表中的数据。它允许你更新表中的一个或多个列的值,可以根据指定的条件来选择要更新的行。下面是UPDATE语句的详细描述:

  3. DELETE FROM语句:用于从表中删除数据。

    示例:DELETE FROM table_name WHERE condition;

这些是常用的MySQL数据操作语句,用于插入、更新、删除和查询数据库中的数据。根据具体需求,可以组合和调整这些语句来实现更复杂的数据操作和查询。

四、数据查询

单表查询:

        在MySQL中,单表查询是指只涉及一个表的查询操作。通过单表查询,我们可以从表中检索数据、进行条件筛选、排序和限制结果行数等操作。下面逐步介绍单表查询的常用语句和用法。

         SELECT语句:SELECT语句是进行查询的基础。它用于从表中检索数据,并指定要返回的列。

示例:SELECT column1, column2, ... FROM table_name;

例如,如果有一个名为"customers"的表,其中包含列"customer_id"、"first_name"、"last_name"等,你可以使用以下查询语句来检索所有顾客的"first_name"和"last_name"列:

SELECT first_name, last_name FROM customers;

        WHERE子句:通过WHERE子句,我们可以添加条件来筛选满足特定条件的行。

示例:SELECT column1, column2, ... FROM table_name WHERE condition;

例如,如果你只想检索姓为"Smith"的顾客的信息,你可以使用以下查询语句:

SELECT * FROM customers WHERE last_name = 'Smith';

这将返回所有姓为"Smith"的顾客的所有列。

多表查询:

在MySQL中,多表查询是指涉及多个表的查询操作。通过多表查询,我们可以在不同的表之间建立关联关系,并根据关联条件检索、筛选和组合数据。下面逐步介绍多表查询的常用语句和用法。

  1. JOIN操作:JOIN操作用于将多个表连接起来,并根据关联条件检索相关数据。

    • 内连接(INNER JOIN):内连接返回两个表中匹配行的交集。

      示例:SELECT column1, column2, ... FROM table1 INNER JOIN table2 ON table1.column = table2.column;

      例如,如果你有两个表"customers"和"orders",你可以使用以下查询语句检索顾客的订单信息:

      SELECT customers.first_name, customers.last_name, orders.order_date FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id;

    • 左连接(LEFT JOIN):左连接返回左表中的所有行和右表中匹配行的交集。

      示例:SELECT column1, column2, ... FROM table1 LEFT JOIN table2 ON table1.column = table2.column;

      例如,如果你想检索所有顾客以及他们的订单信息(如果有的话),你可以使用以下查询语句:

      SELECT customers.first_name, customers.last_name, orders.order_date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;

    • 右连接(RIGHT JOIN):右连接返回右表中的所有行和左表中匹配行的交集。

      示例:SELECT column1, column2, ... FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;

      例如,如果你想检索所有订单以及对应的顾客信息(如果有的话),你可以使用以下查询语句:

      SELECT customers.first_name, customers.last_name, orders.order_date FROM customers RIGHT JOIN orders ON customers.customer_id = orders.customer_id;

  2. WHERE子句和关联条件:在多表查询中,我们可以使用WHERE子句和关联条件来筛选和限制结果。

    示例:SELECT column1, column2, ... FROM table1 JOIN table2 ON table1.column = table2.column WHERE condition;

    例如,如果你想检索姓为"Smith"的顾客以及他们的订单信息,你可以使用以下查询语句:

    SELECT customers.first_name, customers.last_name, orders.order_date FROM customers JOIN orders ON customers.customer_id = orders.customer_id WHERE customers.last_name = 'Smith';

  3. 别名(Alias):在多表查询中,我们可以为表和列使用别名来简化查询语句和提高可读性。

    示例:SELECT c.first_name, c.last_name, o.order_date FROM customers AS c JOIN orders AS o ON c.customer_id = o.customer_id WHERE c.last_name = 'Smith';

    在这个示例中,我们为"customers"表和"orders"表分别指定了别名"c"和"o",并在查询中使用这些别名来引用表和列。

这些是MySQL多表查询的基本语句和用法。通过JOIN操作和关联条件,你可以将多个表连接起来,并根据需要检索和组合数据。同时,使用WHERE子句、别名等技术,可以进一步优化查询语句和提高查询效率。通过实践和不断练习,你将逐步掌握多表查询的技巧,并能够处理更复杂的数据查询需求。

分类汇总与排序:

(GROUP BY):

  • 作用:将查询结果按照指定的列进行分组,并对每个组应用聚合函数进行汇总计算。

  • 语法:SELECT 列1, 列2, ..., 聚合函数(列) FROM 表名 GROUP BY 列1, 列2, ...;

  • 示例:假设有一个名为"orders"的表,其中包含列"order_id"、"customer_id"、"order_date"和"total_amount",你可以使用以下查询语句来按顾客ID对订单总金额进行汇总:

        SELECT customer_id, SUM(total_amount) AS total_order_amount
        FROM orders
        GROUP BY customer_id;

注意事项:

  • SELECT子句中的列必须是GROUP BY子句中的列或聚合函数。
  • 可以使用聚合函数如SUM、COUNT、AVG等对分组后的列进行计算。
  • 也可以使用HAVING子句对分组后的结果进行筛选。

(ORDER BY):

  • 作用:对查询结果按照指定的列进行排序,可以按升序(ASC)或降序(DESC)进行排序。

  • 语法:SELECT 列1, 列2, ... FROM 表名 ORDER BY 列1 [ASC|DESC], 列2 [ASC|DESC], ...;

  • 示例:假设有一个名为"products"的表,其中包含列"product_id"、"product_name"和"price",你可以使用以下查询语句按价格降序对产品进行排序:

         SELECT product_id, product_name, price
        FROM products
        ORDER BY price DESC;

注意事项:

  • ORDER BY子句中的列可以是查询结果的任何列,也可以是计算表达式。
  • 可以指定多个列,用逗号分隔,表示按多个列进行排序,优先按第一个列排序,如果相同再按第二个列排序。

HAVING子句:

  • 作用:HAVING字句用于在GROUP BY子句之后对分组后的结果进行筛选,类似于WHERE字句对原始数据进行筛选。

  • 语法:SELECT 列1, 列2, ... FROM 表名 GROUP BY 列1, 列2, ... HAVING 条件;

  • 示例:假设有一个名为"orders"的表,其中包含列"customer_id"和"total_amount",你可以使用以下查询语句找出订单总金额大于1000的顾客:

        SELECT customer_id, SUM(total_amount) AS total_order_amount
        FROM orders
        GROUP BY customer_id
        HAVING total_order_amount > 1000;

注意事项:

  • HAVING字句只能在GROUP BY子句之后使用。
  • 可以使用聚合函数如SUM、COUNT、AVG等进行条件筛选。
  • HAVING字句中可以使用多个条件,可以使用逻辑运算符如AND、OR来组合条件。

LIMIT字句:

  • 作用:LIMIT字句用于限制查询结果返回的行数。

  • 语法:SELECT 列1, 列2, ... FROM 表名 LIMIT 行数;

  • 示例:假设有一个名为"products"的表,你可以使用以下查询语句获取前10个产品:

        SELECT *
        FROM products
        LIMIT 10;
 

注意事项:

  • LIMIT字句可以只指定一个数字,表示返回结果的前几行。
  • 也可以使用两个数字,表示从第一个数字指定的行开始,返回指定数量的行。

通过使用HAVING字句和LIMIT字句,你可以根据条件对查询结果进行进一步筛选和限制。HAVING字句适用于对分组后的结果进行条件筛选,而LIMIT字句则用于限制返回的行数。这两个字句可以在查询语句中灵活使用,以满足特定的查询需求。 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值