初学数据库

本文深入探讨了数据库的概念及应用,包括数据库的组成部分、增删改查操作、常用知识点说明等。同时,详细介绍了如何通过Java实现用户注册与登录系统,包括数据库连接、单例设计模式、注册界面实现及完整用户登陆程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据时代

这里写图片描述

一、简介

1、什么是数据库?
数据库是一种存储结构,它允许使用各种格式输入、处理和检索数据,不必在每次需要数据时重新输入。
特点:
实现数据共享
减少数据冗余
数据独立性
数据实现集中控制
数据的一致性和可维护性
2、数据库内容:
DATABASE(库)
TABLE(表)
字段 属性 主键:一个TABLE中不能重复,能用这个值确定唯一的一条数据
外键:一个表中的数据持有的别的表的主键。
mySQL忽略大小写 auto_increment 自增长
3、使用数据库进行增(insert)删(delete)改(update)查(select)

                String insert = "insert intostudent(stu_name,sex,age)value('李四',1,20)";//增加
                state.execute(insert);
                String delete = "delete from student where sex=0 ";//删除
                state.execute(delete);
                String update = "update student set age=18 wherestu_name='李四'";//更改
                state.execute(update);
                String select = "select * from student";// 查找
                ResultSet set = state.executeQuery(select);
                set.first();// 先把游标移动到第一位
         while (!set.isAfterLast()) {// 当游标不是在最后一个
                String name = set.getString("stu_name");
                System.out.println(name);
                set.next();// 游标指向下一个位置

4、常用知识点说明
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
— 创建 备份数据的 device
USE master
EXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_1.dat’
— 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ —like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1

二、用户注册登陆系统

1、首先新建一个User库

public class DatabaseTest {
    public static void main(String[] args) {
        // 导入数据库jar的驱动
        String driver = "com.mysql.jdbc.Driver";
        // URL指向要访问的数据库名
        String url = "jdbc:mysql://localhost:3306/clazz";
        // mysql配置时的用户名
        String user = "root";
        // Java连接mysql配置时的密码
        String password = "123456";

        try {
            Class.forName(driver);// 加载驱动
            Connection con = DriverManager.getConnection(url, user, password);// 与数据库建立连接
            if (!con.isClosed()) {
                Statement state = con.createStatement();
                String table = "CREATE TABLE if not exists user(id int(12) NOT NULL primary key auto_increment ,user_name varchar(30) not null,password varchar(30) not null)";
                state.execute(table);
            }
            System.out.println("执行完成");

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

2、单例设计模式:
首先将修饰符改为private 构造器
公有的静态的方法

public class SQLManager {
    private Statement statement;

    public Statement getStatement() {
        return statement;
    }

    public void setStatement(Statement statement) {
        this.statement = statement;
    }

    private static SQLManager manager;

    public static synchronized SQLManager newInstance() {
        if (manager == null) {
            manager = new SQLManager();
        }
        return manager;
    }

    private SQLManager() {
        // 导入数据库jar的驱动
        String driver = "com.mysql.jdbc.Driver";
        // URL指向要访问的数据库名
        String url = "jdbc:mysql://localhost:3306/clazz";
        // mysql配置时的用户名
        String user = "root";
        // Java连接mysql配置时的密码
        String password = "123456";

        try {
            Class.forName(driver);// 加载驱动
            Connection con = DriverManager.getConnection(url, user, password);// 与数据库建立连接
            // 数据库操作类
            statement = con.createStatement();
            System.out.println("执行完成");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

3、用户注册界面的实现:

        btnNewButton = new JButton("提交");//提交按钮
        btnNewButton.setBounds(103, 170, 93, 23);
        btnNewButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String Username = textFieldUserName.getText();
                String password = textFieldPassword.getText();
                Statement state = SQLManager.newInstance().getStatement();
                String sql = "select * from user where user_name='" + Username + "'";
                try {
                    ResultSet set = state.executeQuery(sql);//运行给定的 sql 语句并返回单一的 ResultSet 对象。
                    set.last();//游标移到最后一行
                    int num = set.getRow();//得到Username的行号
                    if (num > 0) {
                        System.out.println("已存在");
                    } else {
                        String login = "insert into user(user_name,password)value('" + Username + "','" + password
                                + "')";
                        state.execute(login);
                        System.out.println("注册成功");
                    }
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });
        contentPane.add(btnNewButton);

        JLabel label = new JLabel("\u7528\u6237\u540D");//用户名
        label.setBounds(34, 66, 54, 15);
        contentPane.add(label);

        JLabel label_1 = new JLabel("\u5BC6\u7801");//密码
        label_1.setBounds(37, 122, 54, 15);
        contentPane.add(label_1);
    }
}

5、完整的用户登陆程序

public class UserLogin extends JFrame {

    private JPanel contentPane;
    private JTextField textFieldUsername;
    private JTextField textFieldPassword;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    UserLogin frame = new UserLogin();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public UserLogin() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 325, 316);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        /**
        用户名窗口的设计
*/
        textFieldUsername = new JTextField();
        textFieldUsername.setBounds(111, 64, 107, 29);
        contentPane.add(textFieldUsername);
        textFieldUsername.setColumns(10);
        /**密码窗口的设计*/
        textFieldPassword = new JTextField();
        textFieldPassword.setBounds(111, 118, 107, 29);
        contentPane.add(textFieldPassword);
        textFieldPassword.setColumns(10);

        JButton btnNewButton = new JButton("确认");//按钮
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String Username = textFieldUsername.getText();//得到写入的用户名
                String password = textFieldPassword.getText();//得到写入的密码
                Statement state = SQLManager.newInstance().getStatement();
                String sql="select * from user where user_name='"+Username+"' and password='"+password+"'";
                try {
                    ResultSet set = state.executeQuery(sql);
                    set.last();//游标移到最后一行
                    int num = set.getRow();
                    System.out.println(num);
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });
        btnNewButton.setBounds(111, 178, 93, 23);
        contentPane.add(btnNewButton);

        JLabel lblNewLabel = new JLabel("\u7528\u6237\u540D");
        lblNewLabel.setBounds(48, 67, 54, 15);
        contentPane.add(lblNewLabel);

        JLabel lblNewLabel_1 = new JLabel("\u5BC6\u7801");
        lblNewLabel_1.setBounds(48, 121, 54, 15);
        contentPane.add(lblNewLabel_1);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值