黑马程序员技术交流社区

标题: 【石家庄校区】mysql笔记 [打印本页]

作者: CHNing    时间: 2018-5-9 16:11
标题: 【石家庄校区】mysql笔记
mysql多表查询
多表查询
        交叉链接
        cross join 查询表的笛卡尔积
                select * from 表 cross join 表
                select * from 表,表
        内连接
        inner join  查询两个表中共有的数据
                select * from 表 inner join 表1 [on 表.列 = 表1.列]
                隐式内链接:select * from 表,表1 [where 表.列 = 表1.列]
        外链接
        左外链接
                以左表为基准,查询两表结果
                select * from 表 outer left join 表1 on 表.列 = 表1.列
        右外链接
        以右边表为基准,查询
                select * from 表 right outer join 表 on 关联条件
                简写:select * from  表 right join 表 on 关联条件
        子查询
        一个语句查询结果依赖另一个语句查询结果
        查询语句的嵌套
        in
                子查询的结果
                select * from 表 where 列 in (子查询语句)
        exists
                子查询有数据,前边语句才会执行
                select * from 表 where exists (查询语句,查询出语句才会执行 (select * from 表))
        any
                大于查询子查询中任意数据
                select * from 表 where 列 运算符 any(子查询,必须保证查询结果**一列**数据)
        all
                大于查询中所有数据
                select * from 表 where 列 运算符 all(子查询,必须保证查询结果**一列**数据)
事务
        逻辑上的一系列操作,要么全部成功,要么全部失败
        事务特性(ACID):
                原子性:
                        组成事务的各个逻辑单元不可分离
                一致性:
                        如果执行失败,数据还会回滚到之前的状态。数据前后一致性
                隔离性:
                        事务在操作指定数据时,其他事务不能干扰这个数据。
                脏读:
                        事务读取数据时读到其他事务为提交的数据,导致结果不一致
                不可重复读:
                        一个事务读到另一个事务update 数据,导致多次不一致
                虚读:
                        一个事务读到另一个事务已经提交的Insert数据,导致结果不一致
        事务的等级:
                read uncommitted:   未提交读,事务执行没提交/回滚时,其他事务就可以读到
                read committed  :   已提交读,当前事务必须把数据提交后,其他事务才会读到提交后数据。
                repeatable read :   可重复读
                serializable    :   事务不允许并发,必须逐个执行
        PreparedStatement prepareCall(String sql)   调用存储过程
        开始事务:
                start transaction
        提交事务:
                commit
JDBC
        连接各种数据的一种规范
        JDBC链接数据库:
                1,注册驱动
                2,创建链接对象
                3,创建执行SQL语句对象
                4,执行SQL语句,获取执行结果
                5,释放资源
        DriverManager 驱动管理类
                //获取连接对象
                Connection getConnection(String url,String user,String password)
                        url 连接数据库语句:jdbc:mysql://[localhost:3306]/数据库
                        user 数据库管理员
                        password 管理员密码
        Connection 连接对象
                与数据库连接对象
                创建SQL语句对象
                        Statement createStatement()         执行SQL,有SQL注入风险
                创建预处理SQL对象
                        创建后SQL语句格式固定
                                PreparedStatement prepareStatement(String sql);
                        SQL中的占位符
                                setString/Int(int index,String value)
                                        index       第一个 占位符(?)
                                        value       对应的值
        Statement
                执行SQL语句对象
                ResultSet executeQuery(String sql)      执行查询语句,返回结果集
                int     executeUpdate(String sql)           执行查询语句,返回受影响行数
        ResultSet
                返回结果集
                boolean next()      是否有下一条记录,没有返回false,有,返回true,指针移动到下一条记录
                String getxx
                        两个重载:
                                传入列索引
                                传入列名称,尽量传入列名称
                        getInt
                        getLong
                        getString.,mn
                        getDouble
                        getObject
        批量执行SQL
                PreparedStatement
                        addBash()           把当前SQL执行对象添加到批处理中
                        clearPreparers()    清空当前批处理中的SQL执行对象





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2