本帖最后由 小石姐姐 于 2018-1-12 10:35 编辑
数据库总结
升序,降序,对指定列排序
order by 列名 asc 是升序(默认的,可以不用写)
order by 列名 desc 是降序的。
排序是要放在选择的后面。即先过滤条件,查询后的结果再排序
可以按照多个列进行排序
前者是相同的然后在排列后者
select from 列名 order by age desc,salary desc。
聚合函数
select 函数名(列名)from 表名
count 求和,对表中的数据的个数求和
sum 求和,对一列中的数据进行计算
在sum求和过程中,不是数据类型时,要选择不计算或默认为零不包括空值直接忽略掉
avg 运算时不包括空值直接忽略掉
函数名和小括号不能有空格,否则就会报错
分组查询 是和 聚合函数配合使用的
重复的内容归为一组
group by 列名 having
select ---from ---where----group by 列名 having 条件
结果集是分组查询后,再次进行筛选,不能使用where,
分组后再次过滤要使用关键字having
select---from--- where---group by---having---order by ---desc
having和where的区别
having shi 分组后再进行过滤
where 是分组前对查询结果进行过滤
* 注意:
* 聚合函数与分组的使用效果
* 使用聚合函数后再进行分组, 才相当于汇总统计
* `SELECT zname, SUM(zmoney) FROM zhangwu GROUP BY zname;`
* 不使用聚合函数的分组, 只有第一条记录的值
* `SELECT zname, zmoney FROM zhangwu GROUP BY zname;`
* `HAVING`和`WHERE`的区别
* 过滤时机不同
* WHERE是在分组前先对查询结果进行过滤
* HAVING是在查询结果分组后再次过滤
* 是否可跟随聚合函数不同
* WHERE条件中不可使用聚合函数
* HAVING条件中可以使用聚合函数
* 条件可用列名不同
* HAVING条件中的列名必须是SELECT或GROUP BY中使用过的列名
* WHERE条件中可以使用表的所有列名
JDBC java数据库连接,是一种技术的名称提供的类和接口
sun 提供用于执行SQL语句的Java API
数据库驱动,是指java和数据库进行连接
是实现类
JDBC操作数据库的步骤
前提是导入数据库驱动的jar包
1. 注册驱动.
告知jvm使用的是哪一个数据库的驱动,
2. 获得连接.
使用JDBC中的类,完成对MySQL数据库的连接
3. 获得语句执行平台
通过连接对象获取对SQL语句的执行者对象
4. 执行sql语句
使用执行者对象,对数据库执行SQL语句
获取到数据库的执行后的结果
5. 处理结果
6. 释放资源.
调用一堆close()
注入攻击的原理:字符串拼接,拼接成永远正确
SQL对表的操作
创建列是create table 表名(列名1 数据类型,列名2数据类型);
查看当前库的所有表 show tables
删除表:drop table 表名
修改都是 使用 alter table 但修改表名是rename table to
增加列 alter table 表名 add 新列名数据类型,新约束
删除列 alter table 表名 drop 列名
修改列的数据类型和约束
Alter table 表名modify 列名 新数据类型 新约束
修改列名 alter table 表名 change 旧列名 新列名 新约束
修改表名 rename table 旧表名 to 新表名
SQL对记录的操作
增: 插入记录 insert into 表名(列名1,列名2)values (值1,值2)
加列名的可以不用写编号,直接自动增加
删: delete from 表名 where 条件 删除符合记录的
Delete from 表名 ;删除所有的记录 逐条删除记录,不会重置自增计数器
Truncate table 表名 清空表 删除表后在重建,会重置自增计数器
改: 修改符合条件的记录 update 表名 set 列名1=新值,where 条件
修改智能手机,价格上调到15999
Update product set price = 15999 where id=2
修改所有的记录 update 表名 set 列名1=新值,列名2=新值
查: 查询指定列 select 列名 1,列名2 from 表名
查询所有列 Select * from表名 where 条件
* `BETWEEN...AND...`: 在一个范围内(包含头和尾)
* 如: BETWEEN 0 AND 10
* `IN ()`: 在列表中, 满足列表中一个即可
如: IN (1, 3, 5)
`IS NULL`: 是空
`LIKE '通配符'`: 模糊查询
* `%`: 一个百分号可以表示任意个字符. 比如'王%', 王大锤, 王五
* `_`: 一个下划线可以表示一个字符. 比如'王_', 只能匹配王五
|
|