本帖最后由 小石姐姐 于 2018-1-5 09:08 编辑
###数据库概述
- 数据库:
- 数据库就是纯属数据的仓库,其本质是一个文件系统,数据按照指定的格式将数据存储起来,用户可以对数据库中的数据进行增删改查
- DBMS:
- Datcbase Management System,数据库管理系统,操作和连理数据库的大型软件,用于建立,使用和维护数据库,对数据库进行统一管理和控制
- ##常见的数据库
- MySQL:
- Oracle:
- DB2:
- SQlServer:
- SYBase:
- 扩展:目前的数据库分类:
- 关系型数据量:表示表一表之间的关系
- MySQL,Oracle都是关系型数据库
- 非关系型数据库:(NoSQL,Not,Only,SQL)
- MongoDB
- 用途:文档信息的存储,日志,记录,播客文章
- ##数据可以和管理系统
- 表:java类
- 字段名:类的成员属性
- 记录:类的对象
- ##对应关系有什么用
- 有了这种映射关系,以后我们会直接通过特殊的方式将jabaBean的各个属- -对应存入数据库
- 我们在设计表示,也会参考这种面向对象的方式,设计表的字段(也就是事物的属性)
- Java中的类,和数据表对应关系
- 表名->java类名
- 列名->类中的属性
- 表中每行数据->类的对象
- 查看MySQL运行在系统服务器中
- Win+R输入services.msc
- 进入管理系统查看mysqld.exe
- 服务程序的启动和停止(必须以管理员权限运行cmd)
- MySQL分为俩个部分:
- 服务端:主要负责数据的存储
- mysqld.exe
- MySQL登录和退出
- 方式1:cmd->d:-> mysql -uroot -p123456
- SQLyog(MySOL)图形
--- ---
- MySQL语句介绍和分类
- 什么事SQL:结构化查询语言(为什么教结构化查询:因为数据表示有结构的,有列有行,对行和列进行查询)
- SQL语言作用:和DBMS用心,操作数据库,表,记录
- 数据表中的数据类型
- DDL:数据定义语言,用来定义数据库对象(库,表等)
- CREATE
- ALTER
- DROP
- DML:数据操作语言,对表中的记录进行曾,删,改
- INSERT
- DELETE
- UPDATE
- DQL:数据查询语言,对表中的记录进行查
- SELECT
- FROM
- WHERE
- DCL:数据控制语言,创建修改用户,权限
- SQL语法特点
- SQL语句不区分大小写(默认情况数据也不区分大小写,可以设置)
- SQL关键字用大写,数据苦命,表名,字段名等小写,便于阅读
- 一条SQL语句可以单行或多行书写,一条语句的结尾必须用分号;结尾
- SQL语句可的单子之间通过空格分隔,参数之间使用,逗号分隔
- 字符串和日期要使用单引号''或双引""号包裹,推荐单引号''
- 常用数据类型
- INT:整数
- DOUBLE:浮点数(小数)
- VARCHAR:存储空间是可变的,可变长度字符
- CHAR:存储空间是固定的,固定长度字符
- DATE:日期类型
- TIME:
- DATETIME:
- TIMESTAMP:
- 创建数据库操作
- 创建数据库格式:
- CREATE DATABASE 库名;
- 删除指定数据库
- DROP DATABASE 库名
- 查看所有数据库
- SHOW DATABASES
- 修改表的结构
- 格式:CREATE TABLE 表名 操作关键字 列名 数据类型 约束;`
- 操作关键字
* `ADD`: 增加列.
* `ALTER TABLE 表名 ADD 新列名 数据类型 约束;`
* `MODIFY`: 修改指定列的数据类型和约束(不能修改列名).
* `ALTER TABLE 表名 MODIFY 要修改的列名 新数据类型 新约束;`
* `CHANGE`: 修改指定列的列名+数据类型+约束.
* `ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 新约束;`
* `DROP`: 删除列.
* `ALTER TABLE 表名 DROP 列名;`
- 修改表名
- 格式: `RENAME TABLE 旧表名 TO 新表名;`
- 创建数据表格式
- CREATA TABLE 表名(列名 数据类型(长度)约束,列名 数据类型(长度)约束)
- 约束
- 主键约束:PRIMARY KEY, 限制该列的记录值不能为非空`且唯一(不能重复)
- 自增约束:AUTO_INCRMENT 使该列的值按照数字规律自动增长
- 向数据表中添加数据 insert
- 格式:insert into 表名(列名1,列名2,列名3) values(值1,值2,值3)
- 注意:列名,表名问题
- 对应问题,个数,数据类型
- 主键自增添加
- 批量添加
- 插入记录格式2: 不指定主键, 让其自增
* 当设置了主键自增后, 插入记录时可以不考虑主键字段的值. 即字段名和值都没有主键这一列. 同时可以避免产生主键重复的错误
* 该方式适用于设置了主键自增(AUTO_INCREMENT)的情况
- INSERT INTO 表名
- (非自增列名1, 非自增列名2, ..., 非自增列名n)VALUES(值1, 值2, ..., 值n);
- 插入记录格式3: 不指定列名, 给所有列添加值
* 不指定列名, 为所有列添加值
* 该方式适用于为所有列添加值, 可以省去写列名. 但**不能省略主键**
- INSERT INTO 表名VALUES (值1, 值2,...,值n);
- 批量插入记录:
- 适用于批量插入记录INSERT INTO 表名(列1, 列2)VALUES(记录1值1, 记录1值2),(记录2值1, 记录2值2);
- INSERT INTO 表名VALUES(记录1值1, 记录1值2),(记录2值1, 记录2值2);
- 删除指定的记录
- DELETE FROM 表名 WHERE 条件;
- 条件查询:
- 即按指定条件查询记录返回符合条件的结果集, 使用`SELECT`和`WHERE`组合
- SELECT * FROM 表名 WHERE 列名=记录值
- SELECT * FROM 表名 WHERE 列名 BETWEEN 条件 AND 条件
- SELECT * FROM 表名 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`: 非空
- 日期也是可以比较的
|
|