数据库基础

一、数据库概述

数据库(DataBase,DB):存储在磁带、磁盘、光盘或其他外存介质上、按一定结构组织在一起的相

关数据的集合。

数据库管理系统(DataBase Management System,DBMS):-种操纵和管理数据库的大型软件,用

于建立、使用和维护数据库。

数据库系统(DataBase System,DBS):通常由软件、数据库(DB)和数据库管理员组成。软件主要包

括操作系统、各种宿主语言、实用程序以及数据库管理系统(DBMS)数据库(DB)由数据库管理系统

(DBMS)统一管理,数据的插入、修改和检索均要通过数据库管理系统(DBMS)进行。数据库管理员

负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。

二、数据库分类

①关系型数据库

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。通过SQL结构化

查询语句存储数据,保持数据一致性,遵循ACID理论。关系型数据库的典型产品:MySQL、

Microsoft SQL Server、Oracle、PostgreSQL、IBM DB2、Access等。非关系型数据库

②非关系型数据库

也被成为NOSQL数据库,NOSQL的本意是“NotOnly SQL'指的是非关系型数据库,而不是

“NoSQL”的意思。因此,NOSQL的产生并不是要彻底地否定关系型数据库,而是作为传统关系型

数据库的一个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。

非关系型数据库的典型产品:Memcached、Redis、mongoDB等。

三、ACID理论

①原子性(Atomicity):事务是一个不可分割的单位,事务中的操作要么都发生要么都不发生。

②一致性(Consistency):事务前后数据的完整性必须保持一致。

③隔离性(lsolation):多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事

务的操作数据所干扰,多个并发事务之间要相互隔离。

④持久性(Durability):一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数

据库发生故障也不应该对其有任何影响。

四、MySQL数据库连接方法

1.命令行连接:[root@host]#mysql -h XXXX-u root -p

2.PHP脚本连接:mysqli connect(host,username,password,dbname,port,socket);

3.第三方软件连接

五、识别数据库

1、识别数据库方法

盲跟踪

①Web应用技术

②不同数据库SQL语句差异

2、非盲跟踪

报错、直接查询

六、默认端口号

Oracle:1521

MySQL:3306

MySQL报错信息:

SQL Server:1433

MSSQL(Microsoft SQLServer)报错信息

PostgreSQL:5432

mongoDB:27017

Redis:6379

MemcacheDB:11211

七、各数据库的版本查询方法区别

①MSSQL   select @@version

②MySQL    select version()/select @@version

③Oracle     select banner from v$version

④PostgreSQL   select version()

八、各数据库在字符串处理时的区别

九、各数据库与网页编程语言的搭配

常见的搭配:

①ASP和.NET:Microsoft SQL Server

②PHP:MySQL、PostgreSQL

③Java:Oracle、MySQL

十、sql语法基础

用于与关系型数据库交互的标准 SQL 命令有CREATE、SELECT、INSERT、UPDATE、

DELETE和DROP

分为三组

1.数据定义(Create、Drop)

2.数据操纵(Select、Insert、Update、 Delete)

3.数据控制(Grant、Revoke)

①SQL基本操作:CUD

C=Create 创建

CREATE DATABASE testdb;

CREATE TABLE table name (column name column type);

U=Update 更改

UPDATE table name SET field1=new-value1, field2=new-value2 [WHERE Clause]

D=Delete 删除

DELETE FROM table name [WHERE Clause]

创建数据库   create database 数据库名

show databases  显示所有数据库

创建表create table 表名 

show tables  显示所有表名 

向数据表中添加数据  insert into  表名(列名1,列名2...)values(列值1,列值2..);

修改数据表中某一行数据 update 表名 set  列名=列新值   where  条件

显示表信息  select * from  表名;

删除表中某行数据 delete  from 表名 where  条件

SQL高级操作:排序,分组,限定条数

①排序 order by

SELECT * FROM test table ORDER BY userid;

②分组 group by

SELECT name,COUNT(*) FROM test table GROUP BY name;

SELECT username, MAX(password) AS password FROM users GROUP BY username;

错误查询语句:select product,price from orders group by product

正确査询语句:select product,sum(price)from orders GROUP BY product

③限定条数 limit

SELECT* FROM test table limit 0,10;

SELECT * FROM test table limit 1,5;

④联合查询 union select

SELECT * FROM test table UNION SELECT 1,2,3;

select * from users where username='a2' and 1=1 union select 1,password from users;

因为查询语句构造问题,可直接否认掉之前的查询,构造-全新的语句来执行,需要注意的是查询

的列应当和之前对应。知道列名后,把列名至于其中任意位置,就能在那个位置暴出列的内容来。

⑤结合其他函数

1、结合exists()函数猜解表名 and exists(select ...)exists()函数用于检查子查询是否至少会返回一行数

据。实际上不返回任何数据,而是返回True或者False

①union 结合系统函数暴数据库信息

information_schema.SCHEMATA表中的SCHEMA NAME 查看所有的数据库名:

SELECT * FROM users WHERE username='a2' AND 1=2 UNION SELECT 0, schema_name

FROM information_schema.schemata;

前提:需要足够的权限才可执行

②information schema.TABLES 表中的TABLE NAME和TABLE SCHEMA查看所有的表名和所在的

数据库:

SELECT TABLE_NAME, TABLE_SCHEMA FROM information_schema.TABLES WHERE

TABLE_SCHEMA = 'security';

2、结合load file()读取服务器文件内容

函数 LOAD FILE(file name):读取文件并将文件内容按照字符串的格式返回。

前提条件:
①文件的位置必须在服务器上,必须为文件制定路径全名,而且必须拥有FILE特许权(MVSQL配置

文件中,secure file priv不能为NULL)

②文件必须可读取,文件容量必须小于 max allowed packet 字节

③若文件不存在,或因不满足上述条件而不能被读取,则函数返回值为 NULL

load file()用在MySQL中可以在UNOIN中充当一个字段,读取Web服务器的文件。

SHOW VARIABLES LIKE 'secure_file_priv';//查看权限

设置权限:[mysqld] secure_file_priv = '',重启mysql生效

示例:

服务器上文件:"c:/test.txt",里面内容是:"i am ok",用load file读取出来

SELECT * FROM users WHERE username='a2' AND 1=2 UNION SELECT 0, LOAD_FILE("/root/桌面/1.txt") FROM users;​​​v

注意权限(此处在usr/tmp下可以)

查看当前所属数据库 select  database();

查看数据库版本:select  version();

十一、执行顺序:

当查询语句同时出现了where,group by, having,order by的时候,执行顺序和编写顺序是:

1.执行where xx对全表数据做筛选,,返回第1个结果集。

2.针对第1个结果集使用group by分组,返回第2个结果集。

3.针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。

4.针对第3个结集执行having xx进行筛选,返回第4个结果集。

5.针对第4个结果集排序。

一、数据库概述

二、数据库分类

三、ACID理论

四、MySQL数据库连接方法

五、识别数据库

六、默认端口号

七、各数据库的版本查询方法区别

八、各数据库在字符串处理时的区别

九、各数据库与网页编程语言的搭配

十、sql语法基础

十一、执行顺序:


  • 14
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值