数据库
作用:存储以管理数据
优点
有结构
数据之间有关系
可以长期存储
数据库分类
关系型数据库
mysql(主流,免费)
oracle
sql server
SQLite
非关系型数据库
安装配置mysql
注意:mysql的端口号默认是3306
mysql地址:
就是安装mysql的计算机的ip地址
自己或别人的ip地址
对root账号设置密码
123456
操作mysql服务器:
mysql自带工具
缺点:没有提示,不能可视化开发
Navicat
优点:有提示,可以可视化开发
SQL语句
sql语句
操作数据库的语句
分类
DDL:对数据库的库,表视图,索引
DML对数据增删查
DQL查询数据
DCL对事物的操作
DDL语句
对库
create database if not exists库名 character set 'utf8';
数据库改字符集编码
alter database 库名 character set 'gbk';
删除数据库
drop database if exists 库名;
切库
use database 库名
对表
建表
create table 表名(
字段名1 数据类型 [约束] [约束],
字段名2 数据类型 [约束],
字段名3 数据类型 [约束],
...
字段名n 数据类型 [约束],
);
查看有哪些表:
show tables;
查看表结构
desc 表名;
添加列
alter table 表名 add 字段名 数据类型 [约束];
修改列名
alter table 表名 change 旧字段名 新字段名 数据类型 [约束];
修改表名
alter table 老表名 rename to 新表名;
删除表
drop table 表名;
数据类型:
字符串:
字符:char(长度)
可变字符:varchar(长度)
长字符串:longtext;
数字:
整数:int,integer
小数:double
时间:
日期+时间:datetime 2022-09-12 12:13:14
只有日期:date 2022-11-03
约束:
主键 primary key :唯一(不能重复null除外),非空
唯一 unique
非空 not null(字段值不能为null)
自增 auto_increment (自增)
默认 default(设置默认值)
外键 foreign key (设置关联关系)
DML语句
增
insert into 表名 (字段名1...) values (值1...);
删
delete from 表名 where 条件
改
update 表名 set 字段名1= 值1..where条件
DQL语句
基本查询
select 字段1,...from 表名 where 条件;
条件
运算符
逻辑运算符
or,and,not
条件运算符
>,>=,<,<=,!=,=, 字段 between 值1 and 值2,
数据运算符
+,-,*,/,%
别名:
给字段起别名,
字段名 as 别名
表名 as 别名
剔重
distinct
select distinct 字段名 from 表名 where 条件
枚举
字段名 in(值1,值2...)
判断是否为空
字段名 is not null
字段名 is null
模糊查询
like
- 单个任意字符
% 多个任意查询
分支
case
when 条件 then 结果
when 条件 then 结果
when 条件 then 结果
...
when 条件 then 结果
else 结果
end as 别名
函数
字符串函数
拼接 concat(字段名,'-',字段名)
替换 insert(目标,开始位置,替换长度,替换)
转大写 upper()
转小写 lower()
截取 substring(字段名,开始位置,截取长度)
聚合
count()
max()
min()
sun()
avg()
now()
排序
order by 字段名 asc升/desc降
分组
group by 字段名[having 条件]
执行顺序
select 字段名...from 表名
where 条件
分组 筛选
排序
1,先条件查询
2,分组
3,筛选
4,排序
5,分页
分页
limit 开始位置,一页长度; 从0开始
内关联
获取两张表的交集
左关联
获取两张表的交集与左表所有数据
右关联
获取两张表的交集与右表所有数据
需要条件,否则会产生笛卡尔积
on的性能比where好
子查询
将查询的结果作为值,或虚拟表
DCL语句
事物
事物;开启事物
begin
-- 多个sql语句
commit;提交
rollback;回滚
表关联关系
一对一
主键关联
在其中多的一张表中一个添加字段,用于关联数据的主键
一对多
在其中多的一张表中添加一个字段,用于关联数据的唯一标识主键
多对多
在提供一个表,将两个表中的,记录其关系