一.mysql的安装
使用内置工具连接mysql
mysql -uroot -p (mysql 代表执行的bin目录中 mysql.exe)
1 .不是内部或外部命令
解决方案:
1)每次进入mysql的bin目录,然后执行
2)把这个bin目录添加环境变量
2. 忘记密码了
(1)如果没有更改过密码可以在日志找到
(2)如果改过密码的话,建议重装,如果不想重装的话,可以进入无密码模式进行修改
(3)mysql8.0的原始密码比较复杂, 改密码的话,加密方式也有更改,设置8为以上,数字,小写字母,大写字母, 符号
1)修改mysql的加密方式, 然后设置 123456
ALTER USER 'root'@'localhost' identified by '123456' ;
2):flush privileges ; 刷新
二.关系型数据库
1. mysql
1) mysql 分为收费版和社区版 (收费版的提供技术支持)
2) mysql 是开源的
3) 市场很大,应用很多,很多问题都有解决方案
4) 单个服务超过3百万条数据之后就会变慢,但是我们可以采用分布式解决
2. oracle
1) 收费的(国企中,垄断行业)
2)单个节点处理很大量数据
3. mysql
(1) 如果一个电脑安装了mysql数据库管理系统,我们称这个电脑为mysql服务器
(2) mysql数据库管理系统
1) mysql服务程序
2) 连接mysql, 备份数据库...等工具
3) 我们使用的navicat只是连接mysql服务器的一个工具
4.为什么选择关系型数据库
1) 文本里面 (插入比较麻烦) IO流
2)excel表格 (最多支持约53000行数据)
3)数据库管理系统DBMS (关系型数据库) (存放数据格式类似excel, 但是可以处理的量很大)
三种都存储在硬盘上, 电脑开关机,已保存的数据不受影响,但是程序中变量存储在内存中,内存中数据开关机之后重置。
5.为什么要存储数据
注册登录为例子: 用户注册之后,我们需要在数据库服务上保存用户信息
下次用户登录的时候,我们就可以查询到了
三.sql语句的书写
字段(类中一个属性) col
行(一个对象对象) row
create database 数据库名;
use 数据库名; // 选择一个数据库
create table 表名(字段名 属性)eg:(id int, name varchar(100),gender varchar(20),age int); // 创建一张表
insert into 表名(对应各个字段名) values (需要插入对应字段名的值); // 插入
select * from 表名; // 查询
update 表名 set 字段名 = '值' where 字段名 = 值; // 更新语句
delete from 表名 where 字段名 = 值;
四.数据类型
1.整数 (无符号数 UNSIGNED ,和有符号数)
tinyint int(一般常用 4个字节) bigint
2.字符型(长度在5.5之前值字节,5.5之后是字符)
char 指定长度 ,
例如:name char(20), 即使这个name他占不了20个字符,也会开启20个字符的空间varchar 指定长度
例如 name varchar(20) 如果name的值只能占8个字符,只会8个字符空间
如果这是的值超过了长度, 插入的时候会报错
如何选取: 如果值的长度变化比较大,从节省空间的角度来考虑,我们可以使用varcahr,但是在计算长度的过程中会消耗一定的性能,如果值的长度变化不大,例如手机号码,我们就可以char。
3.浮点型
float(3,2) ,double(10,4) , decimal(7,2) 前面那个是总的长度, 后面这个小数点后面的长度
float 是单精度的浮点数,精确到小数点后面7位, double 是双精度的浮点,精确到小数点后面15位。但是计算机操作系统的原因,float,double不用来存储重要数据,例如钱。重要的数据,我们使用decimal, decimal本质上就是个字符串,所以没有精度缺陷。
4.data时间格式
data: 格式YYY-MM-DD,一般用来存储日期(1000-9999)
datetime:格式YYY-MM-DD HH:MM:SS存储日期和时间(1000-9999)
timestamp:格式yyymmdd hhmmss 存储日期和时间 时间戳(1970-2038)
五.约束条件
约束(字段名,字段类型,约束)
1)非空 not null
2)default 'xxx' 设置默认值 (age int default 1)
3)UNIQUE 唯一(唯一可以是空)
4)primary key 主键
5)整数类型可以设置auto_increment,必须是主键
六.查询
1.语句
(1)select * from 表名; 查询整张表
(2)select name,age,... from person;
(3)select name,age from person where name='aa'; //根据名字查询
(4)select name,age from person where name='aa' and age=3;//两个条件一起
(5)select name,age from person where name='aa' or age 3;//条件二选一
(6)select name,age from person where name in('aa','cc'); //效率低
(7)select name,age from person where name like '%c%'; //%通配符
(8)select name,age from person where age>3; //查询年龄大于3
(9)select name,age from person where age BETWEEN 2and 5;查询【2-5】区间内的数据
2.排序
order by 字段 [asc/desc] asc升序 desc降序
select name,age from person where age BETWEEN 2 and 5 order by age desc; 查询【2-5】区间内的数据,按年龄降序排
select name,age from person where age BETWEEN 2 and 5 order by age desc ,name asc;查询【2-5】区间内的数据,按年龄降序排,年龄一样按姓名升序排列
3.分页查询
limit begin,count 分页 begin从0开始,查询多个
select * from person where name like '%c%' limit 1,2;