MySql

本文详细介绍了MySQL数据库,包括SQL的四大分类:DDL、DML、DQL和DCL,以及各种操作如创建数据库、表,数据的插入、修改和删除。接着,讲解了MySQL的约束与事务,如主键、外键、事务的四大特性。进一步讨论了多表关系、数据库设计原则和查询技巧,如分页查询。此外,还涉及到了索引、视图、存储过程和触发器的概念及使用。最后,提到了JDBC开发和数据库连接池的重要性。
摘要由CSDN通过智能技术生成

MySQL

一、SQL

1.1 SQL的分类

  • DDL(Data Definition Language)

    用于定义数据库对象(数据库、表、列等)

  • DML(Data manipulation Language)

    用于对数据库中表的记录进行更新

  • DQL(Data Query Language)

    用于查询数据库中表的记录

  • DCL(Data Control Language)

    用于定义数据库的访问权限和安全级别 以及 创建用户

对数据库操作的分类:CRUD

  • C create 创建
  • R retrieve 查询
  • U update 修改
  • D delete

1.2 DDL

数据库

  • 创建数据库

    CREATE DATABASE db1
    CHARACTER SET utf8 -- 指定字符集
    ;
    
  • 切换数据库

    USE db1;
    
  • 查询当前正在使用的数据库

    SELECT DATABASE();
    
  • 查询MySQL中有那些数据库

    SHOW databases;
    
    系统数据库 说明
    information_schema 信息数据库,记录其他数据库的信息
    mysql mysql的核心数据库,保存了用户和权限
    performance_schema 保存性能相关数据,监控mysql的性能
    sys 记录了DBA所需要的信息,更方便的让DBA快速了解数据库的运行情况
  • 修改数据库字符集

    ALTER DATABASE db1 CHARACTER SET utf8;
    
  • 查询当前数据库的基本信息

    SHOW CREATE DATABASE db1;
    
  • 删除数据库

    DROP DATABASE db1;
    

常见的数据类型

  • int

  • double

  • varchar

  • date (只有年月日)

  • datetime

  • char

    varchar 和 char 的区别

    • varchar 是可变长度的
    • char 是固定长度的,不管字符串多长,都使用固定的长度存储
    • 保存固定长度的数据,用char类型,如,银行密码

数据表

  • 创建数据表

    CREATE TABLE table_name (
    	columns_name data_type  ,
    	...
    )
    
  • 复制表结构

    CREATE TABLE new_table_name LIKE old_table_name;
    
  • 查看表结构

    DESC table_name;
    
  • 查看当前数据库中所有的数据表名

    SHOW TABLES;
    
  • 查看创建表的SQL

    SHOW CREATE TABLE table_name;
    
  • 表的删除

    DROP TABLE table_name;	-- 从数据库中删除表
    DROP TABLE IF EXISTS table_name; -- 如果存在才删除
    
  • 表的修改

    • 表名
    • 表的字符集
    • 表中的列(数据类型,名称,长度)
    • 添加列
    • 删除列
    RENAME TABLE old_table_name TO new_table_name;
    
    ALTER TABLE table_name CHARACTER SET character_set_name;
    
    ALTER TABLE table_name ADD column_name data_type(length);
    
    -- 修改表中列的类型或者长度
    ALTER TABLE table_name MODIFY column_name data_type;
    
    -- 修改列的名称
    ALTER TABLE table_name CHANGE column_name new_clumn_name new_date_tyep(length);
    
    -- 删除列
    ALTER TABLE table_name DROP column_name;
    

1.3 DML

  • 插入数据

    INSERT INTO table_name (column_name, column_name, ...) VALUES (data, data, ...);
    

    插入全部字段的数据时,可以不写字段名列表

    插入 varchar 或者 char 类型的数据时,要用单引号(或者双引号)

    插入空值,可以忽略不写,或者写null

  • 修改数据

    UPDATE table_name SET column_name = value;
    
    -- 根据条件筛选,修改数据
    UPDATE table_name SET column_name = value WHERE which_column_name = what_value;
    
    -- 根据条件筛选,修改多列数据
    UPDATE table_name SET column_name = value, column2_name = value2 WHERE which_column_name = what_value;
    
  • 删除数据

    -- 删除表中所有数据 (逐条删除,效率低)
    DELETE FROM table;
    
    -- 删除整张表,再创建一个同样表结构的同名表 (效率高)
    TRUNCATE TABLE table_name;
    
    -- 删除特定的数据
    DELETE FROM table WHERE condition;
    

1.4 DQL

查询操作不会对数据表中的数据进行修改

简单查询

  • 查询表中所有数据

    SELECT * FROM table_name;
    
  • 查询所有数据,只显示特定的列

    SELECT column1_name, column2_name FROM table_name;
    
  • 查询特定列的数据,将输出的表头内的字段名修改成自定义字段名

    SELECT column_name AS new_name1, column2_name AS new_name2
    FROM table_name;
    

    AS 可以省略

  • 查询结果去重

    SELECT column_name DISTINCT
    FROM table_name;
    
  • 查询结果中int类型的字段,可以直接加减运算

    SELECT column_name + 1000 AS column_name
    FROM table_name;
    

条件查询

实现原理:先取出数据,满足条件的返回

运算符 说明
> < >= <= <> != 大小比较
BETWEEN … AND … 区间
IN 集合包含
LIKE ‘%keyword%’ 模糊查询
IS NULL 是否为 NULL
AND && 多个条件同时成立
OR || 多个条件 任意成立
NOT 取反

模糊查询中:

_ 表示一个占位符

% 表示任意个占位符

IS NULL 取反逻辑是 IS NOT NULL

排序查询

  • 单列排序

    SELECT * 
    FROM table_name
    ORDER BY column_name ASC/DESC;
    
  • 组合排序

    SELECT *
    FROM table_name
    ORDER BY column_name ASC/DESC, column2_name ASC/DESC;
    

    二次排序

聚合函数

将一列数据作为整体,进行纵向的计算

常用的聚合函数 说明
count() 统计记录数量
sum() 求和
max()
min()
avg() 平均值
  • 注意 count() 进行统计时,会忽略空值行

  • 语法格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值