数据库学习(数据库初学)

数据库学习(数据库初学)数据库 1 数据 data 描述事物的符号记录 包括图像音频等多种形式 数据的含义也就是数据的语义就是所谓的信息 2 数据库 DataBase 长期储存在计算机内 有组织的 可共享的大量数据的集合 特征 数据库中的数据按一定数据模型组织 描述和储存 具有较小的冗余度 较高的数据独立性 易拓展性 并可为各种用户共享



数据库:

1.数据(data):描述事物的符号记录。包括图像音频等多种形式。数据的含义也就是数据的语义就是所谓的信息。

2.数据库(DataBase):长期储存在计算机内,有组织的,可共享的大量数据的集合。

特征:数据库中的数据按一定数据模型组织,描述和储存,具有较小的冗余度,较高的数据独立性,易拓展性,并可为各种用户共享。

3,数据库管理系统(DataBase Management System,DBMS)位于用户与操作系统之间的一层数据管理软件。数据库管理系统和计算机操作系统一样属于计算机基础软件。

数据库管理系统功能:

(1)数据定义:用户可以对数据库中的数据对象的结构与组成进行定义

(2)数据组织,储存和管理:分类组织,储存和管理各种数据,基本目标是:提高存储空间利用率和方便存储

(3)数据操纵:实现对数据库的·1基本操作。

(4)数据库的事务管理和运行管理:数据库在建立,运用,维护时有数据库管理系统统一管理和控制,保证事物的正确运行和保证数据的安全性,完整性,多用户对数据的并发使用和故障修复

(5)数据库的建立和维护:包括初始数据的输入,转换功能,数据库的转储,恢复,数据库的冲组织功能和性能监视和分析

4.数据库系统(DataBase System,DBS)(简称数据库):由数据库,数据库管理系统(及其应用开发工具),应用程序和数据库管理员组成的存储,管理,处理和数据维护的系统。

二.数据库的基本特点:

(1)数据结构化:实现整体数据的结构化(这也是数据库系统与文件系统的本质区别)。所谓”整体“结构化:数据库中的数据面向整个组织或企业;不仅数据内部结构化,而且整体式结构化的,数据之间具有联系。不仅要考虑某个应用的数据结构,还要考虑整个组织的数据结构

(2)数据的共享性高,冗余度低且容易扩充

(3)数据独立性高(数据独立性包括物理独立性和逻辑独立性)数据的独立性是由DBMS提供的二级映像功能保证的

1.物理独立性:用户的应用程序与数据库中的数据得物理储存相互独立

2.逻辑独立性:用户的应用程序与数据库的逻辑结构相互独立

(4)数据库(DB)由数据库管理系统(DBMS)统一管理和控制

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。数据库管理系统(Database Management System,简称DBMS)是用于创建和管理数据库的软件系统。以下是数据库的一些基本概念和知识点:

  1. 数据模型

    • 层次模型:数据结构呈树状结构,每个节点最多只有一个父节点。

    • 网状模型:数据结构呈网状,节点可以有多个父节点和子节点。

    • 关系模型:数据结构以表格形式组织,每张表由行和列组成,表之间通过关系进行关联。

  2. 关系数据库

    • 表(Table):关系数据库中存储数据的基本结构,由行(记录)和列(字段)组成。

    • 行(Row):表中的单个记录。

    • 列(Column):表中的字段,每一列都有数据类型。

    • 主键(Primary Key):表中唯一标识每条记录的字段或字段组合。

    • 外键(Foreign Key):用于在两个表之间建立联系的字段,指向另一个表的主键。

  3. SQL(Structured Query Language)

    • 数据定义语言(DDL):用于定义和管理数据库结构的语言,如CREATE、ALTER、DROP等。

    • 数据操纵语言(DML):用于查询和修改数据库中数据的语言,如SELECT、INSERT、UPDATE、DELETE等。

    • 数据控制语言(DCL):用于定义数据库的安全策略和访问权限的语言,如GRANT、REVOKE等。

    • 事务控制语言(TCL):用于管理数据库事务的语言,如COMMIT、ROLLBACK等。

  4. 事务(Transaction)

    • 事务是一组原子性的数据库操作,要么全部成功,要么全部失败。

    • 事务具有ACID属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

  5. 数据库完整性

    • 实体完整性:确保每个表都有一个主键。

    • 参照完整性:确保外键与另一个表的主键相关联。

    • 域完整性:确保列中的数据满足特定的约束条件。

  6. 数据库规范化

    • 通过分解表来减少数据冗余和依赖,提高数据完整性的过程。

    • 规范化有多个级别,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。

  7. 数据库索引

    • 用于提高数据库查询性能的数据结构,如B树索引、哈希索引等。

  8. 数据库备份与恢复

    • 定期备份数据库,以便在数据丢失或损坏时能够恢复。

  9. 并发控制

    • 管理多个用户同时访问数据库时可能出现的问题,如死锁、脏读、不可重复读和幻读。

  10. 数据库设计

    • 包括需求分析、概念性设计、逻辑设计和物理设计等步骤。

数据库技术是信息技术领域的一个重要分支,它涉及到数据存储、检索、分析和保护等多个方面。随着大数据和云计算技术的发展,数据库技术也在不断地演进和扩展。

sql基础

mysql> use RUNOOB; Database changed

mysql> set names utf8; Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM Websites; +----+--------------+---------------------------+-------+---------+

idnameurlalexacountry

+----+--------------+---------------------------+-------+---------+

1Googlehttps://www.google.cm/1USA
2淘宝淘宝13CN
3菜鸟教程菜鸟教程 - 学的不仅是技术,更是梦想!4689CN
4微博Sina Visitor System20CN
5Facebookhttps://www.facebook.com/3USA

+----+--------------+---------------------------+-------+---------+ 5 rows in set (0.01 sec)

sql语句:

SELECT * FROM Websites;

SQL命令:

  • SELECT - 从数据库中提取数据

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

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

  • INSERT INTO - 向数据库中插入新数据

  • CREATE DATABASE - 创建新数据库

  • ALTER DATABASE - 修改数据库

  • CREATE TABLE - 创建新表

  • ALTER TABLE - 变更(改变)数据库表

  • DROP TABLE - 删除表

  • CREATE INDEX - 创建索引(搜索键)

  • DROP INDEX - 删除索引

    SQL语句和语法:

  • : 要查询的列。

  • : 要查询的表。

  • : 查询条件(可选)。

  • : 排序方式, 表示升序, 表示降序(可选)。

  • : 要插入数据的表。

  • : 要插入数据的列。

  • : 对应列的值

  • : 要更新数据的表。

  • : 要更新的列及其新值。

  • : 更新条件。

  • : 要删除数据的表。

  • : 删除条件。

  • : 要创建的表名。

  • : 表的列。

  • : 列的数据类型(如 、 等)。

  • : 列的约束(如 、 等)。

  • : 要修改的表。

  • : 要添加的列。

  • : 列的数据类型。

  • : 要删除的列。

  • : 要删除的表。

  • : 索引的名称。

  • : 要索引的列。

  • : 要删除的索引名称。

  • : 索引所在的表。

  • : 筛选条件。

  • : 用于排序的列。

  • : 升序(默认)。

  • : 降序。

  • : 聚合函数(如 COUNT、SUM、AVG 等)。

  • : 筛选条件。

  • : 要查询的列。

MySQL注入:

防范 SQL 注入:

  • 使用参数化查询或预编译语句: 使用参数化查询(Prepared Statements)可以有效防止 SQL 注入,因为它们在执行查询之前将输入数据与查询语句分离。

  • 输入验证和转义: 对用户输入进行适当的验证,并使用合适的转义函数(如)来处理输入,以防止恶意注入。

  • 最小权限原则: 给予数据库用户最小的权限,确保它们只能执行必要的操作,以降低潜在的损害。

  • 使用ORM框架: 使用对象关系映射(ORM)框架(如Hibernate、Sequelize)可以帮助抽象 SQL 查询,从而降低 SQL 注入的风险。

  • 禁用错误消息显示: 在生产环境中,禁用显示详细的错误消息,以防止攻击者获取有关数据库结构的敏感信息。

    IF (preg_match("/^w{8,20}$/", $_GET['username'], $matches)){   $result = mysqli_query($conn, "SELECT * FROM users                         WHERE username=$matches[0]"); } ELSE {   echo "username 输入异常"; }
    

// 设定$name 中插入了我们不需要的SQL语句 $name = "Qadir'; DELETE FROM users;"; mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");

IF (get_magic_quotes_gpc())  {
  $name = stripslashes($name);
}
$name = mysqli_real_escape_string($conn, $name);
 mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");

like语句中的注入:

like 查询时,如果用户输入的值有 _%,则会出现这种情况:用户本来只是想查询 abcd_,查询结果中却有" abcd_"、"abcde"、"abcdf" 等等;用户要查询 "30%"(注:百分之三十)时也会出现问题。

$sub = addcslashes(mysqli_real_escape_string($conn, "%something_"), "%_");
// $sub == %something_
 mysqli_query($conn, "SELECT * FROM messages WHERE subject LIKE '{$sub}%'");

编程小号
上一篇 2025-02-07 10:06
下一篇 2025-02-06 13:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/20716.html