插入语法
Insert into 表名(列名1,列名2,...)values('值1',‘值2’,...)
删除语法
delete from 表名 where 条件
修改语法
update 表名 set 列名=更新值 where 条件
查询语法
select 列名 from 表名 where 条件 order by asc/desc
模糊查询
select * from a where name like '赵%'
select * from a where age between 18 and 20
select name from a where address in ('北京','上海','唐山')
SELECT name,SUM(OrderPrice) FROM Orders GROUP BY name (将Orders表中name相同的人订单价格合并,查询name和总价)
SELECT name,SUM(OrderPrice) FROM Orders GROUP BY name having SUM(OrderPrice) >10000(将Orders表中name相同的人订单价格合并,查询总价大于1w的name和总价)
聚集函数一般与ORDER BY一起使用
内连接
SELECT * FROM users AS u INNER JOIN consume AS c ON u.id=c.user_id
INNER和AS可以省略
SELECT * FROM users u JION consume c ON u.id=t.user_id
等价于 SELECT * FROM users,comsume WHERE users.id=topics.user_id
外连接
左连接:SELECT * FROM users AS u LEFT JOIN consume AS c ON u.id=c.user_id
右连接:SELECT * FROM consumer AS c RIGHT JOIN users AS u ON u.id=c.user_id
什么是sql注入
SQL注入就是通过在服务段修改where条件,来非法操作的攻击手法。
比如:SELECT * FROM user WHERE username = 'ls' AND password = '123456'改为
select * from user where username='' or 1=1 #' and password='123456' #是注释的意思
避免:
1、严格的参数校验
2、使用预编译 ,将参数使用占位符先编译,然后注入的参数系统会认为它是一个参数而不是sql语句(mybatis的preparedStatement)
将一张表的部分数据更新到另一张表,该如何操作呢?
可以采用关联更新的方式,将一张表的部分数据,更新到另一张表内。参考下面三种方式:
update b set b.col=a.col from a,b where a.id=b.id;
update b set col=a.col from b inner join a on a.id=b.id;
update b set b.col=a.col from b left Join a on b.id = a.id;
什么是第一范式、第二范式和第三范式。
第一范式:数据表的列不可再分
第二范式:在第一范式的基础上,非主键列不存在对主键的部分依赖(可以是完全依赖,所有非主键列依赖于主键)
第三范式:在第二范式的基础上,表中的列不存在对非主键列的传递依赖
![](https://img-blog.csdnimg.cn/img_convert/7d5ceab5f9e92d9059351267c2809d62.png)