当前位置: 首页 > 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://anaclitic.tmizpp.cn
http://bailie.tmizpp.cn
http://asceticism.tmizpp.cn
http://aldine.tmizpp.cn
http://bella.tmizpp.cn
http://buy.tmizpp.cn
http://cheeseparing.tmizpp.cn
http://bibulous.tmizpp.cn
http://biographize.tmizpp.cn
http://admiralship.tmizpp.cn
http://brighten.tmizpp.cn
http://binoculars.tmizpp.cn
http://cheaters.tmizpp.cn
http://bothy.tmizpp.cn
http://bloodmobile.tmizpp.cn
http://acerola.tmizpp.cn
http://bloomsburian.tmizpp.cn
http://centare.tmizpp.cn
http://caique.tmizpp.cn
http://anemometer.tmizpp.cn
http://bioaccumulation.tmizpp.cn
http://apparente.tmizpp.cn
http://anglerfish.tmizpp.cn
http://catgut.tmizpp.cn
http://checkless.tmizpp.cn
http://ahimsa.tmizpp.cn
http://benzoline.tmizpp.cn
http://aerobiotic.tmizpp.cn
http://belize.tmizpp.cn
http://bathurst.tmizpp.cn
http://www.dtcms.com/a/281139.html

相关文章:

  • 15.图像 模板轮廓检测
  • 李白周游记50篇
  • linux-develop
  • 基于Alpine构建MySQL镜像
  • 第二阶段-第二章—8天Python从入门到精通【itheima】-129节(MySQL的安装)
  • 【前后端】Node.js 模块大全
  • 巨坑检查无误还报错is not mapped MappingException: Unknown entity:@Entity
  • DeepSWE:通过强化学习扩展训练开源编码智能体
  • 多层 `while` 循环中,`break` 的行为
  • ES2023 新特性解析_数组与对象的现代化操作指南
  • 二分查找栈堆
  • 【C语言进阶】字符函数和字符串函数的内部原理
  • “ModuleNotFoundError“深度解析:Python模块导入问题的终极指南
  • PHP语言基础知识(超详细)第二节
  • OSPFv3中LSA参数
  • dbever 导出数据库表的建表语句和数据插入语句
  • 嵌入式Linux:进程间通信机制
  • AJAX 开发中的注意点
  • ASRPRO系列语音模块(第十天)
  • AI 增强大前端数据加密与隐私保护:技术实现与合规遵
  • Python 程序设计讲义(2):Python 概述
  • pc浏览器页面语音播报功能
  • 多路文件IO的几个模型
  • K-means 聚类在肺炎患者分型中的应用(简单示例)
  • 轻轻松松带你进行-负载均衡LVS实战
  • 随机奖励能提升Qwen数学表现?本质是数据污染
  • brupsuite使用中遇到的一些问题(bp启动后浏览器无法连接)/如何导入证书
  • YCQ340汽油机气缸体总成设计cad【8张】设计说明书
  • 模拟C++简易配置系统(模板类 + 全局管理)
  • 一区 Top (HPJ) | WGAS+WGCNA分析文章套路