JDBC操作语句(杂项)

关系型数据库:描述实体与实体之间的关系。
E-R关系图:Entity Relationship

JDBC—Java DataBase Connectivity
Dao----Data Access Object 数据访问对象
NOSQL–非关系型数据库(Mongodb/redis)
SQL—Structured Query Language 结构化查询语言
DDL—数据定义语言
-定义数据库,数据表的结构:create(创建) drop(删除) alter(修改)
DML—数据操作语言
-操作数据库:insert(添加) delect(删除) update(修改)
DCL—数据控制语言
-定义访问权限,安全设置
DQL—数据查询语言
-select(查询)

注:char——固定长度
varchar——可变长度

JDBC建立连接步骤:
1,注册驱动:

Class.forName(com.mysql.jdbc.Driver);

2,使用驱动管理器连接数据库:

Connection conn=DriverManager.getConnection(url,name,password);

3,创建声明,并使用sql语句进行操作

		 String sql="";
		PrepareStatement ps=conn.prepareStatement(sql);

Statement和PrepareStatement的区别:

Statement安全问题:
		执行顺序:先拼接SQL语句,再一起执行

		

PrepareStatement(预处理)——预先对SQL语句进行拼写检查校验,sql中变量可以使用?占位符,进行占位,然后再进行变量的添加。
		Connection conn=DriverManager.getConnection(url,name,password);
		PrepareStatement st=conn.prepareStatement(sql);

SQL相关操作语句:
1,insert(增加,插入)

	    String sql="INSERT INTO t_stu VALUES(NULL,'QIANQIAN',27)";
		int result=st.executeUpdate(sql);

2,delete(删除)

		String sql="DELETE FROM t_stu WHERE id=6";
		int result=st.executeUpdate(sql);
		注:delete——一条一条的从表中删除数据
	    	truncate——先删除表再重建表

3,query(查询)

	    String sql="SELECT*FROM t_stu WHERE USERNAME='"+NAME+"'AND PASSWORD='"+PASSWORD+"'";
		ResultSet rs=st.executeQuert(sql);

模糊查询:“like”

String sql=“select * from t_stu where name like '%娃哈哈%'”

排序查询:“order by 对象 asc/desc” asc:升序 desc:降序

String sql=“select * from t_stu order by id asc”

4,update(更新,更改)

	String sql="UPDATE t_stu SET age=28 WHERE id=5";
	int result=st.executeUpdate(sql);
	注:若列的参数是字符串或者日期,需要使用单引号

5,聚合函数

求和:“select sum(price) from product”
	求平均数:“select avg(price) from product”
	求个数(计数):“select count(*) from product”
	分组:group by
		"select cno from product group by cno"
		"select cno from product group by cno having avg(price)>60"

**特别注意:

sql语句
编写顺序: select...from...where...group by...having...order by
			     
		    	  
执行顺序:  from...where...group by...having... select...order by
注意:where之后不能接聚合函数
      having之后可以接聚合函数,出现在分组之后**

数据库建库原则:一个项目/应用建立一个数据库

多表之间的建表原则:

		   1,一对多:在多的一方表添加一个外键,指向一的一方表
				例:分类列表和商品列表
		   2,多对多:建立一张中间表,将多对多的关系,拆分成一对多的关系,中间表至少有两个外键,两个外键分别指向原来的表
				例:学生和课程,课程和老师
		   3,一对一:一张表有唯一的一个外键指向另一张表,两张表可以合并成一张表
				例:国家和国旗

表与表关系
外键约束——foreign key
product和category两个表添加外键约束:
alter table product add foreign key(cno) references category(cid);

注意:主键约束(primary key)与唯一约束(unique)的区别:
主键约束:主键约束用于唯一地标识表中的每一条记录
主键列上的内容不能重复,不能为null
主键不能更新
主键可以作为外键,外键指向另一张表的主键
主键一张表只能有一个,但是可以定义一列或者多列为主键
唯一约束:唯一约束用于限制不受主键约束的列上的数据的唯一性,可以有多个唯一约束
唯一约束可以更新
列里面的内容,必须是唯一的,不能出现重复,但是可以为null
唯一约束不可以作为其它表的外键

交叉连接查询——selectfrom product,category;
查询结果(笛卡尔积)——两张表的乘积
select
from product,category where cno=cid;对查询结果进行过滤,得到有用信息

内连接查询:

  	   隐式内连接:select*from product as p,category as c where p.cno=c.cid;
	   显式内连接:select*from product p inner join category c on p.cno=c.cid;

区别:隐式内连接:在查询出两个表后,再以where条件去过滤结果
显式内连接:呆着条件去查询结果,效率更高

外连接查询:

		 左外连接:select*from product p left outer join category c on p.cno=c.cid;
	   右外连接:select*from product p right outer join category c on p.cno=c.cid;

分页查询——select*from product limit 0,10:
表示:索引从0开始,每页显式10条数据.

子查询——sql语句的嵌套(sql语句中嵌套sql语句)
select*from product where pno=(select cno from category where cname=“手机”);

猜你喜欢

转载自blog.csdn.net/baidu_38739188/article/details/83590223