SQL补充

TOP 子句
TOP 子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
注释:并非所有的数据库系统都支持 TOP 子句。
SELECT TOP 2 * FROM Persons.
截取前两条数据

SQL 通配符
在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。
SQL 通配符必须与 LIKE 运算符一起使用。
在 SQL 中,可使用以下通配符:
通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符

[charlist] 字符列中的任何单一字符
[^charlist] 不在字符列中的任何单一字符
或者
[!charlist]

Between 操作符实例
SELECT * FROM PersonsWHERE LastName BETWEEN ‘Adams‘ AND ‘Carter‘
重要事项:
不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。某些数据库会列出介于 "Adams" 和 "Carter" 之间的人,但不包括 "Adams" 和 "Carter" ;某些数据库会列出介于 "Adams" 和 "Carter" 之间并包括 "Adams" 和 "Carter" 的人;而另一些数据库会列出介于 "Adams" 和 "Carter" 之间的人,包括 "Adams" ,但不包括 "Carter" 。
所以,请检查你的数据库是如何处理 BETWEEN....AND 操作符的!

如需使用上面的例子显示范围之外的人,请使用 NOT 操作符:
select * from Persons where LastName not between ‘Adams‘ AND ‘Carter‘

两个表取数据
select Persons.LastName, Persons.FirstName, Orders.OrderNo from Persons, Orders where Persons.Id_P = Orders.Id_P

LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。
RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。
FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。

union
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA
UNION 命令只会选取不同的值。

ucase
现在,我们希望选取 "LastName" 和 "FirstName" 列的内容,然后把 "LastName" 列转换为大写。
我们使用如下 SQL 语句:
SELECT UCASE(LastName) as LastName,FirstName FROM Persons
结果集类似这样:
LastName FirstName
ADAMS John
BUSH George
CARTER Thomas

lcase
现在,我们希望选取 "LastName" 和 "FirstName" 列的内容,然后把 "LastName" 列转换为小写。
我们使用如下 SQL 语句:
SELECT LCASE(LastName) as LastName,FirstName FROM Persons
结果集类似这样:
LastName FirstName
adams John
bush George
carter Thomas

len
我们使用如下 SQL 语句:
select LEN(City) as LengthOfCity FROM Persons
结果集类似这样:
LengthOfCity
6
8
7

round()
现在,我们希望把名称和价格舍入为最接近的整数。
我们使用如下 SQL 语句:
SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products
结果集类似这样:
ProductName UnitPrice
gold 32
silver 12
copper 7

NOW 函数返回当前的日期和时间。
现在,我们希望显示当天的日期所对应的名称和价格。
我们使用如下 SQL 语句:
SELECT ProductName, UnitPrice, Now() as PerDate FROM Products
结果集类似这样:
ProductName UnitPrice PerDate
gold 32.35 12/29/2008 11:36:05 AM
silver 11.56 12/29/2008 11:36:05 AM
copper 6.85 12/29/2008 11:36:05 AM

PHP 教程

echo 和 print 之间的差异:
echo - 能够输出一个以上的字符串
print - 只能输出一个字符串,并始终返回 1
提示:echo 比 print 稍快,因为它不返回任何值。

获得数组的长度 - count() 函数
count() 函数用于返回数组的长度(元素数):
实例
<?php
$cars=array("Volvo","BMW","SAAB");
echo count($cars);
?>

PHP - 数组的排序函数
在本节中,我们将学习如下 PHP 数组排序函数:
sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序

防止黑客攻击:
表单元素
表单的 HTML 代码是这样的:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
当提交此表单时,通过 method="post" 发送表单数据。
什么是 $_SERVER["PHP_SELF"] 变量?
$_SERVER["PHP_SELF"] 是一种超全局变量,它返回当前执行脚本的文件名。
因此,$_SERVER["PHP_SELF"] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。
什么是 htmlspecialchars() 函数?
htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 &lt; 和 &gt; 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。
关于 PHP 表单安全性的重要提示
$_SERVER["PHP_SELF"] 变量能够被黑客利用!
如果您的页面使用了 PHP_SELF,用户能够输入下划线然后执行跨站点脚本(XSS)。
提示:跨站点脚本(Cross-site scripting,XSS)是一种计算机安全漏洞类型,常见于 Web 应用程序。XSS 能够使攻击者向其他用户浏览的网页中输入客户端脚本。
假设我们的一张名为 "test_form.php" 的页面中有如下表单:
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
现在,如果用户进入的是地址栏中正常的 URL:"http://www.example.com/test_form.php",上面的代码会转换为:
<form method="post" action="test_form.php">
到目前,一切正常。
不过,如果用户在地址栏中键入了如下 URL:
http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert(‘hacked‘)%3C/script%3E
在这种情况下,上面的代码会转换为:
<form method="post" action="test_form.php"/><script>alert(‘hacked‘)</script>
这段代码加入了一段脚本和一个提示命令。并且当此页面加载后,就会执行 JavaScript 代码(用户会看到一个提示框)。这仅仅是一个关于 PHP_SELF 变量如何被利用的简单无害案例。
您应该意识到 <script> 标签内能够添加任何 JavaScript 代码!黑客能够把用户重定向到另一台服务器上的某个文件,该文件中的恶意代码能够更改全局变量或将表单提交到其他地址以保存用户数据,等等。
如果避免 $_SERVER["PHP_SELF"] 被利用?
通过使用 htmlspecialchars() 函数能够避免 $_SERVER["PHP_SELF"] 被利用。
表单代码是这样的:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars() 函数把特殊字符转换为 HTML 实体。现在,如果用户试图利用 PHP_SELF 变量,会导致如下输出:
<form method="post" action="test_form.php/"><script>alert(‘hacked‘)</script>">
无法利用,没有危害!

时间: 2024-07-29 00:48:30

SQL补充的相关文章

031医疗项目-模块三:药品供应商目录模块——sql补充知识

这个补充知识有一个点很有必要,视屏上的老师提出一点: 内链接关联查询: 如果表A和表B有一个外键关联 ,可以通过外键进行内链接查询 select dictinfo.*, dicttype.typename from dictinfo, dicttype where dictinfo.typecode = dicttype.typecode --不通过外键,通过groupid查询用户类型的代码结果集,只能查询出一条记录,可以使用内链接 select sysuser.*, dictinfo.info

Python学习—数据库篇之SQL补充

一.SQL注入问题 在使用pymysql进行信息查询时,推荐使用传参的方式,禁止使用字符串拼接方式,因为字符串拼接往往会带来sql注入的问题 1 # -*- coding:utf-8 -*- 2 # author: cdc 3 # date: 2019/3/18 4 5 import pymysql 6 7 conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='cdc19951216',db='test',

sql server行列转化和行列置换

行列转换: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ---- 李四 74   84   94 张三 74   83   93 create table sc(姓名 varchar(10),课程 varchar(10),分数 float) insert into sc select '张三','语文',74 union select 

Oracle单实例情况下的library cache pin的问题模拟与问题分析

參考自: WAITEVENT: "library cache pin" Reference Note (文档 ID 34579.1) How to Find the Blocker of the 'library cache pin' in a RAC environment? (文档 ID 780514.1) 本机环境:Oracle 10.2.0.5 x86-64bit for RHEL5.8 x86-64bit 第一个session: [[email protected] ~]$

安志清PHP:dedecms织梦常用标签大全,只有你没见过的

文章来自Mr. Right :www.rol.xyz 列表页(包括图片列表): 当前位置:{dede:field name='position'/} 列表循环: {dede:list pagesize='10'} 图片: [field:array runphp='yes']@me = (empty(@me['litpic']) ? "" : "<a href='{@me['arcurl']}' ><img src='{@me['litpic']}'/>

oracle的split函数

PL/SQL 中没有split函数,需要自己写. 代码: create or replace type type_split as table of varchar2(50);  --创建一个 type ,如果为了使split函数具有通用性,请将其size 设大些. --创建function create or replace function split (    p_list varchar2,    p_sep varchar2 := ',' )  return type_split pi

Mysql DBA 高级运维学习笔记-DML语句之insert知识讲解

9.9.7.8 往表中插入数据 (1)命令语法 Insert into<表名>[(<字段名1>[-<字段名n>])]values(值1)[,(值n)] (2)新建一个简单的测试表test1 Create Table: CREATE TABLE `test1` ( `id` int(4) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT

初识MariaDB之4——Xtrabackup备份与还原

一.基础知识 mysqldump是mysql自带的一个单线程的逻辑备份工具,当数据量很大时,使用mysqldump备份的时间会非常长,且无法做增量备份,xtrabackup是一款基于底层块复制.开源的备份工具,可以对数据库在线实现备份.xtrabackup支持对Innodb和Xtradb存储引擎的完全.增量和差异备份,对于不支持事物的MyISAM存储引擎只能完全备份. 二.备份工具 Xtrabackup工具用到的命令为xtrabackup和innobackupex,而innobackupex又是

MySQL的delete误操作的快速恢复方法

1. 根据误操作时间定位binlog位置找到数据库的binlog存放位置,当前正在使用的binlog文件里面就有我们要恢复的数据.一般生产环境中的binlog文件都是几百M乃至上G的大小,我们不能逐行去找被删除的数据在什么位置,所以记住误操作的时间很重要,我们可以通过mysqlbinlog命令的--start-datetime参数快速定位数据位置.比如误操作时间为20181104151800,解析出的binlog内容: [[email protected] mysql]# mysqlbinlog