MySQL基础和jdbc基础操作
来源:互联网 发布:声音编辑软件中文版 编辑:程序博客网 时间:2024/06/08 02:30
*0 案例:
a)在JavaScript中使用正则表达式,在JS中正则表达式的定界符是://
var regexp = /^[0-9]+$/;
if(regexp.test(num));如果符合正则表达式的规则,返回true,否则返回false。
<body>
<script type="text/javascript">
varnum = 123;
var regexp = /^[0-9]+$/;
alert(regexp.test(num));
</script>
</body>
1 什么是数据库
1)SQL=Structure Query Language
2)存数据的仓库/集合,并有一定的规则结构
3)SQL是客户端操作数据库一种工具/命令,主要以存取为主
2 各种常用数据库简介
Oracle/Java
SQLServler/Microsoft
DB2/IBM
... ...
MySQL->Linux+Apache+MySQL+PHP(最适合)
3 SQL[通用/特定]与数据库的关系
1)每种关系型数据库都支持的SQL命令,叫通用SQL
2)每种关系型数据库都根据自身数据库的特点,量身定作的SQL,叫特定SQL
*4 MySQL数据库的安装,设置,进入和退出
mysql > mysql -u root -p回车
****回车
mysql > exit回车
5 数据库服务器、数据库和表的关系
1:N:M的关系
*6 数据在数据库中的存储方式
*7 创建/使用/查看/删除数据库
create database 数据库名;(以分号结束),SQL命令大小写无关
show databases;
use 数据库名;
*8 修改、备份、恢复数据库数据
备份:
c:\> mysqldump -u root -p mydb2 > d:\mydb2.sql回车(可以无分号结束)
密码回车
注意:该SQL命令是MySQL特有的,必须是MySQL环境外执行,即WindowXp环境中执行
恢复:
mysql:\> source d:\mydb2.sql;回车(需要分号结束)
注意:该SQL命令是MySQL特有的,必须是MySQL环境中执行。
9 MySQL支持数据类型简介
(1)Date/Datetime/TimeStamp,定界符使用''或"",但部份数据库可能不支持"",优先推荐''作为定界符,对于日期类型, MySQL数据库有一个的判段-功能
(2)varchar(变长)/char(定长)
(3)Text(大于65536字符的数据)/Blob(存储二进制多媒体数据,例如Mp3等),该二类型都有四个子类型,根据存储内容的大 小进行选择
(4)INT型有带符号和无符号之分,int(5)表示int默认为5位,如果插入id值,小于5位,左补空格,如果插入id值,大于5位,按 照插入值,但必须满足int类型的大小确定
(5)FLOAT(M,D),D表示小数点后的D位,按四舍五入计算,M表示除小数点外的所有位数总和
*10 创建/查看/修改/删除表
create table 表名
show create table 表名
desc 表名
drop table 表名
MySQL(MyISAM数据库引擎和InnoDB(支持表间查询,事务安全,)
11 MySQL解决插入中文乱码问题(WindowXP平台)
二种解决方案:
a)在当前MySQL客户端修改输入和输出的MySQL环境变量为GBK或GB2312,注意,该种方式只在当前窗口中有效
b)修改MySQL目录下的my.ini文件,将客户端的缺省编码方式改为GBK或GB2312,注意,需要重新启动MySQL服务
*12 表的 增删改 操作
a)insert
b)update
3)delete from 或truncate table或drop table
delete from:按行删除表中的所有记录,但会保留表,适合删除数据量不大的数据,可按条件删除
truncate table:复制原表结构-〉一次性删除整表-> 自动恢复原表结构,适合删除数据量较大的数据,不能按条件删除
drop table:删除表本身
删除记录时,一定要留意表间的关联关系
*13 表的 查询 操作
(1)select distinct/*/列名 from表名
(2)select 表达式/对列名加别名from 表名
NULL+X=NULL
(3)where子句,出现在from后面,where是按行筛选
(4)逻辑运算和关系运算
(5)排序:NULL值为最小,使用order by子句,默认升序,order by子句必须放置在最后
14 复合函数
(1)count()函数,统计之用,不统计NULL值
(2)sum()函数,统计和之用,不要统计非数值,如果统计非数值,返回0
15 表的约束
16 表的关联
0 合计函数
avg()
max(),min(),当max()和min()函数位于日期类型时,分别取得最近日期和最早日期
1 表的完整性
(1)实体完整性:每条记录有一个唯一标识符,通常用无任何业务含义的字段表示
(2)参照完整性:一张表的某个字段必须引用另一张表的某个字段值
(3)域完整性:域即单元数据,域中的数值必须符合一定的规则
2 键的概念
(1)主键:只有唯一字段
(2)组合主键:由多个字段组合起来,形成唯一字段
(3)外键:针对多张表之间的关联
3 主键的特点
(1)主键不能重复,唯一,
(2)主键不能为NULL,非空
(3)auto_increment是MySQL特有的,默认从1开始,该ID值与表同生亡
(4)多人项目中,通常使用UUID来生成唯一的主键值,便于多个合并数据时依然保持实体完整性
4 唯一约束的特点
(1)非NULL值不能重复
(2)可以插入多个NULL值
(3)'NULL'空串和NULL是不同的概念
5 非空约束特点
(1)不能插入NULL值
(2)主键约束=非NULL约束+唯一约束
6 外健特点
(1)外键值必须来源于所引用别一个表主键值,或NULL
*7 关联关系
(1)一对一(外健根业务有关)
(2)一对多或多对一(外键放置在多方)
(3)多对多(外健放置在关联表中,即将一个多对多拆分成二个一对多关系)
8 什么是JDBC?为什么使用JDBC
1)SUN公司为使Java程序灵活的访问各种不同的关系型数据库提供的规则。
2)为什么使用JDBC?
a)降低Java程序操作数据库的成本
b)使Java程序灵活移植
*9 祥解JDBC连接数据库的各个步骤
package cn.itcast.web.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
//体验JDBC开发的过程
public class Demo1 {
public static void main(String[]args) throws Exception {
//注册数据库的驱动
//DriverManager.registerDriver(new Driver());
//利用反射机制间接加载数据库驱劝
Class.forName("com.mysql.jdbc.Driver");
//取得与MySQL数据库连接的桥梁
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/mydb2","root","root");
//创建封装SQL命令的对象
String sql = "select * from user";
Statement stmt = conn.createStatement();
//执行SQL命令,并返回符合条件的记录集合
ResultSet rs = stmt.executeQuery(sql);
//处理结果集合
while(rs.next()){
int id =rs.getInt("id");
String name = rs.getString("name");
String gender = rs.getString("gender");
float salary =rs.getFloat("salary");
System.out.println(id+":"+name+":"+gender+":"+salary);
}
//依次关闭所用过的连接对象
rs.close();
stmt.close();
conn.close();
}
}
1)注册驱动:DriverManager.registerDriver(new com.mysql.jdbc.Driver());
java.sql.Driver(接口)-com.mysql.jdbc.Driver(实现类)
(首先返回true)boolean acceptsURL(String url)
查询驱动程序是否认为它可以打开到给定 URL 的连接。
(然后)Connection connect(String url, Properties info)
试图创建一个到给定 URL 的数据库连接。
注意:上述代码会向DriverManager注册二次相同的MySQL驱动,其中一次在Driver实现类中
项目中推荐使用以下代码间接注册数据库驱动:
Class.forName("com.mysql.jdbc.Driver");
优点:
a)只注册一次
b)无需导入与具体数据库驱动相关的包
2)获取数据库连接对象:
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/mydb2","root","root");
3)关闭流
a)依次按resul->statement->connection顺序关闭
b)在能完成业务的情况下,尽早关闭
*10 JDBC的六个固定步骤
1,注册数据库驱动[利用反射]
2,取得数据库连接对象Connection
3,创建SQL对象
4,执行SQL命令,并返回结果集
5,处理结果集
6,依次关闭结果集
*11 使用JDBC完成CURD操作
insert/update/delete----Statement.executeUpdate(sql):返回值表示影响记录的行数
select------------------Statement.exeucteQuery():返回值表示符合条件的记录
create------------------ ?
drop-------------------- ?
package cn.itcast.web.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import org.junit.Test;
//基于JDBC的CURD操作
public class Crud {
@Test
public void create(){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "insert into user(id,name,gender,salary) values(4,'丝丝','felmale',3000)";
try {
conn = JdbcUtil.getMySqlConnection();
stmt = conn.createStatement();
int i = stmt.executeUpdate(sql);
System.out.println(i>0?"成功":"失败");
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUtil.close(rs);
JdbcUtil.close(stmt);
JdbcUtil.close(conn);
}
}
@Test
public void read(){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "select * from user where gender='male'";
try {
conn = JdbcUtil.getMySqlConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
String name = rs.getString("name");
String gender = rs.getString("gender");
System.out.println(name+":"+gender);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUtil.close(rs);
JdbcUtil.close(stmt);
JdbcUtil.close(conn);
}
}
@Test
public void update(){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "update user set gender='female' where id = 8";
try {
conn = JdbcUtil.getMySqlConnection();
stmt = conn.createStatement();
int i = stmt.executeUpdate(sql);
System.out.println(i>0?"成功":"失败");
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUtil.close(rs);
JdbcUtil.close(stmt);
JdbcUtil.close(conn);
}
}
@Test
public void delete(){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "delete from user where salary IS NULL";
try {
conn = JdbcUtil.getMySqlConnection();
stmt = conn.createStatement();
int i = stmt.executeUpdate(sql);
System.out.println(i>0?"成功":"失败");
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUtil.close(rs);
JdbcUtil.close(stmt);
JdbcUtil.close(conn);
}
}
@Test
public void read(String name){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "select * from user where name='"+name+"'";
System.out.println("sql="+sql);
try {
conn = JdbcUtil.getMySqlConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
//while(rs!=null)
name = rs.getString("name");
String gender = rs.getString("gender");
System.out.println(name+":"+gender);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUtil.close(rs);
JdbcUtil.close(stmt);
JdbcUtil.close(conn);
}
}
public void createTable(String tableName){
}
public void dropTable(String tableName){
}
public static void main(String[] args) {
Crud crud = new Crud();
//crud.read(" 'or true or' ");
crud.createTable("system");
crud.dropTable("system");
}
}
- MySQL基础和jdbc基础操作
- JDBC基础--连接和操作
- jdbc 连接mysql 的基础操作
- JDBC数据库基础操作(Mysql)
- JDBC 的基础操作之 mysql
- JDBC基础操作DOME
- JDBC 基础操作
- jdbc操作数据库基础
- JDBC基础操作DOME
- JDBC基础操作DOME
- jdbc基础操作
- JDBC基础操作
- JDBC基础操作一套
- Mysql-JDBC基础
- 【mysql】mysql基础操作
- java基础---->jdbc数据库操作
- JAVA web基础-JDBC操作
- Java基础 JDBC操作数据库
- Java 按需打印菱形 LOL
- HTTP响应状态码含义
- 什么时候触发GC
- 设计模式-组合模式-composite-python??
- JVM性能调优之生成堆的dump文件
- MySQL基础和jdbc基础操作
- HTTP常链接和短链接
- javascript Date format(js日期格式化)
- JVM GC调优一则--增大Eden Space提高性能
- java匿名内部类实现工厂方法模式
- 浅谈HTTP GET POST
- 2017.08.09
- js内存泄露的几种情况
- hadoop 分片与分块,map task和reduce task的理解