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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 顾大圣 初级黑马   /  2018-1-11 15:14  /  669 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

学习阶段总结

数据库

本质是一个文件系统  数据按照指定的格式将数据储存起来

数据库管理系统(DataBase Management System)

是操作和管理数据的软件

C:/Users/%E9%A1%BE%E5%85%AC%E7%88%B5/AppData/Local/YNote/data/qqF389022F54830711172F0070E51CA947/a0fe628b4420497981119e2797a5f7aa/clipboard.png

services.msc

启动服务 net  start mysql  

停止服务  net  stop mysql

SQL

Structured Query language 结构化查询语言.

DDL :data defination language, 数据定义语言,用来定义数据库对象(库,表等)

~CREATE

~ALTER

~DROP

DML Data  Manipulation language, 数据操作语言,对表中的记录进行增删,查改

INSERT

DELETE

UPDATE

DQL :Data Manipulation Language,. 数据查询

SELECT

FROM

WHERE


类型

int         整形

double 浮点型

varchar 字符串型

date 日期类型


创建数据库:        CREATE DATABASE 数据库名;

删除数据库:         DROP DATABASE 数据库名;

开打数据库:        USE 数据库名

创建表:                CREATE TABLE 表名( 列名1 数据类型 约束 , 列名2  数据类型 约束 );


添加列:ALTER TABLE 表名 ADD 列表,数据类型,约束

修改列中数据类型约束   :ALTER TABLE 表名MODIFY 列名 数据类型 约束

修改列名,             ALTER TABLE 表名 CHANGE 旧列名  新列名 数据类型 约束

删除列:        ALTER TALBE 表名 DROP 列表;

修改表名 RENAME TABLE 表名 TO 新名



向数据表中添加数据

INSERT INTO 表名(列名 1,列名 2 ,列名3) values(值1,值2,值3)


修改表

UPDATE 表名 SET 列名1=新值  WHERE 条件


删除

DELETE FROM 表名


SHOW TALBS;

DESC 表名;

DROP TABLE 表名;


查询

SELECT * FROM 表名       DISTINCT 用于去除重复记录

查询重新命名列 AS 关键字



主键约束 PRIMARY KEY 该记录不能为空,不能重复

自增约束 AUTO_INCREMENT 设置该列的记录值可以自动增加

外键约束 FOREIGN KEY 主要是连接另一个表的主键

非空约束 NOT NULL 限制该列的记录值不能为空

唯一约束 UNIQUE 唯一,该列的记录值不能重复

检查约束  CHECK 条件,限制该列插入的记录值是否符合要求

默认值约束: DEFAULT

* 条件查询:

        * 即按指定条件查询记录返回符合条件的结果集, 使用`SELECT`和`WHERE`组合

* `WHERE`:

        * 作用: 条件子句, 过滤符合条件的结果

        * 运算符

                * 比较运算符

                        * `=`: 相等

                        * `<>`或`!=`: 不等

                        * `>`: 大于

                        * `<`: 小于

                        * `>=`: 大于等于

                        * `<=`: 小于等于

                        * `BETWEEN...AND...`: 在一个范围内(包含头和尾), `BETWEEN 0 AND 10;` 0~10

                                * 如:

                        * `IN ()`: 在列表中, 满足列表中一个即可

                                * 如: `IN (1, 3, 5)`

                        * `IS NULL`: 是空

                        * `LIKE 通配符`: 模糊查询

                                * 通配符种类

                                        * `%`: 一个百分号可以表示任意个字符. 比如`王%`, `王大锤`, `王五`

                                        * `_`: 一个下划线可以表示一个字符. 比如`王_`, 只能匹配`王五`

                * 逻辑运算符

                        * `AND`: 与. 两边条件同时成立才成立

                        * `OR`: 或. 两边条件只要有一个成立就成立

                        * `NOT`: 非, 取相反结果

                                * `NOT BETWEEN ... AND ...`: 不在范围内

                                * `NOT IN`: 不在列表中

                                * `NOT LIKE`: 不匹配

                                * `IS NOT NULL`: 非空

                * 日期也是可以比较的

聚合函数

count(列名):对表中的数据个数求和  

注意值为NULL的记录不会被统计

sum(列名):对一列中数据进行求和

MAX(列名):对某列数据,获取最大值

AVG(列名):计算一个列所有数据的平均数  

如果指定列类型不是数值类型,则结果为0

分组查询

GROUP BY 列名 HAVING(对查询结果进行分组显示后,在次按条件过滤)  条件

        * 聚合函数与分组的使用效果

                * 使用聚合函数后再进行分组, 才相当于汇总统计

                        * `SELECT zname, SUM(zmoney) FROM zhangwu GROUP BY zname;`

                * 不使用聚合函数的分组, 只有第一条记录的值

                        * `SELECT zname, zmoney FROM zhangwu GROUP BY zname;`

        * `HAVING`和`WHERE`的区别

                * 过滤时机不同

                        * WHERE是在分组前先对查询结果进行过滤

                        * HAVING是在查询结果分组后再次过滤

                * 是否可跟随聚合函数不同

                        * WHERE条件中不可使用聚合函数

                        * HAVING条件中可以使用聚合函数

                * 条件可用列名不同

                        * HAVING条件中的列名必须是SELECT或GROUP BY中使用过的列名

                        * WHERE条件中可以使用表的所有列名

JDBC

JAVA DataBase Connectivity java数据库连接,是一种技术的名称





JDBC 步骤

1.注册驱动

告知JVM使用的是那一个数据库的驱动

2.获得连接

使用JDBC中的类,完成对Mysql数据库的连接

3.获得语句执行平台

通过连接对象获取SQL语句的执行对象

4.执行sql语句

使用执行者对象,向数据库执行SQL语句

获取数据库的执行后的结果

5.处理结果

* 根据项目的业务需求对结果进行操作

6.释放资源 一堆close()


PreparedStatement        (SQL预编译储存,多次高效的执行SQL)

PreparedStatement


C:/Users/%E9%A1%BE%E5%85%AC%E7%88%B5/AppData/Local/YNote/data/qqF389022F54830711172F0070E51CA947/3198768f646b4b6e80836ffa9311af05/clipboard.png


                * 在工具类中定义5个静态变量:

                        * private static Connection conn;

                        * private static String driverClass;

                        * private static String url;

                        * private static String username;

                        * private static String password;

                * 定义读取配置文件的方法:

                        * private static void readConfig()

                        * 其中使用ClassLoader加载配置文件, 读取配置, 对静态变量driverClass, url, username, password进行初始化

                * 定义静态代码块, 在其中

                        * 调用readConfig()方法读取配置

                        * 调用Class.forName(driverClass)加载驱动

                        * 调用conn = DriverManager.getConnection(url, username, password)对连接对象进行初始化

                * 定义public static Connection getConnection()方法

                * close()释放资源方法不用再定义, 后面会使用DbUtils里面的释放资源的方法

DBUTILS工具类 三个核心类一个更好的JDBC工具类

QuerRunner类,提供操作SQL语句的API

*QuerRunner():创建对象

*int update

* eqery

C:/Users/%E9%A1%BE%E5%85%AC%E7%88%B5/AppData/Local/YNote/data/qqF389022F54830711172F0070E51CA947/eab67a8d686e48baadf721919f0fc234/clipboard.png







0 个回复

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