当前位置:文档之家› 数据库基本知识(自己整理,初学者可以看一下,基于某MySql)

数据库基本知识(自己整理,初学者可以看一下,基于某MySql)

数据库1常见数据库1.1MySql : 甲骨文1.2Oracle: 甲骨文1.3SQL Server: 微软1.4Sybase: 赛尔斯1.5DB2: IBM2MySql基础知识2.1关系结构数据模型数据库2.2SQL(Structured Query Language)结构化查询语言2.2.1DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等操作数据库CREATE DATABASE [IF NOT EXISTS]mydb1USE mydb1DROP DATABASE [IF NOT EXISTS] mydb1ALTER DATABASE mydb1 CHARACTER SET utf8操作表插入表CREATE TABLE stu( sid CHAR(6), sname VARCHAR(20), age INT, gender VARCHAR(10) );更改表ALTER TABLE t_user ADD (student varcher(20))ALTER TABLE t_user MODIFY gender CHAR(20)ALTER TABLE t_user CHANGE gender VARCHER(20)ALTER TABLE t_user REMANE genderTO gendersALTER TABLE t_user DROP gender删除表DROP TABLE t_user2.2.2DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)插入数据INSERT INTO t_user VALUES()INSERT INTO 表名 VALUES(值1,值2,…)更新数据UPDATE t_user SET name=""UPDATE 表名 SET 列名1=值1, …列名n=值n [WHERE 条件]删除数据虽然TRUNCATE和DELETE都可以删除表的所有记录,但有原理不同。

DELETE的效率没有TRUNCATE 高!TRUNCATE其实属性DDL语句,因为它是先DROP TABLE,再CREATE TABLE。

而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)。

DELETE FROM t_userDELETE FROM 表名 [WHERE 条件]TRUNCATE TABLE stu;TRUNCATE TABLE 表名2.2.3DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别创建用户CREATE USER 用户名@地址 IDENTIFIED BY '密码';给用户授权GRANT 权限1, … , 权限n ON 数据库.* TO 用户名查看用户权限SHOW GRANTS FOR 用户名撤销用户权限REVOKE权限1, … , 权限n ON 数据库.* FORM 用户名删除用户DROP USER 用户名修改用户名密码UPDATE USER SET PASSWORD=PASSWORD('1234') WHERE User='user2' and Host=’localhost’; FLUSH PRIVILEGES;2.2.4DQL(Data Query Language):数据查询语言,用来查询记录(数据)基础查询SELECT selection_list /*要查询的列名称*/FROM table_list /*要查询的表名称*/WHERE condition /*行条件*/GROUP BY grouping_columns /*对结果分组*/HAVING condition /*分组后的行条件*/ORDER BY sorting_columns /*对结果分组*/LIMIT offset_start, row_count /*结果限定*/模糊查询SELECT * FROM t_user WHERE name LIKE'____'聚合函数COUNT(); MAX();MIN();AVG();SUM();多表查询连接查询内连接SELECT * FROM department d INNER JOIN employee e ON d.deptno = e.deptno 左连接SELECT * FROM department d LEFT JOIN employee e ON d.deptno = e.deptno 右连接SELECT * FROM department d RIGHT JOIN employee e ON d.deptno = e.deptno 自然连接查询内连接SELECT* FROM department d NATURAL INNER JOIN employee e左连接SELECT* FROM department d NATURAL LEFT JOIN employee e右连接SELECT* FROM department d NATURAL RIGHT JOIN employee e2.3完整性约束(主外键)2.3.1主键特点非空唯一被引用语法CREATE TABLE stu( sid CHAR(6) PRIMARY KEY, sname VARCHAR(20), age INT, gender VARCHAR(10) );ALTER TABLE stu ADD PRIMARY KEY(sid);CREATE TABLE stu( sid CHAR(6), sname VARCHAR(20), PRIMARY KEY(sid) );2.3.2外键外键必须引用另一张票的主键CREATE TABLE t_section( sid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(30), u_id INT, CONSTRAINT fk_t_user FOREIGN KEY(u_id) REFERENCES t_user(uid) );2.4多表查询2.4.1合并结果集笛卡尔积2.4.2连接查询内连接方言Select * from emp AS e, dept AS d WHERE emp.deptno= dept.deptnoAS可以省略标准SELECT * FROM emp e INNER JOIN dept d ON e.deptno = d.deptno INNER 可以省略外连接左外连接Select * from emp e LEFT OUTER JOIN dept d ON e.deptno = d.deptno OUTER可以省略右外连接Select * from emp e RIGHT OUTER JOIN dept d ON e.deptno = d.deptno OUTER可以省略自然连接SELECT * FROM emp NATURAL JOIN dept;SELECT * FROM emp NATURAL LEFT JOIN dept; SELECT * FROM emp NATURAL RIGHT JOIN dept;2.4.3子查询子查询结果集的形式Ø单行单列(用于条件)Ø单行多列(用于条件)Ø多行单列(用于条件)Ø多行多列(用于表)2.5关系模型(表)2.5.1一对多/多对一2.5.2多对多2.5.3一对一3数据库基础知识3.1JDBC3.1.1JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库3.1.2JDBC核心类(接口)介绍DriverManagerConnectionStatement用于向数据库发送SQL语句l void executeUpdate(String sql):执行更新操作(insert、update、delete 等);l ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;批处理l void addBatch(String sql):添加一条语句到“批”中;l int[] executeBatch():执行“批”中所有语句。

返回值表示每条语句所影响的行数据;l void clearBatch():清空“批”中的所有语句。

PreparedStatementStatement接口的子接口优点Ø防SQL攻击;Ø提高代码的可读性、可维护性;Ø提高效率!API¨给出SQL模板!¨调用Connection的PreparedStatement prepareStatement(String sql模板);¨调用pstmt的setXxx()系列方法sql模板中的?赋值!¨调用pstmt的executeUpdate()或executeQuery(),但它的方法都没有参数。

批处理pstmt.addBatch()ResultSetrs.next();//光标移动到第一行rs.getInt(1);//获取第一行第一列的数据3.2DBUtils3.2.1DBUtils是Apache Commons组件中的一员,开源免费,是对JDBC的简单封装3.2.2API构造方法QueryRunner qr = new QueryRunner();QueryRunner qr = new QueryRunner(dataSource)增删改查update():执行insert、update、delete;query():执行select语句public <T> T query(String sql, ResultSetHandler<T> rh, Object… params)public <T> T query(Connection con, String sql, ResultSetHandler<T> rh, Object… params)batch():执行批处理3.3数据库连接池3.3.1Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商可以让自己的连接池实现这个接口3.3.2Tomcat配置连接池JNDI(Java Naming and Directory Interface),Java命名和目录接口。

相关主题