8.4.数据库基础技术-SQL

大数据

特点:大量化(Volume)、多样化Variety)、价值密度低Value)、快速化(Velocity)。

大数据和传统数据的比较如下:

比较维度 传统数据 大数据
数据量 GB或TB级 PB级或以上
数据分析需求 现有数据的分析与检测 深度分析(关联分析、回归分析)
硬件平台 高端服务器 集群平台

要处理大数据,一般使用集成平台,称为大数据处理系统,其特征为:

高度可扩展性、高性能、高度容错、支持异构环境、较短的分析延迟、易用且开放的接口、较低成本、向下兼容性。

SQL语言

不了解的需要花其他时间自学一下,学MySQL即可,选择题一般1分,下午也有题目

SQL(Structured Query Language):是关系数据库管理系统的标准查询语言,用于存取数据以及查询、更新和管理关系数据库

主要功能

SQL的主要功能包括:

  1. 数据定义语言(DDL):用于定义数据库对象,如表、视图、索引等。包括CREATE、ALTER、DROP等语句。
  2. 数据操作语言(DML):用于对数据库中表的数据进行增删改操作。包括INSERT、UPDATE、DELETE等语句。
  3. 数据查询语言(DQL):用于查询数据库中表的记录。主要是SELECT语句及其子句
  4. 事务控制语言(TCL):用于管理数据库事务。包括COMMIT、ROLLBACK、SAVEPOINT等语句。
  5. 数据控制语言(DCL):用于管理数据库的权限和安全性。主要是GRANT(授权)和REVOKE(回收权限)语句。

常见的DDL操作

不怎么考

  1. 创建操作:create database/table/index/vie名称;
  2. 修改操作:alter table表名add/drop/modify列名,
  3. 删除操作:drop database/table/index/view名称;

常见的DML操作

考的比较多

  1. 数据库插入:insert into values0:insert into t1 values('a',66)
  2. 数据库删除:delete from.where:delete from t1 where sno=4
  3. 数据库修改:update.set...where:update t1 set sname='aa'where sno=3

常见的DQL操作

select...from...where...group by...having...order by...limit...

  1. 排序order by,默认为升序(ASC),降序要加关键字DESC:select*from t1 order by sno
  2. 分页limit, limit startlndex,pageSize,startlndex代表从第几项开始,pageSize代表展示多少项数据,startlndex从0开始算:select*from t1 limit 0,10
  3. 分组查询group by,分组时要注意select后的列名要适应分组,having为分组查询附加条件:select sno,avg(score)from student group by sno having(avg(score)>60)
  4. 更名运算as:select sno as"学号"from table
    5.字符串匹配:Iike,%匹配多个字符串,匹配任意一个字符串:select*from t1 where sname like'a_a'

常见的TCL操作

  1. 开启事务:start transaction
  2. 事务提交:commit
  3. 事务回滚:rollback
  4. 设置保存点:save point
  5. 回滚至保存点:rollback to savepoint

常见的DCL操作:

  1. 创建用户(CREATE USER):用于创建新的数据库用户。

  2. 删除用户(DROP USER):用于删除已存在的数据库用户。

  3. 修改用户密码(ALTER USER):用于修改数据库用户的密码。

  4. 授予权限(GRANT):用于为用户或角色授予对数据库对象的权限。考过

    GRANT privileges ON database_name.* TO 'username'@'host';
    
    • privileges:所需的权限,如 ALL PRIVILEGES、SELECT、INSERT、UPDATE、DELETE 等。
    • database_name.:表示对某个数据库或表授予权限。database_name. 表示对整个数据库的所有表授予权限,database_name.table_name 表示对指定的表授予权限。
    • TO 'username'@'host':指定授予权限的用户和主机。
  5. 撤销权限(REVOKE):用于撤销用户或角色已获得的对数据库对象的权限。考过

    REVOKE privileges ON database_name.* FROM 'username'@'host';
    
  6. 创建角色(CREATE ROLE):用于创建新的数据库角色。

  7. 删除角色(DROP ROLE):用于删除已存在的数据库角色。

  8. 授子角色(GRANT ROLE):用于将角色授予给用户或其他角色。

  9. 撤销角色(REVOKE ROLE):用于撤销用户或角色已获得的角色。

其他的表操作

  1. 指定主键(primary key()):用于设置某个表的字段为主键。
  2. 指定外键(foreign key()):用于设置某个表的某个字段为外键,后面还需要接关联哪个表的主键字段

练习题

【2023】如果将Students表的插入权限赋予用户User1,并允许其将该权限授予他人,那么正确的SQL语句如下:GRANT(55)TABLE Students TO User1(56)

(55)

A.INSERT

B.INSERT ON

C.UPDATE

D.UPDATE ON

(56)

A.FOR ALL

B.PUBLIC

C.WITH GRANT OPTION

D.WITH CHECK OPTION

答案B C

【2021】SQL是一种数据库结构化查询语言,SQL注入攻击的首要目标是()。

(A)破坏Web服务

(B)窃取用户口令等机密信息

©攻击用户浏览器,以获得访问权限

(D)获得数据库的权限

答案D

SQL注入:假设有一个登录系统,用户通过输入用户名和密码进行身份验证

SELECT * FROM users WHERE username = 'input_username' AND password = 'input_password';

如果没有正确的输入验证和防范措施,攻击者可以输入类似于以下内容的用户名:

' OR '1'='1'; --

在这种情况下,SQL 查询会变成:

SELECT * FROM users WHERE username = '' OR '1'='1'; --' AND password = 'input_password';

这会使查询返回所有用户,因为 1=1 总是为真,注释符号 -- 用于注释掉原始查询的其余部分,以确保语法正确。

这样会在未授权的情况下就能访问数据库

【2019】要将部门表Dept中name列的修改权限赋予用户Ming,并允许Ming将该权限授予他人。实现该要求的SQL语句如下:GRANT UPDATE(name)ON TABLE Dept TO Ming ()

(A)FOR ALL

(B)CASCADE

©WITH GRANT OPTION

(D)WITH CHECK OPTION

答案C

相关推荐
尸僵打怪兽2 天前
软考(中级-软件设计师)(0919)
java·c语言·数据库·计算机网络·软考·多媒体·软件设计师
X_StarX5 天前
软考中级攻略站】-软件设计师(11)- 法律法规与标准化知识
笔记·软考·科普·大学生·软件设计师
逸尘谈PM5 天前
零基础考过软考信息系统项目管理师经验分享
经验分享·软考高级·软考·信息系统项目管理师·软考备考攻略
W Y6 天前
【架构设计模式-2】创建型、结构型、行为型等设计模式
设计模式·架构·系统架构·架构师·软考
王佑辉7 天前
【软考】设计模式之抽象工厂模式
设计模式·软考
Alueaxten(上学版)8 天前
【软考】程序设计语言基础
经验分享·笔记·学习·软件工程·软考
X_StarX8 天前
【软考中级攻略站】-软件设计师(5)- 软件工程
开发语言·笔记·学习·软件工程·软考·大学生·软件设计师
xcg3401239 天前
【系统分析师】-安全体系
安全·软考·系统分析
王佑辉9 天前
【软考】设计模式之责任链模式
设计模式·软考
沫寒_10 天前
如何从零开始备考高项(信息系统项目管理师),并且可以一次性通过考试?
算法·软考