mysql下载安装
官网下载地址
https://dev.mysql.com/downloads/mysql/
下载需要的版本的解压版----解压(或者安装版)本人用的是mysql5.7
修改mysql配置文件my.ini
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir="D:\Java\mysql-5.7.15-winx64\mysql-5.7.15-winx64"
# 设置mysql数据库的数据的存放目录
datadir="D:\Java\mysql-5.7.15-winx64\mysql-5.7.15-winx64\data"
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
以管理员身份打开cmd,进入mysql的bin目录下
安装mysql:mysqld install
初始化mysql:mysqld --initialize-insecure --user=mysql
启动MySQL服务: net start mysql 或者在任务管理器的服务选项中找到mysql这个服务右键启动
停止MySQL服务: net stop mysql 或者在任务管理器的服务选项中找到mysql这个服务右键停止
重启MySQL服务:在任务管理器的服务选项中找到mysql这个服务右键重新启动
启动服务后,开始配置环境变量
1,右键我的电脑,点击属性
2,点击左上角的高级系统设置
3,点击环境变量
4,在系统变量下找到path变量,选中点击编辑
5,点击新建,把mysql的bin目录的路径添加进去
安装完了,一般来说密码是为空的
登陆:mysql -uroot -p
修改密码:mysqladmin -uroot -p旧密码 password 新密码
忘记密码解决:
- 1. 关闭正在运行的MySQL服务。
- 2. 打开DOS窗口,转到mysql\bin目录。
- 3. 输入mysqld –skip-grant-tables 回车。–skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
- 4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
- 5. 输入mysql回车,如果成功,将出现MySQL提示符 >。
- 6. 连接权限数据库: use mysql; 。
- 6. 改密码:update user set password=password(“123”) where user=”root”;(别忘了最后加分号) 。
- 7. 刷新权限(必须步骤):flush privileges; 。
- 8. 退出 quit。
- 9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。
数据库概述
数据库与文本,Excel,xml之间的对比:
优点:数据库方便检索,sql语句执行效率高。
缺点:安全性不够,加了用户级密码容易破解
C/S 结构下对服务器要求很高,否则容易造成 MDB 损坏并发数255。
Excel ------ 存储量不够(有限)
文本可以存储大量数据,但是打开慢,内存受限 --- 分布式内存
DBA --- 数据库架构师
数据库类型
结构化 --- mysql等关系型数据库
半结构化 --- key-value 形式(json等)
非结构化 --- 视频,图片等二进制 存储( path --- manggodb,hbase)
两个关系型的数据库对比:
oracle --- 成本高,有硬件要求,伸缩性较差,效率高
mysql --- 开源,单进程多线程,多用户,c/s
数据库操作流程:
- 启动服务
- 加载配置文件
- 生成实例
- 建立链路
- 请求会话
- 响应请求
基本操作:
mysql -h -u -p
show databases;
mysql自带的库表
1,information_schema --- 数据源表
2,mysql – 用户,权限
3,performance_schema – 性能优化
配置文件
my.ini
- 字符集
- 安装目录
- 数据存放目录
- 连接数
- 端口
- 引擎
show variables like "character%"; --- 查看当前数据库实例的字符集信息
use mysql; -----切换到指定数据库
show tables;-----查看当前数据库下的表
set names gbk;------设置当前会话的字符集信息
mysqldump -uroot -p test>F:\backup\test.sql -----命令备份(test:要备份的数据库,F:\backup\test.sql :备份的路径+文件名)导出sql文件
备份物理文件:opt
mysql -uroot -p test<./test.sql ------命令还原指定备份
mysql数据类型
整数:(5种):1,2,3,4,8(字节)
desc inttype;----查看表结构:
select @@sql_mode; -----查看当前的sql_mode
例1:
--创建测试表
CREATE TABLE `inttype` (
`id` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--插入测试数据
insert into inttype values(128);
--无法插入,切换sql_mode模式
set sql_mode = 'ansi';
--插入成功,但被截断
insert into inttype values(128); -----数据库表显示数据为127
小数(两种):
- 精确小数类型(decimal)
- 浮点型(float,double)
例2:
CREATE TABLE `per` (
`per` decimal(4,3) NOT NULL,
PRIMARY KEY (`per`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
范围:-9.999-9.999
字符串:
定长:char
变长:
- varchar
- text
- tinytext
- text
- mediumtext
- longtext
日期类型:
- date
- time
- year
- datetime
- timestamp
获取系统时间:select now()
获取年份:select year(now())
delect和truncate的区别,delect会保留自增序列,truncate会清空自增,重新开始
datetime和timestamp的区别:timestamp的取值范围从1970-01-01开始 根据当地时区自动转换
查看时区:show variables like “time_zone%”;
跟数据库系统有关系
复合类型:
- enum --- 可以被穷举的
- set ---
例2:
create table person(
sex enum('male','female'),
interest set('sing','dance','swim','study')
);
insert into person values('male','study,sing'); ----enum类型、set类型的应用(可以约束输入的参数)
二进制类型:存储0和1的字符串
选择数据类型的原则:
- 选择合适的
- 尽可能短
约束
主键约束:
单字段主键 :student_no char(11) primary key;
多字段主键 :primary key(字段1,字段2)
自增:
auto_increment
例3:
CREATE TABLE `ipint` (
`ip` int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `ipvarchar` (
`ip` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--IP字符串转整数
insert into ipint(ip) VALUES(INET_ATON('1.1.1.2')) ---ip存储处理
设计数据库
存储引擎:Innodb – 事务,写,myisam – 查询,读
读写分离
并发
锁 --- 表/记录
隔离
下面是一条数据库一些操作链接-----拿走不谢
https://www.cnblogs.com/bluealine/p/7832219.html
未完待续......
参考:
https://www.cnblogs.com/bluealine/p/7832219.html
https://dev.mysql.com/downloads/mysql/
https://blog.csdn.net/th_num/article/details/71402801
https://blog.csdn.net/li_magic/article/details/70186609