本帖最后由 雪落 于 2018-5-9 15:50 编辑
web笔记二
# bootstrap(这里主要是具备灵活使用引用的能力)
cv
全局的CSS样式
导航条
轮播图
模态框
标签页
字体
# MYSQL
## sql的分类(面试)
DDL数据定义语言:create,alter,drop,truncate
DML数据操纵语言:insert ,update,delete
DCL数据控制语言: if ,grant
DQL数据查询语言:select
## sql对表的crud
1.创建表:
```sql
create table 表名(
字段名 字段类型(长度)约束,
字段名 字段类型(长度)约束,
字段名 字段类型(长度)约束
);
字段类型:
char/String char/varchar
date date/time/datetime/timestamp
约束:
主键约束 primary key
唯一约束 unique
非空约束 not null
char和varchar的区别:
* char代表是固定长度的字符或字符串。
* 定义类型char(8),向这个字段存入字符串hello,那么数据库使用三个空格将其补全。
* varchar代表的是可变长度的字符串。
* 定义类型varchar(8), 向这个字段存入字符串hello,那么存入到数据库的就是hello。
datetime和timestamp区别
* datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用null存入到数据库中
* timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的系统时间存入到数据库中。
2.修改表结构
```sql
##添加字段
alter table 表名 add 字段名 字段类型(长度)约束;
##修改现有字段的类型或者长度
alter table 表名 modify 字段名 字段的类型(长度) 约束
```## sql对表记录的crud
1.新增数据
```sql
1.
insert into 表名 (字段1,字段2 ,。。。。。) values (值1,值2,。。。。。);
2.
insert into 表名 values(。。。) 值的顺序要跟表的字段顺序要一致,不能少
```
2.修改数据
```sql
带条件的修改
update 表名 set 字段名=新的值,字段名=新的值 where 条件 如果要修改多个字段,最后一个字段跟where之间是没有逗号的
```
3.删除数据
```sql
带条件的删除
delete from 表名 wherer 条件
删除表中的记录有两种做法:
*delete from user;
*删除所有记录,属于DML语句,一条记录一条记录删除。事务可以作用在DML语句上的
*truncate table user;
*删除所有记录,属于DDL语句,将表删除,然后重新创建一个结构一样的表。事务不能控制DDL的
4.查询
```sql
整体的规则:
select 字段 from 表名 where 条件 group by 字段 having order by 字段
模糊查询:like
两个占位符:_,%
x%:以x开头
%x;以x结尾
%x%:只要包含谭就可以了
范围:in
条件的并列:and or not
排序查询:使用order by 字段名称 asc/desc;
分组查询:使用group by 字段名称;
聚合函数:
sum:求和
count:统计个数
select sum(english)+sum(chinese)+sum(math) from exam;
select sum(english+chinese+math) from exam;
两个语句有什么不同?
* 上面的语句是按照列的方式统计,英语成绩总和+语文成绩总和+数学成绩总和。
* 下面的语句先计算英语+数学+语文然后再求和。
注意:
*where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字having
*通常顺序:S(select)… F(from)…W(where)…G(group by)…H(having)…O(order by);
## 多表
### 多表的设计原则
一对多:多的一方设置一个关联字段,跟一这一方的主键相对应,是否设置成真正的外键看业务需求
多对多:建立中间表,中间表中有两个关联字段分别关联两个表的主键字段,是否设置成真正的外键看业务需求
### 多表查询
#### 内连接:隐式的内连接:
```sql
select * from tab1,tab2 where 关联条件
#### 内连接:显式的内连接(不常用):
select * from tab1 inner join tab2 on 关联条件 ;
#### 左外连接
```sql
select * from tab1 left join tab2 on 关联条件
### 子查询`
子查询类型:
*带in的子查询
*带exists的子查询
*带any的子查询
*带all的子查询
## 事务
事务的概念
事务:指的是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么全都成功,要么全都失败。
*开启事务:start transaction;
*提交事务commit;
*回滚事务:rollback;
事务的特性:
*原子性
*一致性
*隔离性
*持久性
# JDBC
## JDBC开发流程
```java
step1:注册驱动:Class.forName()
step2:获得连接:Connection conn = DriverManger.getConnection(url,username,password)// Connection java.sql包下的
step3:编写SQL语句,String sql ="",以前的值的地方用占位符代替 ?就是占位符
step4:预编译sql并且获得可执行sql语句的对象PreparedStatement ps = conn.prepareStatemet(String sql)
step5:为sql语句设置值,用值代替sql语句中的? ps.setXXX(int n,值) n:代表第几个问号的意思,n从1开始
step6:执行sql语句
如果是查询:ResutSet rs = ps.executeQuery();
遍历结果集:
while(rs.next()){
rs.getXXX(String columnName)/rs.getObject(String columnName) ;
//columnName默认是表地段名,如果取了别名,用别名
}
如果是增删改:int num = ps.executeUpdate() ;// num 代表影响的行数
step7:释放资源
```
## 工具类的抽取:Properties对象的使用
```java
Properties prop = new Properties();
prop.load(new FileInputStream(String path));
prop.getProperty(String key)
属性文件:.properties
key=value
aaa=adfadf
bbb=dafda
```
背后的思想:程序的解耦和
|
|