一、常用函数
1.字符串函数
1)convert(n,from_base,to_base)
将from_base进制的n转换成to_base的数
2)concat(str1,str2,...)
拼接函数
3)lpad(str,len,padstr) / rpad(str,len,padstr)
用padstr将str的长度补位至len
4)left(str,len)/right(str,len)
返回字符串str的左端/右端的len个字符
substring(str from pos for len)
返回字符串str的位置pos起len个字符
5)length(str)/octet_length(str)
返回参数对应的默认字符集的所有字节数。
char_length(str)/character_length(str)
返回字符串str的字符长度
6)ltrim(str)/rtrim(str)
返回删除了左空格/右空格的字符串str
7)lcase(str)/lower(str)/ucase(str)/upper(str)
返回str的大小写
8)replace(str,from_str,to_str)
用字符串to_str替换字符串str中的子串from_str并返回
insert(str,pos,len,newstr) 作用
把字符串str由位置pos起len个字符长的子串替换为字符串newstr并返回
2.数值函数
1.幂函数
pow(x,y)/power(x,y) :返回值x的y次幂
2.平方根函数
sqrt(n) :返回非负数n的平方根
3.圆周率函数
pi() : 返回圆周率
4.随机函数
rand()/rand(n) :返回在范围0到1.0内的随机浮点值(可以使用数字n作为初始值)
5.截取函数
truncate(n,d) : 保留数字n的d位小数并返回
6.求最小/大值函数
least(x,y,...) /greatest(x,y,...)
7.取模函数
mod(n,m) :取模运算,返回n被m除的余数(同%操作符)
8.向上/下取整函数
ceiling(n)/floor(n)
9.四舍五入函数
round(n,d) :返回n的四舍五入值,保留d位小数(d的默认值为0)
3.日期函数
1.获取当前系统时间的函数
curdate()/curtime()/now()/sysdate()/current_timestamp();
2.获取星期几的函数
dayofweek(date): 1=星期天 weekday(date) 0=星期一 dayname(date)
3.获取第几天的函数
dayofmonth(date); dayofyear(date); monthname(date);
4.截取时间分量函数
year(date); month(date); day(date); hour(date); minute(date); second(date);
5.日期运算函数
date_add(date,interval expr type) / date_sub(date,interval expr type)
adddate(date,interval expr type) / subdate(date,interval expr type)
对日期时间进行加减法运算。(也可以用运算符+和- date:一个datetime或date值;
expr:对date进行加减法的一个表达式字符串;
type指明表达式expr应该如何被解释)
6日期格式化函数
date_format(date,format) :根据format字符串格式化date值
%Y:年 %m月 %d日 %h时 %i分 %s秒 %p 上下午 %W星期
二、数据库的备份和恢复
方法1 手动复制的方法
a.可以先登陆mysql 查看数据文件的位置:
show global variables like '%datadir%'
b.在某一个位置创建备份目录backup. 比如:D:\backup
c.将%datadir%下的所有文件,copy到backup下。
d.先模拟某一个数据库mydb毁坏。drop database mydb;
e.先终止服务项。再将所有的数据,copy到%datadir%下。然后再去查看。
方法2 使用mysqldump命令进行备份
a.在命令提示符下输入(别登陆到mysql内):
mysqldump -uUsername -pPwd --all-databases > filename.sql #备份所有数据库
b.备份一部分数据库
mysqldump -uUsername -pPwd --databases dbname1 dbname2 > filename.sql
c.备份某个数据库中的某些表
mysqldump -uUsername -pPwd dbname tablename1 tablename2 > filename.sql
d.恢复数据
登入到mysql内,使用source命令
语法: source filename.sql
三、JDBC与ODBC的区别
1.需求
早期的数据库应用程序开发,因为没有通用的针对于数据库的编程接口,
所以开发人员需要学习相关数据库的API,才可以进行应用程序开发,这样增加了学习成本和开发周期。
因此整个开发市场一直在呼吁有一套通用的编程接口。
2.ODBC
Microsoft定义了一组用于数据库应用的编程接口ODBC(open database connectivity)。
大大缩短开发周期。
1.应用程序:开发人员所写代码,ODBC提供的调用接口
2.驱动程序管理器:用于管理驱程序
3.驱动程序:对接口的实现部分,数据库厂商完成
4.数据源:连接数据库的一些参数
3.JDBC
sun公司参考ODBC方案,一组专门为java语言连接数据库的通用接口。
JDBC不直接依赖于DBMS,而是通过驱动程序将sql语句转发给DBMS,有DBMS进行解析执行,处理结果返回。
四、JDBC工作原理
1.工作原理
第一步:注册驱动程序
第二步:请求连接
第三步:获取执行SQL语句的对象,发送至DBMS
第四步:返回结果集,程序员进行处理
第五步:关闭连接操作
2.常用的接口和类
1.java.sql.DriverManager 类
getConnection(String url, String user, String password)
用于连接数据库,返回Connection对象
url:连接指定数据库的地址 jdbc:mysql:// ip : port/dbname
user:连接用户名
password:密码
2.java.sql.Connection 接口
createStatement()
用于获取Statement对象
3.java.sql.Statement 接口
execute(String sql) 通常用于DDL
executeUpdate(String sql) 通常用于DML
executeQuery(String sql) 通常用于DQL
4.java.sql.Result 接口
子类型封装了DQL的返回值
next()
getDate()
getString()
五、JDBC代码实现
1.编写步骤
1.创建项目,加载相应的静态资源
jar包 add as Library
2.注册驱动
3.建立连接
4.获取执行对象
5.处理结果集
6.关闭连接
2. Demo
> 需要JDBC的jar包
> 在项目根目录下新建一个文件夹lib,将jar包直接复制到lib文件夹中,右键Add as library
import java.sql.*;
public class TestJDBC {
public static void main(String[] args){
Connection conn = null;
Statement statement = null;
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.建立连接
// 在建立连接时,需要指定url,username和pwd
//mysql指定的是jdbc:mysql://ip:3306/数据库名
conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/dbName", "root", "123456");
//3.获取执行SQL的对象--Statement
statement = conn.createStatement();
//4.调用方法,执行SQL
//SQL根据需求自己写
String sql = "insert into tbname values(val1,val2,val3,...)";
int res = statement.executeUpdate(sql);
//因为是插入操作,所以返回影响行数,打印在控制台上
System.out.println("Affected rows:" + res);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
//5.关闭连接
// 最好分别使用try/catch对连接进行关闭,这样能保证不会因为抛出异常都漏关一个
try {
if (statement != null)
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}