抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

12`create_time` timestamp not null default current_timestamp comment '创建时间',`update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间'...

使用 mysql 的聚合函数 replace(字段,原部分字符串,新部分字符串),在进行数据库操作时,一定要检查sql语句,我这里把images_url漏写成image_url,结果images_url变成了image_url里的内容。 script1UPDATE pro_product SET images_url=REPLACE(images_url,'192.168.1.10...

如果库不存在就建库1Create Database If Not Exists elegant_cloud Character Set UTF8; 如果表不存在就建表12345678910111213CREATE TABLE If Not Exists elegant_cloud.user( id CHAR(32) NOT NULL DEFAULT '&#...

转载:https://www.cnblogs.com/loveyoulx/p/9526068.html

思考与理解

SQL注入本质上,是程序将用户输入的参数当成命令的一部分进行解析,从而使用户可以自由搜索我们的数据库中的记录。

解决方法,是将用户输入的内容进行解析和转义,将用户输入内容中的恶意代码转为普通字符串,从而保护数据库不被攻击。

SQL 注入攻击

SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。

最常见的就是我们在应用程序中使用字符串联结方式组合 SQL 指令,有心之人就会写一些特殊的符号,恶意篡改原本的 SQL 语法的作用,达到注入攻击的目的。

举个栗子:

比如验证用户登录需要 username 和 password,编写的 SQL 语句如下:

1
String querySql = "select * from user where (name = '"+ username +"') and (pw = '"+ password +"');";

username 和 password 字段被恶意填入

1
username = "1' OR '1'='1";

1
password = "1' OR '1'='1";

将导致原本的 SQL 字符串被填为:

1
select * from user where (name = '1' or '1'='1') and (pw = '1' or '1'='1');

实际上运行的 SQL 语句将变成:

1
select * from user;

也就是不再需要 username 和 password 账密即达到登录的目的,结果不言而喻。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Properties file with JDBC-related settings.
##########
# HSQLDB #
##########
#jdbc.driverClassName=org.hsqldb.jdbcDriver
#jdbc.url=jdbc:hsqldb:hsql://localhost:9001/bookstore
#jdbc.username=sa
#jdbc.password=
###########
# MySQL 5 #
###########
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK
jdbc.username=root
jdbc.password=root
##############
# PostgreSQL #
##############
#jdbc.driverClassName=org.postgresql.Driver
#jdbc.url=jdbc:postgresql://localhost/bookstore
#jdbc.username=
#jdbc.password=
##########
# Oracle #
##########
#jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@192.168.1.250:1521:devdb
#jdbc.username=HFOSPSP
#jdbc.password=HFOSPSP
#############################
# MS SQL Server 2000 (JTDS) #
#############################
#jdbc.driverClassName=net.sourceforge.jtds.jdbc.Driver
#jdbc.url=jdbc:jtds:sqlserver://localhost:1433/bookstore
#jdbc.username=
#jdbc.password=
##################################
# MS SQL Server 2000 (Microsoft) #
##################################
#jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
#jdbc.url=jdbc:sqlserver://192.168.1.130:1433;database=ahos;user=sa;password=ahtec";
#jdbc.username=sa
#jdbc.password=ahtec
########
# ODBC #
########
#jdbc.driverClassName=sun.jdbc.odbc.JdbcOdbcDriver
#jdbc.url=jdbc:odbc:bookstore
#jdbc.username=
#jdbc.password=

参考来源

数据库几种常见的driverClassName和url

MySQL8.0.16版本在SQLYog8.14内执行查询均报错1064的解决

查询数据库中最新的一条记录

1
SELECT id FROM affair ORDER BY create_time DESC LIMIT 0,1;

删除这条最新的记录

1
DELETE a FROM affair a,(SELECT id FROM affair b ORDER BY b.create_time DESC LIMIT 0,1) b WHERE a.id = b.id;

DELETE a 指的是后面 affair a,子select查询结果重命名为b了。

来源

MySQL的varchar定义长度到底是字节
varchar存储规则:
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节
Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。

阅读原文请点击:http://click.aliyun.com/m/23921/
摘要: mysql的联合主键:用2个字段(或者多个字段,后面具体都是用2个字段组合)来确定一条记录,说明,这2个字段都不是唯一的,2个字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数。

mysql的联合主键:用2个字段(或者多个字段,后面具体都是用2个字段组合)来确定一条记录,说明,这2个字段都不是唯一的,2个字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数。

在mysql当中我们经常认为主键只能设置一个,那如果我们想设置两个呢?如下图:

1
2
3
4
5
6
7
8
9
10
CREATE TABLE `test` ( 
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` varchar(25) DEFAULT NULL,
`sess_id` varchar(255) DEFAULT NULL,
`keyword` varchar(25) NOT NULL,
`url_n` varchar(3) DEFAULT NULL,
`s_n` varchar(3) DEFAULT NULL,
`select_url` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`,`keyword`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;