1. 数据库概述
  2. 数据库: 我们简单的理解数据库就是存储数据的仓库,本质上数据库也是一个系统文件按照特定的格式存储数据。
  3. 作用: 存储数据,并且可以对数据库中的数据进行crud操作。
  4. 数据库历史发展:

层次结构模型数据库管理系统

网状结构模型数据库管理系统

关系型结构数据库管理系统

非关系(面向对象)型数据库管理系统 NoSql redis. ……

  1. 常见关系型数据库:

oracle oracle 收费跨平台 非互联网大公司用的最多的数据库

DB2 IBM 收费跨平台 晚于Oracle的大型数据库

SQlServer 微软 中型数据库 不跨平台

Sybase sap 收费跨平台 大型数据库

mysql Oracle 跨平台(不同版本)开源免费 互联网公司以及小公司用的最多的数据库

  1. sql
    1. 概述: 是Structured Query Language(结构化查询语言) ,我们可以通过sql对数据库进行管理和操作
    2. 分类:

    ①DDL:(Database Definition Language)数据库定义语言 主要作用:创建库创建表 create alter drop

②DML:(Database Manipulation language)数据库操作语言,主要作用:对数据库增删改 delete update insert

③DQL:(Database Query language)数据库查询语言,主要作用:对数据库中的数据进行查询

④DCL:(Database Control language)数据库控制语言,权限控制(了解)

  1. 创建库的操作:

(1) 创建库:

    create datebase 库名

    create database 库名 character set 编码集

(2) 查看库:

    show character set; 查看数据库支持的字符集

    show database ; 查看当前系统中有多少个数据库

    show create database 库名; 查看我们创建相应库的信息

    select database(); 查看当前所在的库

(3) 删除数据库:

    drop database 库名;

(4)    修改数据库编码:

    alter database 库名 character set 编码集;

    alter database 库名char set 编码集;

  1. 选择库:

use 库名;

 

  1. 创建表操作:
  2. 语法:

create table 表名(

字段 字段的类型 【约束】,

…….

最后一行

);

注意:非最后一行必须加逗号,最后一行不能加任何符号。

  1. 数据类型:

java     mysql

int     int

float     float

    double     double

    String     char/varchar:字符串。varchar长度可以改变,char长度指定。

     varchar(32) char(18);

       如果已知的长度固定就用char。

    Date     date time datetime timstamp(时间戳)

 

Datetime和timstamp区别:

Datetime默认null,

timestamp默认当前时间

  1. 约束:

    primary key 主键约束

    not null :非空约束

    unique:唯一约束

    default:默认约束。

    foreign key:外键约束 :将两个表联系到一起。

  2. 查看表:

    show tables; 查看当前库中有多少个表

    desc 表名; 查看相应表的详细数据

  1. 删除表:

    drop table 表名;

  2. 修改操作

    alter table 表名 add 列名 类型(长度) ;         –添加列.

    alter table 表名 modify 列名 类型(长度) ;    -改列的类型.

    alter table 表名 change 旧列名 新列名 类型(长度) 约束;    –修改表的列名.

    alter table 表名 drop 列名;                    –删除列.

    /rename table 表名 to 新表名;                    –修改表名

    alter table 表名 rename to 新名; –修改表名

    //alter table 表名 character set 字符集;        –修改表的字符集

    //show create table taname\G;

  3. 增删改查crud:

(1) 增:insert:

insert into 表名 values(字段值…..)

insert into 表名 (字段…) values (值。。。)

(2) 删:delete:

    delete from 表名 where条件

如果我们不写where条件,我们会将数据库中的数据信息完全删除。

    truncate table 表名:

给我的带来的效果是将数据库中的表中的信息都进行了删除。

(3) 改:update:

    update 表名 set 字段 = xxxx where条件

(4) 查:select:

执行顺序

select 信息 from 表明 where[条件] 排序

(1)找表。

(2)条件

(3)结果

(4)排序

(5)分页

 

    #查询语句: SELECE 列名1,列名2,…FROM 表;

    SELECT gname,price FROM goods;

SELECT *FROM goods;    #*代表所有列

SELECT gname AS 商品名 ,price AS 价格 FROM goods;

SELECT gname ,price AS 涨价前,price*1.2 AS 涨价后 FROM goods;

    SELECT gname,price FROM goods WHERE price>22;

SELECT gname,address FROM goods WHERE price<>35; # <>表示不等于,与!=等效

    #模糊查询 like 其中_表示一个字符,%表示任意个字符

SELECT *FROM goods WHERE gname LIKE ‘%果’; #以果结尾

SELECT *FROM goods WHERE address LIKE ‘%山%’;

SELECT *FROM goods WHERE gname LIKE ‘_果_’;

    #in查询

SELECT *FROM goods WHERE price IN(5,10,15,20);

    #betwen and 查询,包含首位数据

SELECT *FROM goods WHERE price>=10 AND price <=20;

SELECT *FROM goods WHERE price BETWEEN 10 AND 20;

SELECT *FROM goods WHERE DATETIME BETWEEN ‘2016-06-22’ AND ‘2016-08-08’;

    #null

SELECT *FROM goods WHERE DATETIME IS NULL;#判断为空

SELECT *FROM goods WHERE DATETIME IS NOT NULL;#判断不为空

    #排序

SELECT *FROM goods ORDER BY price; #自然顺序,升序排列

SELECT *FROM goods ORDER BY price DESC;#降序排列

SELECT *FROM goods WHERE price <33 ORDER BY price DESC LIMIT 5; #限制个数5个

    #聚合函数

SELECT SUM(price) FROM goods;

SELECT AVG(price) FROM goods WHERE price <20;

SELECT COUNT(gname) FROM goods;

    #分组查询 先分组,后计算

SELECT unit ,COUNT(*) FROM goods GROUP BY unit;

SELECT address ,AVG(price) FROM goods GROUP BY address;

SELECT address,AVG(price) FROM goods GROUP BY address HAVING AVG(price)<15;#注意having后面不能直接写成price,必须是AVG(price)

SELECT unit ,AVG(price) FROM goods WHERE price<15 GROUP BY unit;

 

#注意:where和having区别:where是在分组之前条件筛选,having是在分组运算后条件

筛选

  1. JDBC:
  2. 概述: 我们用jdbc对对数据库进行连接,并操作数据库中的数据
  3. java提供的操作数据库的api

    Driver —– 代表驱动对象

    Connection —连接对象

    Statement —操作数据库的对象

    ResultSet —结果对象

  4. jdbc操作数据库基本步骤:

    1.注册驱动

    2.获取连接对象

    3.获得操作数据库的对象

    4.执行sql语句

    5.返回结果集

    6.释放资源

(4) JDBCUtils :

    

package cn.itcast.utils;

 

import java.io.FileReader;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Properties;

 

 

 

public
class JdbcUtils {

    private
static
final String drivername;

    private
static
final String url;

    private
static
final String user;

    private
static
final String password;

    

    static{

        Properties pp = new Properties();

        try {

            pp.load(new FileReader(“jdbc.properties”));

            

        } catch (IOException e) {

            e.printStackTrace();

        }

        drivername = pp.getProperty(“drivername”);

        url = pp.getProperty(“url”);

        user = pp.getProperty(“user”);

        password= pp.getProperty(“password”);

        

    }

    static{

        try {

            // 注册驱动

            Class.forName(drivername);

        } catch (ClassNotFoundException e) {

            e.printStackTrace();

        }

    }

    //获取连接

    public
static Connection getConnection(){

        try {

            return DriverManager.getConnection(url, user, password);

        } catch (SQLException e) {

            e.printStackTrace();

        }

        return
null;

    }

    //释放资源

    public
static
void coloseResoure(Connection con,Statement stat,ResultSet rs){

        if (rs!=null) {

            try {

                rs.close();

            } catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            rs=null;

        }

        

        if (stat!=null) {

            try {

                stat.close();

            } catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            stat=null;

        }

        

        if (con!=null) {

            try {

                con.close();

            } catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            con=null;

        }

    }

    //方法重载

    public
static
void coloseResoure(Connection con,Statement stat){

        if (stat!=null) {

            try {

                stat.close();

            } catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            stat=null;

        }

        

        if (con!=null) {

            try {

                con.close();

            } catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            con=null;

        }

    }

    

}

  1. 增删改查案例:

 

package cn.itcast_01;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

import org.junit.Test;

 

import cn.itcast.utils.JdbcUtils;

 

public
class Demo02 {

    @Test

    public
void insertTest() throws ClassNotFoundException, SQLException {

        // 1.注册驱动

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

        // 2.获取连接对象

        Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/bj232”, “root”, “root”);

        // 3.获取操作数据库对象

        Statement stat = con.createStatement();

        // 4.执行sql

        String sql = “INSERT INTO goods VALUES(null,’榴莲‘,30,’海南‘,’‘,’2016-08-08’)”;

        int
i = stat.executeUpdate(sql);

        System.out.println(i);

        // 5.释放资源

        stat.close();

        con.close();

    }

    

    @Test

    public
void updateTest() throws SQLException{

        //获得连接对象

        Connection con = JdbcUtils.getConnection();

        //获得执行数据库对象

        String sql=“update goods set address=’shanxi’ where id=?”;

        PreparedStatement stat = con.prepareStatement(sql);

        

        stat.setInt(1, 1);

        //执行sql

        int
i = stat.executeUpdate();

        System.out.println(i);

        

        //关闭资源

        JdbcUtils.coloseResoure(con, stat);

        

    }

    

    @Test

    public
void deleteTest() throws SQLException{

        //获取连接对象

        Connection con = JdbcUtils.getConnection();

        //获得执行数据库对象

        String sql = “delete from goods where gname=?”;

        

        PreparedStatement stat = con.prepareStatement(sql);

        stat.setString(1, 香蕉);

        

        //执行sql

        int
i = stat.executeUpdate();

        System.out.println(i);

        //关闭资源

        JdbcUtils.coloseResoure(con, stat);

    }

    

    @Test

    public
void selectTest() throws SQLException{

        //获取连接对象

        Connection con = JdbcUtils.getConnection();

        //获得执行数据库对象

        String sql =“select *from goods where price<20”;

        PreparedStatement stat = con.prepareStatement(sql);

        //执行sql

        ResultSet rs = stat.executeQuery();

        //返回结果集

        while (rs.next()) {

            String gname = rs.getString(2);

            System.out.println(gname);

        }

        //关闭资源

        JdbcUtils.coloseResoure(con, stat, rs);

    }

}

 

相关笔试题:

1.
sql分类】(笔试题)

DDL:(Database Definition Language)数据库定义语言


主要作用:创建库,创建表
create alter drop

DML:(Database Manipulation language)数据库操作语言


主要对作用:对数据库增删改

delete update insert

DQL:(Database Query language)数据库查询语言


主要对数据库中的数据进行查询

select

DCL:(Database Control Language)数据库控制语言


权限控制。(了解)

2. 我们在使用jdbc之前需要首先导入jar包

jdbc操作数据库的基本步骤(笔试题)

1:注册驱动

2:获取连接对象

3:获得操作数据库的对象 并且执行语句

4:返回处理结果

5:释放资源

3.删除表中所有记录使用delete from 表名;还是用truncate table 表名?

    删除方式:delete 一条一条删除,不清空auto_increment记录数

             truncate:直接将表删除,重新建表,auto_increment将置0

    事务方面:delete 删除的数据,如果在一个事务中可以找回

truncate:删除的数据找不回,

发表评论

电子邮件地址不会被公开。 必填项已用*标注