数据库基本知识自己整理初学者可以看一下基于MySql.docx
《数据库基本知识自己整理初学者可以看一下基于MySql.docx》由会员分享,可在线阅读,更多相关《数据库基本知识自己整理初学者可以看一下基于MySql.docx(9页珍藏版)》请在冰点文库上搜索。
数据库基本知识自己整理初学者可以看一下基于MySql
数据库
1常见数据库
1.1MySql:
甲骨文
1.2Oracle:
甲骨文
1.3SQLServer:
微软
1.4Sybase:
赛尔斯
1.5DB2:
IBM
2MySql基础知识
2.1关系结构数据模型数据库
2.2SQL(StructuredQueryLanguage)结构化查询语言
2.2.1DDL(DataDefinitionLanguage):
数据定义语言,用来定义数据库对象:
库、表、列等
操作数据库
CREATEDATABASE[IFNOTEXISTS]mydb1
USEmydb1
DROPDATABASE[IFNOTEXISTS]mydb1
ALTERDATABASEmydb1CHARACTERSETutf8
操作表
插入表
CREATETABLEstu(sidCHAR(6),snameVARCHAR(20),ageINT,genderVARCHAR(10));
更改表
ALTERTABLEt_userADD(studentvarcher(20))
ALTERTABLEt_userMODIFYgenderCHAR(20)
ALTERTABLEt_userCHANGEgenderVARCHER(20)
ALTERTABLEt_userREMANEgenderTOgenders
ALTERTABLEt_userDROPgender
删除表
DROPTABLEt_user
2.2.2DML(DataManipulationLanguage):
数据操作语言,用来定义数据库记录(数据)
插入数据
INSERTINTOt_userVALUES()
INSERTINTO表名VALUES(值1,值2,…)
更新数据
UPDATEt_userSETname=""
UPDATE表名SET列名1=值1,…列名n=值n[WHERE条件]
删除数据
虽然TRUNCATE与DELETE都可以删除表的所有记录,但有原理不同。
DELETE的效率没有TRUNCATE高!
TRUNCATE其实属性DDL语句,因为它就是先DROPTABLE,再CREATETABLE。
而且TRUNCATE删除的记录就是无法回滚的,但DELETE删除的记录就是可以回滚的(回滚就是事务的知识!
)。
DELETEFROMt_user
DELETEFROM表名[WHERE条件]
TRUNCATETABLEstu;
TRUNCATETABLE表名
2.2.3DCL(DataControlLanguage):
数据控制语言,用来定义访问权限与安全级别
创建用户
CREATEUSER用户名@地址IDENTIFIEDBY'密码';
给用户授权
GRANT权限1,…,权限nON数据库、*TO用户名
查瞧用户权限
SHOWGRANTSFOR用户名
撤销用户权限
REVOKE权限1,…,权限nON数据库、*FORM用户名
删除用户
DROPUSER用户名
修改用户名密码
UPDATEUSERSETPASSWORD=PASSWORD('1234')WHEREUser='user2'andHost=’localhost’;FLUSHPRIVILEGES;
2.2.4DQL(DataQueryLanguage):
数据查询语言,用来查询记录(数据)
基础查询
SELECTselection_list/*要查询的列名称*/
FROMtable_list/*要查询的表名称*/
WHEREcondition/*行条件*/
GROUPBYgrouping_columns/*对结果分组*/
HAVINGcondition/*分组后的行条件*/
ORDERBYsorting_columns/*对结果分组*/
LIMIToffset_start,row_count/*结果限定*/
模糊查询
SELECT*FROMt_userWHEREnameLIKE'____'
聚合函数
COUNT();MAX();MIN();AVG();SUM();
多表查询
连接查询
内连接
SELECT*FROMdepartmentdINNERJOINemployeeeONd、deptno=e、deptno
左连接
SELECT*FROMdepartmentdLEFTJOINemployeeeONd、deptno=e、deptno
右连接
SELECT*FROMdepartmentdRIGHTJOINemployeeeONd、deptno=e、deptno
自然连接查询
内连接
SELECT*FROMdepartmentdNATURALINNERJOINemployeee
左连接
SELECT*FROMdepartmentdNATURALLEFTJOINemployeee
右连接
SELECT*FROMdepartmentdNATURALRIGHTJOINemployeee
2.3完整性约束(主外键)
2.3.1主键
特点
非空
唯一
被引用
语法
CREATETABLEstu(sidCHAR(6)PRIMARYKEY,snameVARCHAR(20),ageINT,genderVARCHAR(10));
ALTERTABLEstuADDPRIMARYKEY(sid);
CREATETABLEstu(sidCHAR(6),snameVARCHAR(20),PRIMARYKEY(sid));
2.3.2外键
外键必须引用另一张票的主键
CREATETABLEt_section(sidINTPRIMARYKEYAUTO_INCREMENT,snameVARCHAR(30),u_idINT,CONSTRAINTfk_t_userFOREIGNKEY(u_id)REFERENCESt_user(uid));
2.4多表查询
2.4.1合并结果集
笛卡尔积
2.4.2连接查询
内连接
方言
Select*fromempASe,deptASdWHEREemp、deptno=dept、deptno
AS可以省略
标准
SELECT*FROMempeINNERJOINdeptdONe、deptno=d、deptno
INNER可以省略
外连接
左外连接
Select*fromempeLEFTOUTERJOINdeptdONe、deptno=d、deptno
OUTER可以省略
右外连接
Select*fromempeRIGHTOUTERJOINdeptdONe、deptno=d、deptno
OUTER可以省略
自然连接
SELECT*FROMempNATURALJOINdept;
SELECT*FROMempNATURALLEFTJOINdept;
SELECT*FROMempNATURALRIGHTJOINdept;
2.4.3子查询
子查询结果集的形式
Ø单行单列(用于条件)
Ø单行多列(用于条件)
Ø多行单列(用于条件)
Ø多行多列(用于表)
2.5关系模型(表)
2.5.1一对多/多对一
2.5.2多对多
2.5.3一对一
3数据库基础知识
3.1JDBC
3.1.1JDBC(JavaDataBaseConnectivity)就就是Java数据库连接,说白了就就是用Java语言来操作数据库
3.1.2JDBC核心类(接口)介绍
DriverManager
Connection
Statement
用于向数据库发送SQL语句
lvoidexecuteUpdate(Stringsql):
执行更新操作(insert、update、delete等);
lResultSetexecuteQuery(Stringsql):
执行查询操作,数据库在执行查询后会把查询结果,查询结果就就是ResultSet;
批处理
lvoidaddBatch(Stringsql):
添加一条语句到“批”中;
lint[]executeBatch():
执行“批”中所有语句。
返回值表示每条语句所影响的行数据;
lvoidclearBatch():
清空“批”中的所有语句。
PreparedStatement
Statement接口的子接口
优点
Ø防SQL攻击;
Ø提高代码的可读性、可维护性;
Ø提高效率!
API
¨给出SQL模板!
¨调用Connection的PreparedStatementprepareStatement(Stringsql模板);
¨调用pstmt的setXxx()系列方法sql模板中的?
赋值!
¨调用pstmt的executeUpdate()或executeQuery(),但它的方法都没有参数。
批处理
pstmt、addBatch()
ResultSet
rs、next();//光标移动到第一行
rs、getInt
(1);//获取第一行第一列的数据
3.2DBUtils
3.2.1DBUtils就是ApacheCommons组件中的一员,开源免费,就是对JDBC的简单封装
3.2.2API
构造方法
QueryRunnerqr=newQueryRunner();
QueryRunnerqr=newQueryRunner(dataSource)
增删改查
update():
执行insert、update、delete;
query():
执行select语句
publicTquery(Stringsql,ResultSetHandlerrh,Object…params)
publicTquery(Connectioncon,Stringsql,ResultSetHandlerrh,Object…params)
batch():
执行批处理
3.3数据库连接池
3.3.1Java为数据库连接池提供了公共的接口:
javax、sql、DataSource,各个厂商可以让自己的连接池实现这个接口
3.3.2Tomcat配置连接池
JNDI(JavaNamingandDirectoryInterface),Java命名与目录接口。
JNDI的作用就就是:
在服务器上配置资源,然后通过统一的方式来获取配置的资源。
3.3.3DBCP
DBCP就是Apache提供的一款开源免费的数据库连接池
BasicDataSource
3.3.4C3P0
ComboPooledDataSource
C3P0也就是开源免费的连接池
3.4Java中的时间类型
3.4.1java、sql包下的三个时间类型的类都就是java、util、Date的子类
3.4.2java、sql、Date---->java、util、Date不需要转换
3.4.3java、util、Date---->java、sql、Date需要转换
java、utl、Dated=newjava、util、Date();
java、sql、Datedate=newjava、sql、Date(d、getTime());//会丢失时分秒
Timetime=newTime(d、getTime());//会丢失年月日
Timestamptimestamp=newTimestamp(d、getTime());