当前位置: 首页 > news >正文

SQL学习记录01

什么是SQL?
Structured Query Language (结构化查询语言),与关系型数据库进行通信的标准语言。

什么是数据库?

“按照数据结构来组织、存储、和管理数据的仓库。”

一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合

SQL的种类有什么?

DDL:  Data Definition Language 数据定义语言,用来定义数据库对象(数据库,表, 字段)

DML:Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改

DQL: Data Query Language 数据查询语言,用来查询数据库中表的记录

DCL: Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的 访问权限

TCL: Transaction Control Language 事务控制语言,是一个或一组SQL语句组成的一个执行单元,这个执行单元要么全部执行,要么全部不执行。

DQL相关:

查询语句语法结构: SELECT 字段列表 FROM 表名列表 WHERE 条件列表GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段.

DQL 查询语句分类: 基本查询(不带任何条件)

    条件查询(WHERE)

    聚合函数(count、max、min、avg、sum)

分组查询(group by)

排序查询(order by)

分页查询(limit)

DML相关:

添加表数据语法: insert into 表名(列名1,..列名n) values(值1,...值n);

注意:

  • 列名和值要一一对应。
  • 如果表名后,不定义列名,则默认给所有列添加值,如果第一列是主键列,需要在添加值时把第一列的值设置为null。
  • 除了数值类型,其他类型的值需要使用引号引起来。

删除表数据语法: delete from 表名 where 条件

注意:

  • 如果不加条件,则删除表中所有记录。
  • 如果要删除所有记录
  • delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
  • truncate table 表名; -- 推荐使用,效率更高。先删除表,然后再创建一张一样的表。

修改表数据语法:

update 表名 set 列名1 = 值1, 列名2 = 值2,... where 条件;

注意

  • 如果不加任何条件,则会将表中所有记录全部修改

   

DDL 相关:

操作隐形提交,不能rollback。

数据库操作:查询所有数据库:show databases; 创建数据库:create database 数据库名; 删除数据库:drop database 数据库名; 使用数据库:use 数据库名;

表操作:查询当前数据库所有表:show tables;

查看指定表结构:desc 表名; 查询指定表的建表语句:show create table 表名;

创建表结构:create table 表名( 字段1 字段1类型, 字段2 字段2类型 ... );

DCL相关:

授权:GRANT

查询用户: select * from mysql.user;

创建用户: CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

修改用户密码: ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;

删除用户: DROP USER '用户名'@'主机名' ;

注意事项: 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。

MySQL中的数据类型主要分类:数值类型、字符串类型、日期时间类型。

数值类型:有符号:SIGNED、无符号:UNSIGNED。默认是有符号。

浮点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度。

常用类型

int:整型

double:浮点型,例如 double(5,2)表示最多 5 位,其中必须有 2 位小数,即最大值为 999.99;

decimal:泛型型,在表单线方面使用该类型,因为不会出现精度缺失问题;

char:固定长度字符串类型;(当输入的字符不够长度时会补空格)

varchar:可变长度字符串类型;

text:字符串类型;

blob:字节类型;

date:日期类型,格式为:yyyy-MM-dd;

time:时间类型,格式为:hh:mm:ss

timestamp:时间戳类型;

char&varchar:

类型相似,但保存与检索方式不同。

最大长度、是否保留空格等方面也不同。

Binary&Varbinary

固定长度 (Binary) 的或可变长度 (Varbinary) 的 Binary 数据类型。

Binary  ( n )

固定长度的 n 个字节二进制数据。N 必须从 1 到 8,000。存储空间大小为 n+4 字节。

Varbinary ( n )

n 个字节变长二进制数据。n 必须从 1 到 8,000。存储空间大小为实际输入数据长度 +4 个字节,而不是 n 个字节。输入的数据长度可能为 0 字节。在 SQL-92 中 varbinary 的同义词为 binary varying。

如果在数据定义或变量声明语句中没有指定 n,默认长度为 1。如果没有用 CAST 函数指定 n,默认长度为 30。

当列数据项大小一致时应使用 binary。

当列数据项大小不一致时应使用 varbinary。

数据类型decimal(p,s)

需要分别指定小数的最大位数(p)和小数位的数量(s):

p (precision) :指定小数的最大位数,小数点的左侧和右侧的数字的总数量不能超过p,p的取值范围是从1到38,默认值为18。

s (scale):指定在小数点右侧的小数位数,p-s是小数点左边的最大位数。s必须是从0到p的值,只有在指定了精度的情况下才能指定s,s的默认值是0,

因此,0 <= s <= p。

SQL的管理数据对象有哪些?

  1. 表(Table):
    • 定义: 数据库中最基本、最重要的数据对象。
    • 作用: 以行(记录)和列(字段)的结构化格式存储实际数据。每一行代表一个实体(如一个客户、一个订单),每一列代表该实体的一个属性(如客户姓名、订单日期)。
    • 管理操作: CREATE TABLEALTER TABLEDROP TABLE,

TRUNCATE TABLEINSERT INTOUPDATEDELETESELECT

     2.  视图 (View):

  • 定义: 基于一个或多个表(或其他视图)的查询结果集生成的虚拟表
  • 作用:

简化复杂查询(将复杂的 JOIN 或计算封装在视图中)。

提供数据抽象和安全性(只暴露视图定义的列和行,隐藏底层表结构和敏感数据)。逻辑上组织数据。

  • 关键点: 视图本身不存储数据,数据仍然存储在基表中。对视图的查询或更新操作最终会作用在基表上(可更新视图有特定规则)。
  • 管理操作: CREATE VIEWALTER VIEWDROP VIEWSELECT (查询视图)。

     3. 索引 (Index):

  • 定义: 一种特殊的数据库对象,建立在表的一个或多个列上,用于加速数据检索速度
  • 作用: 类似于书籍的目录,允许数据库引擎快速找到特定值,而无需扫描整个表。显著提高 SELECT(尤其是带 WHEREORDER BYJOIN)的速度。
  • 代价: 索引需要额外的存储空间,并且会降低 INSERTUPDATEDELETE 操作的速度(因为索引也需要维护)。
  • 常见类型: B-Tree(最常用)、Hash、Bitmap、全文索引等。
  • 管理操作: CREATE INDEXDROP INDEXALTER INDEX (某些DBMS), REBUILD INDEX/REORGANIZE INDEX (维护)。

      4. 约束 (Constraints):

  • 定义: 应用于表列上的规则,用于强制实施数据的完整性准确性
  • 作用: 确保表中的数据满足特定的业务规则和关系。
  • 主要类型:
  • PRIMARY KEY: 唯一标识表中的每一行(不允许 NULL 和重复值)。
  • FOREIGN KEY: 确保一个表(子表/引用表)中的列值必须存在于另一个表(父表/被引用表)的主键或唯一键中,维护表间引用完整性。
  • UNIQUE: 确保列(或列组合)中的所有值都是唯一的(允许 NULL,但通常只允许一个 NULL)。
  • NOT NULL: 确保列不能存储 NULL 值。
  • CHECK: 确保列中的值满足指定的条件

(如 Age > 0Status IN ('A','I'))。

  • DEFAULT: 当未指定值时,为列提供默认值。

  • 管理操作: 通常在创建或修改表时定义 (CREATE TABLEALTER TABLE ... ADD CONSTRAINT),也可以单独添加或删除 (ALTER TABLE ... DROP CONSTRAINT)

      5. 序列 (Sequence) / 自增列 (Auto-increment / Identity Column):

       定义:

  • 序列: 一个独立的数据对象(在 Oracle, PostgreSQL 等中常见),用于生成唯一的、通常按顺序递增的数字序列。
  • 自增列/Identity列: 表列的一个属性(在 MySQL AUTO_INCREMENT, SQL Server IDENTITY, PostgreSQL SERIAL 等),在插入新行时自动生成唯一的递增值。
  • 作用: 为主键列或其他需要唯一标识符的列自动生成唯一值。
  • 管理操作:
  • 序列: CREATE SEQUENCEALTER SEQUENCEDROP SEQUENCENEXTVAL (获取下一个值)。
  • 自增列: 在 CREATE TABLE / ALTER TABLE 中定义 (AUTO_INCREMENTIDENTITY 等)。

        6. 同义词 (Synonym):

  • 定义: 为现有数据库对象(如表、视图、序列、存储过程、函数,甚至是另一个同义词)提供的别名
  • 作用:
  • 简化对象引用(使用短名称代替冗长的 schema.object 名称)。
  • 提供抽象层(如果底层对象位置或名称改变,只需修改同义词定义,应用程序代码无需改动)。
  • 方便访问不同用户模式下的对象。
  • 管理操作: CREATE [PUBLIC] SYNONYMDROP SYNONYM

  1. 模式 (Schema):
  • 定义: 数据库对象的命名空间或容器。它本身不存储数据,但包含表、视图、索引、过程等对象的集合。
  • 作用:
    • 逻辑上组织和管理数据库对象(如按功能模块划分)。
    • 避免命名冲突(不同模式下的对象可以有相同名称)。
    • 权限管理的基础单元(可以对整个模式授权)。
  • 管理操作: CREATE SCHEMAALTER SCHEMADROP SCHEMA (具体语法和功能因 DBMS 差异较大)。

http://www.xdnf.cn/news/1130149.html

相关文章:

  • 【PTA数据结构 | C语言版】根据层序序列重构二叉树
  • day053-初识docker与基础命令
  • 【人工智能99问】神经网络的工作原理是什么?(4/99)
  • 深入掌握Python正则表达式:re库全面指南与实战应用
  • 如何卸载SQLServer
  • MybatisPlus由浅入深
  • 小型客厅如何装修设计?
  • 读取ubuntu的磁盘分区表与超级块
  • Python初学者笔记第十四期 -- (自定义模块与包)
  • 【删库跑路】一次删除pip的所有第三方库
  • 【PTA数据结构 | C语言版】根据前序序列重构二叉树
  • 【Linux手册】重定向是如何实现的?Linux下为什么一切皆文件?
  • 20250715给荣品RD-RK3588开发板刷Android14时打开USB鼠标
  • Dify的默认端口怎么修改
  • Java 集合 示例
  • 应用部署作业-02-流程
  • Excel制作玫瑰图
  • 20250715_Sneak_neuro 靶机复盘
  • 使用JS编写用户信息采集表单
  • 基于conda包的环境创建、激活、管理与删除
  • C++-linux系统编程 8.进程(二)exec函数族详解
  • 3.2数据库-关系代数-函数依赖-范式
  • IDEA中删除多余的jdk选项 【IDEA2024版】
  • Linux-【单体架构/分布式架构】
  • 李宏毅《生成式人工智能导论》 | 第9讲 AI Agent
  • AI问答-Token:在人工智能领域,Token 是模型处理文本的核心单元 / 最小可处理片段
  • cursor使用mcp连接mysql数据库,url方式
  • 基于Python的图像文字识别系统
  • Transformer是什么 - 李沐论文《Attention Is All You Need》精读
  • 数据怎么分层?从ODS、DW、ADS三大层一一拆解!