SQL学习笔记

基础部分

查询 SELECT DATABASES;

创建 CREATE DATABASE[IF NOT EXISTS]

删除 DROP DATABASES[IF EXISTS] ';

使用 USE ;进入数据库后,SHOW TABLES; 查看数据库中的表

DDL

创建表格 CREATE TABLES NAME(

字段 类型 )

查询表结构 desc 表明;

查询指定表的建表语句 show create table 表明;

给表添加字段 alter table 表名 add 字段名 字段类型 comment “”

修改表中的字段 alter table 表名 change 旧字段名 新字段名 类型 comment“”

删除字段 alter table 表名 drop 字段名

修改表名 alter table 表名 rename to 表名

删除指定表,并重新创建该表 truncate table 表名;

####

DML 数据操作语言

添加数据 insert insert into 表名()

修改数据 update UPDATE X SET NAME = XXX WHERE ID =1

删除数据 delete delete from 表名 where

DQL 数据查询语言

SELECT 字段1,字段2 from 表名; select * from 2.设置别名 select 字段[as 别名] from 3. 删除重复的数据 select distinct 字段列表 from

条件查询 select x from 表名 where 条件列表; like 模糊查询 is null 逻辑运算符 等 !

DCL 数据控制语言 管理数据库用户 访问权限 (管理员用)

CREATE USER '用户名'@'主机名' IDENTIFIED BY

修改用户密码 ALTER USER ''@'' IDENTIFIED WITH myql_native_passwore BY ''

删除 drop user ’‘@’‘

权限控制

1查询权限 SHOW GRANTS FOR ''@''

2授予权限 grant all on itcats.* to ''@''

3撤销权限 revoke all on itcats.* to ''@''

函数 内置了许多函数

1 字符串函数 select管函数

 

2 数值函数

ceil floor od rand round

3.日期函数

4.流程函数

 

约束 保证表中数据的正确性

 外键约束 两张表建立连接,保证数据的一致性和完整性

 

多表查询

,分割表名即可 笛卡尔积 多种组合 必须消除 消除方法:通过外键约束 id = id

隐式内连接 select s.name,c.name from course c,student s where s.id = c.id; 显式内连接 select * from course c inner join(可省略) students s on s.id = c.id;

左外连接 查询表一和表一和表二的交集部分;select s.*,c.name from student s left outer join course c on s.id = c.id;

右外连接 查询表二和交集部分;select s.name,c.* from student s right outer join course c on s.id = c.id;

联合查询 union union all

 

注意事项 联合的列数必须一样 字段类型也要一致 union all 全部 union 删除重复数据

子查询 (嵌套查询) select = (select)

事务 一组操作的集合 全部执行成功才能完成操作

如何控制:select @@autocommit;

set @@autocommit = 0;

提交事务 commit;

回滚事务 rollback

 

并发事务的问题

1.脏读 一个事务读到另外一个事务还未提交的数据

2.不可重复读 先后读取同一记录,两次读取的不一样

3.幻读 条件查询该数据时,显式无数据 插入数据时,又有该数据

事务的隔离级别

select @@transaction_isolation; set session transaction isolation level read uncommitted;

##JDBC

JDBC

        String url = "jdbc:mysql://127.0.0.1:3306/Db1?serverTimezone=GMT%2B8";
        String username = "root";
        String password = "123456";
        Connection conn =  DriverManager.getConnection(url,username,password);
​
​
//        3,定义sql语句
        String sql = "UPDATE account SET MONEY = 2000 WHERE ID = 1";
​
​
//        4 获取执行sql对象的statement
​
        Statement sta = conn.createStatement();
​
//        5执行
        int count = sta.executeUpdate(sql); //受影响的行数
        System.out.println(count);
​
//        7.释放资源
        sta.close();
        conn.close();


try catch 抓取异常 ctrl+alt +t

      事务,一个模块必须同时执行完毕
      try {
//        开启事务
            conn.setAutoCommit(false);
            int count1 = sta.executeUpdate(sql1); //受影响的行数
            System.out.println(count1);
​
            int count2 = sta.executeUpdate(sql2); //受影响的行数
            System.out.println(count2);
            conn.commit();
//            提交事务
        } catch (Exception e) {
            conn.rollback();
//            回滚事务
            throw new RuntimeException(e);
        }




package com;
import pojo.account;
​
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
​
public class tirh {
​
    public static void main(String[] args) throws SQLException {
        String url = "jdbc:mysql://127.0.0.1:3306/Db1?serverTimezone=GMT%2B8";
        String username = "root";
        String password = "123456";
        Connection conn =  DriverManager.getConnection(url,username,password);
​
​
//        3,定义sql语句
            String sql = "SELECT * FROM account";
//        String sql1 = "UPDATE account SET MONEY = 2000 WHERE ID = 1";
//        String sql2 = "UPDATE account SET ID = 1 WHERE MONEY = 2000";
​
​
//        4 获取执行sql对象的statement
​
        Statement sta = conn.createStatement();
​
        ResultSet rs =  sta.executeQuery(sql);
        //创建集合
        List<account> list = new ArrayList<>();
//        处理结果
        while(rs.next()) {
​
            account account = new account();
//            获取数据
            int MONEY = rs.getInt("MONEY");
            int ID = rs.getInt("ID");
​
​
//            赋值
            account.setID(ID);
            account.setMONEY(MONEY);
​
//            存入集合
            list.add(account);
​
​
        }
        System.out.println(list);
//        7.释放资源
        rs.close();
        sta.close();
        conn.close();
    }
​
​
​
}
新建一个account类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值