MySQL

MySQL

1.初识MySQL

1.1 为什么学习数据库
1.2 什么是数据库
1.3 数据库分类
1.4 MySQL简介
MySQL是一个关系型数据库管理系统;
由瑞典的MySQL AB公司开发,现在属于Oracle旗下产品;
MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一;
开源的数据库软件;
体积小、速度快、使用广泛、拥有和使用成本低;
适合中小型网站,后者大型网站(集群方式解决);
官网:https://www.mysql.com;
官网下载地址:https://dev.mysql.com/downloads/mysql/;

1.5 安装MySQL
1)下载安装文件:mysql-5.7.19-winx64.zip

  • 尽量不要使用exe文件,因为给注册表增加很多信息,安装删除麻烦;
  • 尽可能使用压缩安装包;
    2)解压到安装目录:这里是C:\ProgramsJava\mysql-5.7.19
    3)添加环境变量
    • 我的电脑->属性->高级系统设置->高级->环境变量;
    • 选择系统变量中:Path,在其后面添加mysql安装文件下的bin文件夹的路径;
      4)在mysql安装文件夹C:\ProgramsJava\mysql-5.7.19下新建my.ini文件;
      编辑my.ini文件,注意替换basedir,datadir为自己的路径,data目录初始化时,系统自动创建;
[mysqld]
basedir=C:\ProgramsJava\mysql-5.7.19\
datadir=C:\ProgramsJava\mysql-5.7.19\data\
port=3306
skip-grant-tables

5)启动管理员模式下的CMD,并将路径切换到mysql的bin目录;
6)安装mysql服务,输入mysqld -install
7)初始化数据库文件,输入mysqld --initialize-insecure --user=mysql;
8)再次启动mysql,输入net start mysql,
9)进入mysql,输入mysql -u root -p(密码为空,p后面不要加空格)
10)修改密码,输入update mysql.user set authentication string=password('111') where user='root' and Host='localhost';(sql语句后面加分号)
11)刷新权限,输入flust privileges;
12)修改my.ini文件,删除最后一句skip-grant-tables,或在其前面加#即可
13)重启mysql,连接测试
net stop mysql
net start mysql
【注意】如需重装,先清空mysql服务:sc delete mysql

1.6 安装SQLyog
1.7 连接数据库

mysql -uroot -p1111 --连接数据库;
update mysql.user set authentication_string=password(123456) where user='root' and Host='localhost'; --修改用户密码;
flush privileges; --刷新权限
====================================================
--“--”是sql的单行注释,“/*  */”是sql的多行注释;
--sql语句都用“英文分号”结束;
exit; --断开连接
--如果表名或字段名是特殊字词,需要增加英文反引号括起来;

### 2.操作数据库
操作数据库->操作数据库中的表->操作数据库中的表的字段

2.1 操作数据库(了解)
  创建、删除、使用、查看所有;

2.2 数据库列的类型
1)数值
- tinyint 十分小的数据 1字节
- smallint 较小的数据 2字节
- mediumint 中等大小的数据 3字节
- int 标准的整数 4字节(常用)
- bigint 较大的数据 8字节
- float 浮点数 4字节
- double 浮点数 8字节
- decimal 字符串形式的浮点数(金融计算用)
2)字符串
- char 字符串固定大小 0-255
- varchar 可变字符串 0-65535(常用)
- tinytext 微型文本 2^8-1
- text 文本串 2^16-1
3)时间日期
- date YYYY-MM-DD 日期格式
- time HH:mm:ss   时间格式
- datetime YYYY-MM-DD YYYY-MM-DD 日期时间(常用)
- timestamp 时间戳 1970.1.1到现在的毫秒数 (常用)
- year 年份表示
4null
- 没有值,未知
- 不要使用null进行计算

2.3 数据库的字段属性(重点)
- Unsigned 无符号整数,不能声明为负数
- zerofill 0填充,不足的位数,使用0来填充
- autoincrement 自增,自动在上一条记录基础上+1,通常用于设置主键,可以定义起始值和步长;
- Not null 不能为空,必须有值
- default 设置为默认值
- primary key 主键,必须要有
- version 乐观锁
- is_delete 伪删除
- gmt_create 创建时间
- gmt_update 修改时间

2.4 创建数据库、表(重点)

2.5 数据表的类型
1)比较
- innoDB(缺省) 安全性高,事务的处理,多表用户操作
- MyISAM 节约空间,速度较快
|            |  MyISAM  |  innoDB  |
| -----------| ----     | ----     |
| 事务支持    |  不支持  |  支持     |
| 数据行锁定  |  不支持  |  支持     |
| 外键约束    |  不支持  |  支持     |
| 全文索引    |  支持    |  不支持   |
| 表空间大小  |  较小    |  较大,约为2|

2)在物理空间存在的位置
所有数据库文件都存在data目录下,一个文件夹对应一个数据库,本质还是文件的存储;C:\ProgramData\MySQL\MySQL Server 8.0\Data或安装目录的data文件夹
MySQL引擎在物理文件上的区别:
- innoDB 在数据库中只有一个*.frm文件,以及上级目录下的ibdata1;
- MyISAM对应文件
  - *.frm 表结构的定义文件
  - *.MYD 数据文件(data)
  - *.MYI 索引文件(index)

2.6 修改删除表

### 3.MySQL的数据管理
3.1 外键(了解)

3.2 DML语言(精通)

3.3 增
语法:insert into 表名([字段名1,字段名2,...]) values('值1'),('值2'),(...);
【注意】
1.字段和字段之间使用英文逗号隔开
2.字段可以省略,但后面的值必须要一一对应,不能少
3.可以同时插入多条数据,VALUES后面的值需要使用逗号隔开,即(),()  

3.4 改
语法:update 表名 set column_name=value,[column_name=value,...] where [条件];
【注意】
column_name 是数据库的列
条件(逻辑表达式),筛选的条件,如果没有指定,则修改所有列;
value 是一个具体的值,也可以是一个变量;
逻辑表达式:between 2 and 5 闭合区间,包含2,53.5 删
语法:delete from 表名 [where 条件];
命令`truncate 表名`; 完全清空一个数据库,表的结构和索引不会变;
truncatedelete清空记录的区别:delete不影响自增数,truncate自增归零;  
delete删除,但重启数据库后:
- innoDB 自增列归零(存在内存中的,断电即失)
- MyISAM 继续从上一个自增量开始(存在文件中的,不会丢失)
【注意】
如果没有where,则删除所有记录;

4.DQL查询数据(最重点)
语法:selete column_name [as 别名],[column_name,...] from 表名 [as 表别名] [where 条件];
4.1 DQL
4.2 指定查询字段
4.3 where 条件字句
模糊查询:is nullis not null,between,like,in;
查询条件:Like 也可以用通配符,如% _等

函数 Concat(a,b) 拼接a,b;
  select concat('姓名: ',字段名) as 新名字 from 表名;
去重:select distinct ...
表达式:select 'studentNo','score'+1 as '加分后' from result;

4.4 联表查询 join
自连接查询,把一张表看成两个一模一样的表

select a.catagoryName as 父栏目,b.categoryName as 子栏目
form category as a,category as b
where a.categoryid=b.pid

4.5 分页和排序

4.6 子查询

4.7 分组和过滤

4.8 常用函数

事务

4.9 聚合函数

加密

7.索引

8.1

8.2

9
9.1

posted @   老李学Java  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示