MySQL
安装
zip安装
- 解压文件
- 配置环境变量(bin目录)
- 在解压文件夹下新建my.ini文件并且追加内容
[mysqld]
port = 3306
basedir=安装的目录
datadir=安装的目录/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8
- dos窗口进入解压目录的bin目录下
- 执行指令
mysqld -install
- 提示"Servoce successfully installed"表示安装成功
- 初始化数据库
mysqld --initialize-insecure --user=mysql
- 执行后目录出现data文件夹,表示初始化成功
- 开启mysql服务
net start mysql
- 开启后mysql的root用户为空,设置密码
mysqladmin -u root -p password 新密码
Enter password: 旧密码
msi安装
- 选择 Custom–> Next
- 选择安装的目录–>Next
- 选择Detailed Configuration–>Next
- 选择Developer Machine–>Next
- 选择Multifunctional Database–>Next
- 选择InnoDB数据文件的存放目录选择目录即可–>Next
- Decision Support(DSS)/OLAP–>Next
- 配置端口–>Next
- 配置字符集,选择Manual Selected Default Charactor Set/Collation文本框写utf8–>Next
- 设置服务Install As Windows Service和Include Bin Directory in Windows PATH都勾选–>Next
- 设置用户密码–>Next(记得把Enable root access from remote machines勾选上)
- 等待安装完成即可
范式
1FN:一个列不能有多个值
2FN:仅有一个唯一的主键
3FN:一张表字段不允许关联非主键
什么是数据库
数据库(DataBase:DB)是按照数据结构来组织、存储和管理的数据仓库
常见的数据库
Oracle(Oracle)
DB2(IBM)
MySQL(AB->SUN->Oracle)
SQL Server(微软)
什么是NoSQL
NoSQL(not only sql):结构化数据库技术
常见的NoSQL
- 键值存储数据库:Oracle BDB,Redis,BeansDB
- 列式存储数据库:HBase,Cassandra,Riak
- 文档型数据库:MongoDB,CouchDB
- 图形数据库:Neo4J,InfoGrid,Infinite,Graph
什么是SQL
SQL是结构化查询语言(Structured Query Language)。是关系数据库的标准查询语言。
SQL包含6个部分
数据查询语言(DQL)
数据操作语言(DML)
事务处理语言(TPL)
数据控制语言(DCL)
数据定义语言(DDL)
指针控制语言(CCL)
数据库常用操作
查看数据库有哪些库
show databases;
使用指定数据库
use 数据库名;
查看库中的表
show tables;
创建数据库
create databases 数据库名;
删除数据库
drop databases 数据库名;
查看表结构
desc 表名;
查看创建的ddl语句
show create table 表名;
mysql与java的对应类型
Java | MySQL |
---|---|
int | INT |
long | BIGINT |
BigDecimal | DECIMAL |
java.util.Date | DATE/DATETIME |
String | VARCHAR |
float | FLOAT |
double | DOUBLE |
char与varchar的区别
一个可变一个不可变。char是不可变的填充完内容若内容未使用完使用" “填补,varchar是可变的若内容未填充满则不会用” "填补
date与datetime的区别
date不能精确到时分秒,datetime可以精确到时分秒,根据用户的需求来使用
Java中boolean值在数据库中的存储方式
使用bit一般存储为0和1,0表示false,1表示true。
约束
非空约束:not null表示内容不能为空
唯一约束:unique表示该列的内容必须唯一
主键约束:primary key非空且唯一
外键约束:foreign key表示该列的值参照其他表的内容
默认值:default表示用户不填写该内容使用默认值填充
主键自增长:auto_increment自增列
DML操作
添加
insert into 表(字段...) values(字段值...)
更新
update 表 set 修改字段=值 where 指定字段=值
删除
delete from 表 where 指定字段=值
DQL操作
查询单表
select 字段 from 表
过滤查询
select 字段 from 表 where 指定字段=值
去重查询
select distinct 字段 from 表 where 指定字段=值
指定别名
select 字段 as 别名 from 表
过滤查询(比较运算符)
select 字段 from 表 where 字段>值
常见的比较运算符
运算符 | 含义 |
---|---|
= | 等于 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
!=(<>) | 不等于 |
过滤查询(逻辑运算符)
select 字段 from 表 where 表达式1 and 表达式2
常见的逻辑运算符
逻辑运算符 | 含义 |
---|---|
and | 两个满足则满足 |
or | 两个有一个满足则满足 |
not | 满足时不满足,不满足时满足,取反 |
范围查询
select 字段 from 表 where 字段 between 范围值1 and 范围值2
表示该字段的范围值为范围值1~范围值2
集合查询
select 字段 from 表 where 字段 in (值1,值2...)
表示该字段必须为in的内容
空值查询
select 字段 from 表 where 字段 is null
判断该字段是否为空
模糊查询
select 字段 from 表 where 字段 like '需要模糊查询的字段'
注
%值:表示该字段结尾必须为该值
值%:表示该字段开头必须为该值
%值%:表示该字段有该值
_:表示任意一个字符
结果集排序
select 字段 from 表 order by 字段 排序方式
排序方式 | 含义 |
---|---|
asc | 升序(默认) |
desc | 降序 |
分页查询
select 字段 from 表 limit 从第几个开始,显示多少行
第一个参数=(页数-1)*显示的行数
第二个参数=显示的行数
聚合函数
select count(*) from 表
常见的聚合函数
函数名 | 作用 |
---|---|
count | 统计记录数 |
max | 最大值 |
min | 最小值 |
sum | 求和 |
avg | 平均值 |
隐式内连接查询(不推荐,因为会和查询的判断混在一起)
select 字段 from 表1,表2 where 表1.字段=表2.字段
显式内连接查询(推荐,连接和查询分开)
select 字段 from 表1 join 表2 on 表1.字段=表2.字段 where 查询条件
A与B都有的那部分(包括AB两表的数据)
左外连接
select 字段 from 表1 left join 表2 on 表1.字段=表2.字段 where 查询条件
A与B都有的那部分(包括AB两表的数据)+A独有的数据
右外连接
select 字段 from 表1 right join 表2 on 表1.字段=表2.字段 where 查询条件
A与B都有的那部分(包括AB两表的数据)+B独有的数据
分组查询
select 分组字段,函数 from 表 group by 需要分组的字段
分组过滤
select 分组字段,函数 from 表 group by 需要分组的字段 having 分组需要过滤的条件
单行函数
函数名 | 作用 |
---|---|
day(参数) | 获取日期中的天数 |
hour(参数) | 获取time对应的小时数 |
minute(参数) | 获取time对应的分钟数 |
month(参数) | 获取date对应的月份 |
year(参数) | 获取date对应的年份 |
last_day(参数) | 获取该月的最后一天 |
注:mysql 的执行顺序是
from–>join–>on–>where–>group by–>聚合函数–>having–>select–>distinct–>order by–>limit
临时表
select 需要执行的操作 from dual;
数据备份
cmd命令
# 导出
mysqldump -u账户 -p密码 数据库名>到处路径
# 导入
mysql -u账户 -p密码 数据库名<导入路径