A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王x 中级黑马   /  2018-12-10 11:49  /  750 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

MySQL基础
1) Data Definition Language (DDL 数据定义语言) 如:建库,建表2) Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改3) Data Query Language(DQL 数据查询语言),如:对表中的查询操作4) Data Control Language(DCL 数据控制语言),如:对用户权限的设置
数据类型                VARCHAR(长度)                CHAR(长度)                TEXT                DATE                DATETIME                TIMESTAMP        默认当前系统时间
MySQL注释方法  --空格 单行注释              /**/多行注释     #MySQL特有的注释
入门        概念                dbms                        数据库管理系统                        mysql                        orcale                        db2                        sqlserver                        sqlite                                移动端        软件安装配置        ddl                数据库                        CREATE DATABASE IF NOT EXISTS 数据库名称 CHARACTER SET 字符编码格式;                        DROP DATABASE 数据库名称;                        SHOW DATABASES;                        SHOW CREATE DATABASE 数据库名称;                        SELECT DATABASE();                表                        CREATE TABLE 表名(        列名1 数据类型 约束,        列名2 数据类型 约束,        列名3 数据类型 约束);                        DROP TABLE 表名;                        SHOW TABLES;                        SHOW CREATE TABLE 表名;                        DESC 表名;                        ALTER TABLE 表名 ADD 列名 数据类型 约束;                        ALTER TABLE 表名 MODIFY 列名 数据类型 约束;                        ALTER TABLE 表名 CHANGE 列名 新列名 数据类型 约束;                        ALTER TABLE 表名 DROP 列名;                        ALTER TABLE 表名 CHARACTER SET 字符集;                        RENAME TABLE 表名 TO 新表名;        dml                增                        1)INSERT INTO 表名(列名1,列名2,...,列名N) VALUES(值1,值2,...,值N);                        2)INSERT INTO 表名(列名1,列名2,...,列名N) VALUES(值1,值2,...,值N),(值1,值2,...,值N),...,(值1,值2,...,值N);                        3)INSERT INTO 表名 VALUES(值1,值2,...,值N);                删                        DELETE FROM 表名 WHERE 条件;                改                        UPDATE 表名 SET 列名1=值1,列名2=值2,...,列名N=值N WHERE 条件;        面试题                datetime和timestamp区别                char和varchar区别                delete和truncate区别
SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2...);in 里面的每个数据都会作为一次条件,只要满足条件的就会显示
Liske通配符 说明% 匹配任意多个字符串_ 匹配一个字符
MySQL约束
select  字段 from 表名  where 条件  group by 分组 having 分组后条件 order by desc(降序)/asc(升序,默认)   limit(索引,一页显示的数量)
约束种类
约束名 约束关键字主键 primary key (一般送自增 aotu_increment)唯一 unique非空 not null外键 foreign key检查约束 check 注:mysql 不支持
多表的关系                1对1                       

    1对多
        多创建外键指向一主键
    多对多
        中间表2列作为(外键/联合主键)分别指向其他2个主表的主键MySQL 多表查询与事务的操作
聚合函数
count   统计个数
max  最大值
min 最小值
sum  求和
avg  平均值
DML                INSERT INTO 表名(列名...) VALUES(值...)                DELETE FROM 表名 WHERE 条件                UPDATE 表名 SET 列名 = 值 WHERE 条件        DQL                单表                        SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 列名 HAVING 条件 ORDER BY 列名 ASC/DESC LIMIT 索引,多少条 --                多表                        内连接                                隐式                                SELECT 列名 FROM 表名1,表名2 WHERE 关联条件 AND 条件                                显式                                SELECT 列名 FROM 表名1 JOIN 表名2 ON 关联条件 WHERE 条件                        外链接                                SELECT 列名 FROM 表名1 LEFT JOIN 表名2 ON 关联条件 WHERE 条件                                SELECT 列名 FROM 表名1 RIGHT JOIN 表名2 ON 关联条件 WHERE 条件                        子查询                                查询嵌套查询                                        条件:                单行单列,多行单列                                        虚拟表                多行多列       
事务
   
    START TRANSACTION;
    COMMIT;
    ROLLBACK;

    四大特性
        原子
        持久
        一致
        隔离
   
    隔离级别(脏读,不可重复读,虚读,幻读)
        默认隔离界别
            MYSQL --> 3
            ORACLE --> 2JDBC
1注册驱动
CLASS.FORNAME("com.mysql.jdbc.Driver")
2.获取连接数据库对象
DriverManager.getConnection (String url, String user, String password) 通过连接字符串,用户名,密码来得到数据
3.创建sql语句
String sql=""
4.执行sql获取结果
5.处理结果
6.释放资源

ps:
    1.ResultSet的遍历
        while(rs.next()){
            rs.getObejct(1);
            rs.getObejct("列名")
        }
    2.sql注入
        使用  PrepareStatement    配合占位符  ?
        pst.executeQuery()  --> 没有参数
        pst.executeUpdate() --> 没有参数
    3.事务
        conn.setAutoCommit(false);
        conn.commit()
        conn.rollback();day06_JDBC连接池&JDBCTemplate
C3P0                接入步骤:                        1.导jar                                1.c3p0  2个                                2.mysql驱动                        2.导入配置文件(src目录下)                                c3p0-config.xml                        3.使用                                DataSource dataSource = new ComboPooledDataSource();                                Connection con = dataSource.getConnection();               
DRUID(德鲁伊)
    接入步骤
            1.导jar
                1.druid
                2.mysql驱动
            2.导入配置文件(src)
                druid.properties
            3.使用
                Properties pro = new Properties();
                pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"))
                DataSource dataSource = DruidDataSourceFactory.createDataSoure(pro)
                Connection con = dataSource.getConnection();
               
               
JdbcUtils实现思路
    1.获取数据源(连接池)    DataSource
    2.获取连接对象            Connection
    3.释放资源              重载


    思路:
        1,2:
            DataSource在类加载的时候就应该初始化,为了保证对象能够及时创建,在 static{} 静态代码块中创建的对象
                Properties pro = new Properties();
                pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"))
                dataSource = DruidDataSourceFactory.createDataSoure(pro)
            
            提供返回数据源的方法 getDataSource()   ---> return dataSource
            提供返回连接       getConnection()   ---> return dataSource.getConnection()
            
        3:
            在关闭之前做非空判断!!!
JdbcTemplateJdbcTemplate        SPRING        (基于jdbc来简化数据库的操作)        !!!如果有占位符需要传入参数
DataSource dataSource = new ComboPooledDataSource();
JdbcTemplate template = new JdbcTemplate(dataSource);

增删改
template.update("sql",[具体参数]);

查询
单条结果
  Map<String,Object> map = template.queryForMap("sql",[具体参数]);
  Bean bean = template.queryForObject("sql",new BeanPropertyRowMapper<Bean>(Bean.class),[具体参数]);
多条结果
  List<Map<String,Object>> list = template.queryForList("sql",[具体参数]);
  List<Bean> list = template.query("sql",new BeanPropertyRowMapper<Bean>(Bean.class),[具体参数]);


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马