文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL 基础

2021-06-05 22:23

关注

MySQL 基础

MySQL 基础




CURD 是一个数据库技术中的缩写词,一般的项目开发的各种参数的基本功能都是CURD。作用是用于处理数据的基本原子操作。它代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作。

SQL 介绍

SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。


DDL(数据定义语言)

用于定义SQL模式、基本表、视图和索引的创建和删除操作。

数据库操作

数据表操作

  1. CREATE TABLE - 创建新表

    CREATE TABLE [IF NOT EXISTS] table_name(col1 type,col2 type);

    Tips: IF NOT EXISTS 判断当前数据库中是否存在该表,不存在则创建数据表;存在在则忽略建表语句,不再创建数据表。

    CREATE TABLE [IF NOT EXISTS] 表名(
      字段名1 数据类型 [约束条件] [默认值],
      字段名2 数据类型 [约束条件] [默认值],
      字段名3 数据类型 [约束条件] [默认值],
      ...
    ) [chrset="字符编码"];
    
  2. ALTER TABLE - 变更(改变)数据库表

    • 修改表名字

      ALTER TABLE old_table RENAME AS new_table;

    • 新增字段,并排在某一字段后面

      ALTER TABLE 表名 ADD [COLUMN] 字段名 数据类型 [完整性约束条件…] [FIRST | AFTER 字段名];

    • 修改字段

      • MODIFY 只能修改 -数据类型- 及其 -完整性约束条件-

        ALTER TABLE 表名 MODIFY 字段名 新数据类型 [完整性约束条件…];

      • CHANGE 能修改 -字段名-、-数据类型- 及其 -完整性约束条件-

        ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

    • 删除字段

      ALTER TABLE table_name DROP [COLUMN] column_name;

  3. DROP TABLE - 删除表

    DROP TABLE [IF EXISTS] table_name;

    Tips: IF EXISTS 判断当前数据库中是否存在该表,存在则删除数据表;不存在则忽略删除语句,不再执行删除数据表的操作。

  4. TRUNCATE TABLE - 截断表(清空表)

    TRUNCATE TABLE table_name;

常用约束

约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和缺省约束(Default Constraint)

约束操作

  1. 添加约束

    ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 具体的约束条件;

  2. 删除约束

    ALTER TABLE 表名 DROP CONSTRAINT 约束名;

  3. 关闭约束

    ALTER TABLE 表名 DISABLE CONSTRAINT 约束名 CASCADE;

    Tips: 如果没有被引用则不需 CASCADE 关键字

  4. 打开约束

    ALTER TABLE 表名 ENABLE CONSTRAINT 约束名;

    Tips: 打开一个先前关闭的被引用的主键约束, 并不能自动打开相关的外部键约束

  5. 栗子

    -- 添加主键约束(将 stuNo 作为主键)
    Alter Table stuInfo
    Add Constraint  PK_stuNO primary Key(stuNo);
    
    -- 添加唯一约束(stuID 唯一)
    Alter Table stuInfo
    Add Constraint UQ_stuID unique(stuID);
    
    -- 添加默认约束(stuAddress 的默认值为 "地址不详")
    Alter Table stuInfo
    Add Constraint DF_stuAddress default("地址不详") for stuAddress;
    
    -- 添加检查约束(对 stuAge 加以限制,15~20之间)
    Alter Table stuInfo
    Add Constraint CK_stuAge check(stuAge between 15 and 20);
    Alter Table stuInfo
    Add Constraint CK_stuSex check(stuSex="男" or stuSex="女");
    
    -- 添加外键约束(主表 stuInfo 和从表 stuMarks 建立关系,关联字段 stuNo)
    Alter Table stuMarks
    Add Constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo);
    

    Tips:约束名的命名规则推荐采用 约束类型_约束字段 的形式

索引操作

索引是一种特殊的查询表,可以被数据库搜索引擎用来加速数据的检索。简单说来,索引就是指向表中数据的指针。数据库的索引同书籍后面的索引非常相像。

  1. CREATE INDEX - 创建索引(搜索键)

    • 单列索引:基于单一的字段创建

      CREATE INDEX index_name ON table_name (column_name);

    • 唯一索引:不止用于提升查询性能,还用于保证数据完整性。(不允许向表中插入任何重复值)

      CREATE UNIQUE INDEX index_name ON table_name (column_name);

    • 聚簇索引:在表中两个或更多的列的基础上建立

      CREATE INDEX index_name ON table_name (column1, column2);

  2. DROP INDEX - 删除索引

    DROP INDEX table_name.index_name;

Tips:


DML(数据操作语言)

数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。

SELECT - 从数据库表中获取数据

SELECT column_name(s) FROM table_name WHERE condition AND|OR condition;

UPDATE - 更新数据库表中的数据

DELETE - 从数据库表中删除数据

INSERT INTO - 向数据库表中插入数据

常规插入

Tips:

插入查询结果集

MySQL 计算列(虚拟列)

  1. MySQL 5.7 引入了生成列,支持虚拟和存储两种类型的生成列;

    • 语法:

      col_name data_type [GENERATED ALWAYS] AS (expr)
        [VIRTUAL | STORED]
        [NOT NULL | NULL] 
        [UNIQUE [KEY]] 
        [[PRIMARY] KEY]
        [COMMENT "string"]
      

      Tips:

      • GENERATED ALWAYS 可以省略;
      • AS (expr) 用于生成计算列值的表达式;
      • VIRTUAL 或 STORED 关键字表示是否存储计算列的值:
        • VIRTUAL:列值不存储,虚拟列不占用存储空间,默认设置为 VIRTUAL
        • STORED:在添加或更新行时计算并存储列值; 存储列需要存储空间,并且可以创建索引;
      • 如果表达式的结果类型与字段定义中的数据类型不同,将会执行隐式的类型转换
      • 生成列支持NOT NULLUNIQUE主键CHECK以及 外键 约束,但是不支持 DEFAULT 默认值;
      • Generated column 表达式必须遵循以下规则:
        • 允许使用常量、确定性的内置函数以及运算符;
          • 确定性函数 意味着对于表中的相同数据,多次调用返回相同的结果,与当前用户无关;
          • 非确定性函数 包括 CONNECTION_ID()、CURRENT_USER()、NOW() 等;
        • 不允许使用存储函数和自定义函数;
        • 不允许使用存储过程和函数的参数;
        • 不允许使用变量(系统变量、自定义变量或者存储程序中的本地变量);
        • 不允许子查询;
        • 允许引用表中已经定义的其他生成列;允许引用任何其他非生成列,无论这些列出现的位置在前面还是后面;
        • 不允许使用 AUTO_INCREMENT 属性;
        • 不允许使用 AUTO_INCREMENT 字段作为生成列的基础列;
        • 可以在计算列上创建索引,但不能在 VIRTUAL 类型的计算列上创建聚集索引;
    • 栗子

      -- 创建表 t_test ,其中计算列 sum 的值为 (a + b)
      CREATE TABLE t_test (
        a INT NOT NULL,
        b INT NOT NULL,
        sum INT GENERATED ALWAYS AS (a + b) [VIRTUAL]
      );
      
      -- 添加计算列 area 值为 (a * b)
      ALTER TABLE t_test ADD area INT AS (a * b) STORED;
      
  2. 其他 SQL 类型

    • 其他 SQL 类型的计算列

DCL(数据控制语言)

DCL 包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。

GRANT - 授权

将指定 操作对象 的指定 操作权限 授予指定的 用户; 发出该 GRANT语句的可以是数据库管理员,也可以是该数据库对象的创建者;

  1. 查询

    • 查看用户自己权限

      SHOW GRANTS;

    • 查看其他用户权限

      SHOW GRANTS FOR "username"@"host";

    Tips: host 可以使用通配符 %;如 "user"@"%", "user"@"192.168.0.%";

  2. 授权

    • 语法

      GRANT 权限 ON 数据库对象 TO 用户 [WITH GRANT OPTION];

    • 栗子

      • 授予 super用户所有权限

        GRANT ALL [PRIVILEGES] ON . TO username;

      • 授予用户 INSERT 权限

        CREATE INSERT ON db_name.* username@"localhost" IDENTIFIED BY "newpasswd";

      • 授予用户 SELECT, UPDATE, DELETE 权限

        GRANT SELECT, UPDATE, DELETE ON db_name.* TO username

  3. 刷新

    flush privileges;

Tips:


REVOKE - 回收授权

Tips: CASCADE | RESTRICT 当检测到关联的特权时,RESTRICT(默认值) 导致REVOKE失败;CASCADE 可以回收所有这些关联的特权;(如U1授权U2, U2授权U3,此时使用级联(CASCADE)收回了U2和U3的权限,否则系统将拒绝执行该命令)

原文地址:https://www.cnblogs.com/librarookie/archive/2022/04/18/16160876.html

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯