mysql 基础
win + r services.msc 可以查看mysql是否启动, 也可以停止
配置环境变量后,就可以在任意位置执行mysql 了 ,这里在文件访问了mysql
一 SQL 分类
一、DDL 数据库操作
1、表的查询 前提是先use + 数据库名 进入数据库
show tables;
2、创建表
create table +表名( )
例: comment 为注释
3、 desc + 表名 可以查看表的结构
4、show create table + 表名 可以查看更详细表的结构
5. 数据类型
数字
字符串
日期类型
6. 修改表
{1} 添加字段 alter table 表名 add 字段名... [ ]内容是可选
例: alter table tb_user add nickname varchar(10) ;
{2} 修改 modify change
{3} 删除字段 drop
{4}修改表名 rename to
{5} 删除表
二 DML 对数据库表数据增删改
1、 insert 新增
insert into emp(id, userId, userName, sex, age, number, entrytime)
VALUES (1,'12','哈哈','男',12,'123456789012345678','2020-11-06');
2.update 修改
update emp set username=“hahah” ... where id =1 ;
3. delete 删除
delete from emp where id =1 ;
三 DQL 查询数据库表
select
1.基本查询
select * from emp2 ; 查询全部
select distinct workaddress '地址' from emp2; 查询地址 且不显示重复 还给别名
2.条件查询where
is not null 不为空
select *from emp where age in(20,10,30); 表示age=20,10 ,30 和age=20 or age=10..一样
select *from emp name like '_ _' ; 表示查name两个字的 _ 表示单个字符 % 表示任意个字符
3.聚合函数 select 聚合函数(对象) from 表名;
例: select count(*) from emp; 查询emp数量的总和 count(*)
select count(name) from emp; 查询name的数量总和
4.分组查询 group by (分组函数一般和聚合函数一起用)
select gender , sum(age) from emp where age>10 group by gender having sum(age)>300;
解释: 输出男 女 分别为age>10的 年龄总和 最后年龄总和>300的(having)
where 和 having 区别
where 不参与分组 having是在分组之后进行过滤
where不能对聚合函数进行判断,而having可以
5.排序查询 必须结合order by
select * from emp2 order by age asc ,entrydate desc ;
6.分页查询 注意limit放在最后
select *from emp2 limit 8,2; 第7页,每页展示2条数据
四 DCL数据控制语言 用来管理数据库用户、控制数据库的访问权限
1.用户管理
2. 权限控制
二 函数
一 字符串函数
concat lower upper lpad rpad trim substring
select trim(' hello world ');
例:
lpad rpad 例下: name如果超过了3位,就值输出前3位,如果小于3位就,l左边 r右边补充0直到3位
二 数值函数
ceil, floor ,mod , rand,round
例: rand()可能会生成0.0几几的数,再四舍五入会成5位数,所以这里需要lpad,不为6位就多加0 直到6位数
三 日期函数
curdate,curtime ,now,year(date) ,month(date),day(date),date_add(now(),70 day/year/month)
datediff('2021-11-12','2023-11-04')
例:
四 流程函数
例: 当值为集体值时
当值为范围值时
三 约束
外键约束
1.
主表相当于部门, 而外键字段名 员工对应的id
例: alter table emp1 add constraint fk_emp_dept_id foreign key(dept_id) references dept1(id);
alter table emp1 drop foreign key fk_emp_dept_id ;
2. cascade, set null
创建外键 + on update cascade on delete cascade 若外键删除/更新 ,则对应的外键子表的数据也会 删除/更新
在图形化中更简单:
四 多表查询
1、连接查询 - 内连接 (两张表的交集)
下面两个连接功能都是一样的
2、外连接
{1} 左外连接
{2} 右外连接
3、自连接
例:
自连接, 把emp表看作两个表格,分别取别名 , 这里利用managerid = id来作为条件
4、联合查询 union , union all (多次查询的结构可以合并在一起)
union 表联合后去除重复, union all表联合后不去重复
5、子查询
{1} 标量子查询 子查询查出的只有一个数
例:
例:
{2} 列子查询 子查询为一列内容 in ,any,all
in 例:
all 例:
{3}行子查询 子查询为一行的内容 用 ”=“
{4}表子查询, 子查询为多行多列 用 "in"
例:
例:
注意事项:
1、
2、 or
3、3张表联系起来
4、在 on 条件 后面还可以加where 条件
五 事务
1、事务操作
如果设置成手动提交,在每次修改程序成功时 都要commit , 程序中途失败就执行rollback
可以通过 set @@autocommit=0 开启事务
也可以 start transaction 来开启事务
2.事务四大特性
3. 并发事务问题
4. 事务的隔离级别 (用于解决并发事务问题)
seriaizable 可以规避所有的并发问题,但性能也很差