数据库:
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)是用于创建和管理数据库的软件系统。以下是数据库的一些基本概念和知识点:
-
数据模型:
-
层次模型:数据结构呈树状结构,每个节点最多只有一个父节点。
-
网状模型:数据结构呈网状,节点可以有多个父节点和子节点。
-
关系模型:数据结构以表格形式组织,每张表由行和列组成,表之间通过关系进行关联。
-
-
关系数据库:
-
表(Table):关系数据库中存储数据的基本结构,由行(记录)和列(字段)组成。
-
行(Row):表中的单个记录。
-
列(Column):表中的字段,每一列都有数据类型。
-
主键(Primary Key):表中唯一标识每条记录的字段或字段组合。
-
外键(Foreign Key):用于在两个表之间建立联系的字段,指向另一个表的主键。
-
-
SQL(Structured Query Language):
-
数据定义语言(DDL):用于定义和管理数据库结构的语言,如CREATE、ALTER、DROP等。
-
数据操纵语言(DML):用于查询和修改数据库中数据的语言,如SELECT、INSERT、UPDATE、DELETE等。
-
数据控制语言(DCL):用于定义数据库的安全策略和访问权限的语言,如GRANT、REVOKE等。
-
事务控制语言(TCL):用于管理数据库事务的语言,如COMMIT、ROLLBACK等。
-
-
事务(Transaction):
-
事务是一组原子性的数据库操作,要么全部成功,要么全部失败。
-
事务具有ACID属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
-
-
数据库完整性:
-
实体完整性:确保每个表都有一个主键。
-
参照完整性:确保外键与另一个表的主键相关联。
-
域完整性:确保列中的数据满足特定的约束条件。
-
-
数据库规范化:
-
通过分解表来减少数据冗余和依赖,提高数据完整性的过程。
-
规范化有多个级别,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
-
-
数据库索引:
-
用于提高数据库查询性能的数据结构,如B树索引、哈希索引等。
-
-
数据库备份与恢复:
-
定期备份数据库,以便在数据丢失或损坏时能够恢复。
-
-
并发控制:
-
管理多个用户同时访问数据库时可能出现的问题,如死锁、脏读、不可重复读和幻读。
-
-
数据库设计:
-
包括需求分析、概念性设计、逻辑设计和物理设计等步骤。
-
数据库技术是信息技术领域的一个重要分支,它涉及到数据存储、检索、分析和保护等多个方面。随着大数据和云计算技术的发展,数据库技术也在不断地演进和扩展。
sql基础
mysql> use RUNOOB; Database changed
mysql> set names utf8; Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM Websites; +----+--------------+---------------------------+-------+---------+
+----+--------------+---------------------------+-------+---------+
+----+--------------+---------------------------+-------+---------+ 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}%'");
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/20716.html