MYSQL记录

数据库xxx语言:

DDL:定义

DML:操作

DQL:查询

DCL:控制

show tables; -- 查看数据库中的所有表
describe student(数据库名); -- 显示数据库中的所有的表的信息


create database westos(数据库名); -- 创建数据库

exit; -- 退出连接

 -- 单行注释
/*   多行注释

*/

delete和truncate的区别

create table `text`(
    `id` int(5) not null auto_increment,
    `coll` varchar(20) not null,
    primary key(`id`)
)enging = innodb default charset = utf8  -- innodb 为表引擎


insert int `test`(`coll`) values (`1`),(`2`),(`3`)

delete form `test`  -- 不会影响自增,即下次id为4开始

truncate table `test` -- 自增会归零
  • InnoDB  自增列会从1开始(存在内存当中的,断电即失)
  • MyISAM  继续从上一个自增量开始(存在文件中的,不会丢失)

where条件子句

作用:检索数据中 符合条件 的值

搜索的条件由一个或者多个表达式组成

运算符语法描述
and && a and b      a && b逻辑与   两者为真,结果为真
or ||a or b      a || b逻辑或    只要其一为真,结果为真
Not  !not a      ! a逻辑非    a为真,结果为假
select studentNo,studentResult form result

-- 查询成绩在95~100之间
select studentNo,studentResult form
where studentResult >= 95 and studentresult <= 100

-- 模糊查询(区间查询)
select studentNo,studentResult form result
where studentResult between 95 and 100

-- 除了1000号学生之外的同学的成绩
select studentNo,studentResult form result
where studentResult != 1000

-- != not
select studentNo,studentResult form result
where not studentResult = 1000

模糊查询(比较运算符)

运算符语法描述
is nulla is null如果操作符为null,结果为真
is not nulla is not null如果操作符不为null,结果为真
betweena between b and c若a在b和c之间,结果为真
likea like bSQL匹配,如果a匹配b,结果为真
ina in(a1,a2,a3)假设a在a1,或者a2...其中的某一个值中,结果为真

事务

ACID原则

  • 原子性():要么都成功,要么都失败
  • 一致性():事务前后的事务完整性要保持一致
  • 持久性():事务一旦提交则不可逆,被持久化到数据库中
  • 隔离性():事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间要相互隔离。

隔离导致的一些问题

  • 脏读:指一个事务读取了另外一个事务未提交的数据。
  • 不可重复读:在一个事务内读取表中的某一行数据,多次读取的结果不同。(这个不一定是错误,只是某些场合不对)
  • 虚读(幻读):是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

数据库的规约,三大范式

  • 第一范式(1NF)

        原子性:保证每一列不可再分

  • 第二范式(2NF)

        前提:满足第一范式

        每张表只描述一件事情

  • 大三范式(3NF)

        前提:满足第一范式和第二范式

        第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

规范性和性能的问题

关联查询的表不得超过三张表

考虑商业化的需求和目标,(成本和用户体验等)数据库的性能更加重要

再规范性能的问题的时候,需要适当的考虑一下规范性

故意给某些表增加一些冗余的字段。(从多表查询中变为单表查询)

故意增加一些计算列(从大数据量降为小数据量的查询:索引)

JDBC程序

import java.sql.*;


public class JDBCDemo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        
        //用户信息和url
        String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
        String name = "root";
        String password = "";
        
        //连接成功,数据库对象connection代表数据库
        Connection connection = DriverManager.getConnection(url,name,password);

        //执行SQL的对象statement 执行SQL对象
        Statement statement = connection.createStatement();
        
        //执行SQL的对象去执行SQL,可能存在结果,查看返回结果
        String sql = "SELECT * FROM users";

        //返回的结果集
        ResultSet resultSet = statement.executeQuery(sql);
        
        //释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

步骤总结:

  1. 加载驱动
  2. 连接数据库DriverManager
  3. 获得执行SQL的对象Statement
  4. 获得返回的结果集
  5. 释放连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值