windows环境Mysql5.7安装+数据库设计理解

Mysql

下载地址:https://downloads.mysql.com/archives/community/

安装

  1. 解压
  2. 配置环境变量,解压包放到自己电脑环境变量path下面:E:\mysql\mysqlDB\mysql-5.7.19-winx64\bin
  3. 新建mysql

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xKbDXGey-1671025574522)(C:\Users\duxiaowei\AppData\Roaming\Typora\typora-user-images\image-20221209102934977.png)]

安装视频: https://www.bilibili.com/video/BV1NJ411J79W?p=3&spm_id_from=pageDriver&vd_source=2465ba3b1af024d0d6667b9f937d6d3a

新建my.ini文件

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir=E:\mysql\mysqlDB\mysql-5.7.19-winx64
# 设置mysql数据库的数据的存放目录
datadir=E:\mysql\mysqlDB\mysql-5.7.19-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 安装好后, 免密码进入mysql
skip-grant-tables

目录切换:cd /d E:\mysql\mysqlDB\mysql-5.7.19-winx64\bin

启动管理员模式下的CMD,切换到mysql的bin目录下

//安装mysql,如果有服务要删除服务:管理员下cmd:sc delete mysql
mysqld -install 
//安装成功后,初始化数据文件
mysqld --initialize-insecure --user=mysql
//mysqld --no-defaults --initialize-insecure --explicit_defaults_for_timestamp=true
//启动服务
net start mysql
//进入mysql管理界面
mysql -u root -p
//修改密码
UPDATE mysql.user SET authentication_string = PASSWORD('123456') WHERE user = 'root';
//刷入数据,刷新权限
FLUSH PRIVILEGES;
// 退出
exit;
//然后去修改my.ini文件最后一行注释掉#skip-grant-tables
// 然后重启,net stop mysql,net start mysql
//进入mysql -u root -p123456

SQLyog过期,计算机\HKEY_CURRENT_USER\SOFTWARE{d58cb4b1-47f3-45cb-a209-f298d0c3f756}里面的InD110重命名即可

常用数据类型

int:标准的整数 4个字节 常用 int

bigint:较大的数据,8个字节

decimal:字符串形式的浮点数,一般金融计算使用decimal

varchar:可变字符串、0~65535,常用变量 String

text:文本串

datetime:YYYY-MM-DD HH:mm:ss 最常见的时间格式

timestamp:时间戳、从1970.1.1到现在的毫秒数

数据库字段属性

Unsigned:无符号的整数,声明了该列就不能为负数

zerofill:0填充,不足的位数 int(3) ->005

自增:在上一条+1

非空:NOT NULL:如果不给复制就报错

默认值:设置默认

每个表都必须存在一下几个字段

id 主键

‘version’ 乐观锁

is_delete 伪删除

gmt_create 创建时间

gmt_update 更新时间

drop table if exists `subject`;
create table `subject`(
	`subjectno`int(11) not null auto_increment comment '课程编号',
    `subjectname` varchar(50) default null comment '课程名称',
    `classhour` int(4) default null comment '学时',
    `gradeid` int(4) default null comment '年级编号',
    primary key (`subjectno`)
)engine = innodb default charset = utf8;

阿里巴巴:不得使用外键跟级联,一切必须在应用层解决

常用函数

 -- 数值相关
SELECT ABS(-8); -- 绝对值
SELECT CEILING(9.4); -- 向上取整
SELECT FLOOR (9.4); -- 向下取整
SELECT RAND(); -- 返回一个0~1的随机数
SELECT SIGN(10); -- 判断一个输的符号,0-》0,负数返回-1,正数返回1
-- 字符串函数
SELECT CHAR_LENGTH('sss大小多少') ;-- 字符串长度
SELECT CONCAT('wo ','很','棒'); -- 字符串拼接
SELECT SUBSTR('万里长城万里长',4,6); -- 截取
SELECT REVERSE('万里长城万里长'); -- 反转
-- 时间
SELECT CURRENT_DATE(); -- 获取当前日期,年月日
SELECT CURDATE(); -- 获取当前日期,年月日
SELECT NOW(); -- 获取当前日期
SELECT LOCALTIME(); -- 本地时间
SELECT SYSDATE(); -- 系统时间
-- 聚合函数
SELECT COUNT('列名') FROM student; -- 会忽略所有null值
SELECT COUNT(*) FROM student; -- 不会忽略null值,
SELECT COUNT(1) FROM student; -- 不会忽略null值,效率高于*
SELECT COUNT('主键') FROM student; -- 效率最高
count(*); -- 只有一列时,效率最高
-- 
sum
avg
max
min
-- MD5加密,插入时候加密
insert into testmd5 values(4,'xiaoming',MD5('123456'));
-- 如何校验,将传递过来的值,进行加密,对比加密后的
select * from testmd5 where name='xiaoming' and pwd=MD5('123456');


索引

-- 显示所有索引
show index from student;
-- 创建索引
-- create index 索引名 on 表('字段')
create index id_app_user_name on app_user('name')

  • 小数据量表不要加索引
  • 索引一般加在常用来查询的字段上
  • 不要对进程变动数据加索引

索引数据结构

Hash类型的索引

Btree:InnoDB的默认数据结构

权限全力

SQLyog,可视化权限可以管理,授权

备份

SQLyog,可视化权限可以管理,授权

mysqldump

数据库设计

  • 分析需求:分析业务和需要处理的数据需求
  • 概要设计:设计关系图E-R图

设计数据库的步骤(博客网站)

  • 收集信息,分析需求
    • 用户表(用户登录注销,个人信息,写博客,创建分类)
    • 分类表(文章分类,谁创建的)
    • 文章表(文章的信息)
    • 评论表(评论人,被回复)
    • 友情链接表
    • 自动定义表(系统信息,某个关键字,或者一些主字段)key:value
    • 说说表(发表心情,id…content…create_time)
  • 标识实体类(把需求落地到每个字段)
  • 标识实体 之间的关系
    • 写博客:user - > blog
    • 创建分类:user - > category
    • 关注: user -> user
    • 友链:links

猜你喜欢

转载自blog.csdn.net/u013080870/article/details/128322624