SQL 注入
-
用户往输入值的地方输入了 SQL 语句,导致原有 SQL 语句的逻辑发生改变,这个过程称为
SQL 注入
-
通过 PreparedStatement 带有预编译效果的执行 SQL 语句的对象,解决 SQL 注入问题
-
如何解决?
-
使用 PreparedStatement,将编译 SQL 语句的时间点提前到创建对象时,此时编译用户输
入的内容还没有在 SQL 语句中, 编译后可以理解为将 SQL 语句的逻辑锁死, 用户输入的
内容只能以值的形式添加到原有 SQL 语句中,这样将不再影响原有 SQL 语句的逻辑,从
而避免了 SQL 注入的问题
-
SQL 语句分类
-
DDL: 数据定义语言 包括数据库相关和表相关的 SQL 语句
-
DML: 数据操作语言,包括增删改查.
-
DQL: 数据查询语言,包括查询相关
-
TCL: 事务控制语言,和事务相关的 SQL 语句.
-
DCL:数据控制语言, 指用户相关和权限分配相关
数据类型
- 整数: int 和 bigInt bigInt 等效 Java 中的 long
- 浮点数: double(m,d) m 代表总长度 d 代表小数长度 , 25.444 m=5 d=3
- 字符串
- char(m): 固定长度, m=5 存"abc" 占 5 个 最大长度 255
- varchar(m): 可变长度,m=5 存"abc" 占 3 个 最大长度 65535 内容少的用 varchar
- text(m):可变长度 最大长度 65535 内容长的用 text
- 时间类型
- date:只能保存年月日
- time:只能保存时分秒
- datetime:年月日时分秒,默认为null,最大值9999-12-31
- timestamp:(时间戳,通过保存距离1970年1月1日的毫秒数来实现时间记录的):年月日时分秒;默认值为当前系统时间,最大值2038-1-19