MYSQL数据库
1. 启动/登录Mysql
//启动服务 net start mysql //登录 mysql -uroot -p //退出 exit //关闭服务 net stop mysql
2. 数据库相关的软件
- 关系型数据库 : mysql , Oracle , SQLServer , DB2(IBM) , SQLite , 表格形式
- 非关系型数据库 : redis , mongodb , menmoryche , 等键值对形式
- 一般两者结合使用
3. 数据库的概念
- 数据库服务器
安装好mysql数据库软件之后,这个服务器,支撑数据的存储
- 数据库
一个项目对应着一个数据库,数据库服务器下面可以有很多个数据库
- 数据表
一个数据库中可以有很多个表
- 字段和数据
一个数据库中可以有很多个字段和数据
总结: 数据库和服务器有很多个数据库, 一个数据库可以有很多表,一个表可以有多个字段和数据
4. 通过命令操作数据库
前提: 配置过全局变量
win+r 进入命令界面
连接服务器命令
1. mysql -hlocalhost -uroot -p密码 2. mysql -uroot -p 回车后,输入密码
- 退出
exit;
- 查看数据库
show databases;
- 创建数据库
create database 数据库名;
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
±-------------------+
4 rows in set (0.00 sec)
- 删除数据库
drop database 数据库名;
- 进入数据库
use 数据库名;
- 查看表
show tables;
- 创建表
create table 表名(字段1 数据类型,字段2 数据类型,字段3 数据类型,......) mysql> create table Person1 ( -> id int , -> name varchar(32), -> age int -> );
- 查看表结构
desc 表名;
- 删除表
drop table 表名 ;
5. 修改创建好的表
alter 关键字
- 更改字段
alter table 表名 modify 字段名 数据类型;
- 添加字段
alter table 表名 add 字段名 数据类型;
- 在指定位置添加
alter table 表名 add 字段名 数据类型 first/after 字段名;
修改字段
6. varchar 和 char 的区别
- varchar 是长度可变的
- char 是长度固定的的
5. 数据类型
- int
- tinyint(0) boolean
- char
- text
- double
- float
- decimal
6. 添加数据到表
- 插入一条数据到表
insert into 表名 values(值1,值2,......) insert into 表名 (列名1,列名2,......) values(值,值2,......);
- 查看所有表数据
select * from 表名;
- 删除数据
delete from 表名 where 条件; delete from 表名 where id=3;
- 删除多条数据
delete from 表名 where 字段名 in (值1,值2,...);
- 修改数据
update 表名 set 字段名1 = 更新值, 字段名2=更新值2,... where 条件;
7. 事务
7.1, 开启事务, 把sqsl语句的默认提交关闭
- 关闭自动提交
set autocommit =0;
写sql语句
sql语句同时提交
commit;
- 回滚,都不提交
rollback;
8. 查询(重点🔺🔺🔺)
- 查询表中的说有数据
select * from 表名; * 通配符,代表所有
- 查询指定字段的数据
select 字段1,字段2,... from 表名;
- 查询时,对字段起别名
select 字段1 as 别名1, 字段2 as 别名2,... from 表名;
- 条件查询
select 字段名 from 表名 where 条件;
- 与查询相关的函数(方法)
1. max() 最大值 select max(salary) as '最大薪资' from test01; 2. min() 最小值 3. avg() 平均值,null不计入 select avg(age) as '平均年龄' form test01; 4. sum() 和 select sum(salary) as '薪资和' from test01; 5. count() 统计数据条数 select count(id) as '数据条数' from test01; 6. now() 返回当前的日期时间 select now() as '当前时间';
- 分组 group by
select 字段1 from 表名 group by 字段1 ; 1. 统计和分组套用 select gender as'性别' ,count(gender) as '人数' from test01 group by gender ; +--------+--------+ | 性别 | 人数 | +--------+--------+ | 0 | 1 | | 1 | 2 | +--------+--------+ 2. 分组,统计,对统计结果筛选 不用where ,条件在having之后 select gender,count(gender) from test01 group by gender having count(gender)>1;
9. 特殊判断符号
- between 在某个范围内
select 字段名 from 表名 where 字段 between 值1 and 值2;
- LIKE 模糊匹配 字段中查询带有某个值的数据
select * from 表名 where 字段 like '%值%'; % 占位 可以有也可以没有值
or 或 ||
and 且 &&
10. 功能
- 排序 order by 默认升序 (asc)
select * from 表名 order by 字段 ;
- 降序 添加 desc
select * from 表名 order by 字段 desc;
where 在 order by 前面
在字段1降序的基础上,在安照字段2升序
select * from 表名 order by 字段1 desc , 字段2 asc;
- limit 取从第值1条位置开始,往后值2条的数据,默认从0开始 (用于分页)
select * from 表名 limit 值; select * from 表名 limit 值1,值2;
每页显示的数据:
int pageNo = 1; int pageCount = 3; //每页显示的数据 limit (pageNo - 1)* pageCount ,pageCount; //从第条开始,显示几条
11. 数据约束
在创建表的时候,一定要对字段进行约束,这样插入数据的时候,才更加合理,约束性
数据约束在创建字段的时候就开始添加了
11.1, 默认值
default
- 创建格式,在数据类型的后面
name varchar(22) default ''
11.2, 非空
not null
在创建时放在数据类型后面,表示数据不能为空,为空报错
创建
id int not null,
11.3, 唯一
unique 不能重复
- 创建
name varchar(22) unique,
11.4, 主键
primary key 主键时唯一和非空的组合
- 创建
id int primary key
11.5, 自增长
auto_increment 不用赋值,自己增加
- 创建
id int auto_increment primary key
12. 日期和时间类型
类型 | 格式 | 用途 | 是否支持默认值 | 字节 |
---|---|---|---|---|
date (重要) | YYYY-MM-DD | 日期值 | 否 | 3 |
timestamp (重要) | YYYY-MM-DD HH:MM:SS | 时间戳 | 支持 | 4 |
datetime | YYYY-MM-DD HH:MM:SS | 混合日期时间 | 否 | 8 |
time | HH:MM:SS | 时间值或持续时间 | 否 | 3 |
year | YYYY | 年份值 | 否 | 1 |