搜索
bottom↓
回复: 7

坚持学习利用一周的时间看了一个mysql入门课程 求java

[复制链接]

出0入4汤圆

发表于 2020-10-28 18:29:56 | 显示全部楼层 |阅读模式
本帖最后由 billtian 于 2020-10-28 18:36 编辑

找了一个十几小时的mysql课程 看了下适合0基础入门 推荐给大家
https://www.bilibili.com/video/BV1jz4y1Z7ev?p=74

同求类似Java课程 30到50小时的课程有推荐吗?

笔记也贴一下 供大家参考
sql
DQL 数据查询语言 select
DML 数据操作语言 insert delete update
DDL 数据定义语言 create drop alter
TCL 事务控制语言 commit rollback
DCL 数据控制语言 grant revoke

mysql -uroot -p***;
source *.sql;
show databases;
use bjpowernode;
show tables;
desc dept /emp /salgrad;
select * from emp;
select database() /version();
show creat table emp;

select ename,sal*12 as '年薪' from emp;

select ename from emp where sal=5000;
select sal from emp where ename='SIMITH';
select ename,sal from emp where sal between 1000 and 3000;        包含1000和3000
select ename,from emp where ename between 'A' and 'C';                不包含C

select ename,sal from emp order by sal asc/desc;
select ename,sal from emp order by sal desc,ename asc;

分组函数/多行处理函数(自动忽略null)
count 计数 sum求和 avg平均 max最大值 min最小值
select sum(sal) from emp;

单行处理函数
select ename,(sal+ifnull(comm,0))*12 as yearsal from emp;

group by  having
select max(sal),job from emp group by job; select 不能出现未参与分组的字段 否则结果无意义
select deptno,job,max(sal) from emp group by deptno,job;
select max(sal),deptno grom emp group by deptno having max(sal)>2900;

去重
select distinct job from emp;
select distinct deptno,job from emp;

连接查询
内连接:等值连接 非等值连接 自连接
外连接:左外连接(左连接)右外连接(右连接)
全连接

笛卡尔积现象
select e.ename,d.dname from emp e join dept d;

等值连接
select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;

非等值连接
select e.ename,e.sal,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal;

自连接
select a.ename as '员工',b.ename as '领导' from emp a inner join emp b on a.mgr = b.empno;

外连接 左外连接(左连接) 左边是主表 右外连接(右连接)右边是主表
附表无匹配数据 自动null匹配
找出所以员工的领导(包括老板)
select a.ename as '员工',b.ename as '领导' from emp a left join emp b on a.mgr = b.empno;
找出哪个部门没有员工
select d.* from emp e right join dept d on e.deptno=d.deptno where e.empno is null;

找出高于平均薪资的员工 的姓名部门薪资等级及领导(where嵌套select)
select e.ename,d.dname,s.grade,e1.ename
from emp e
join dept d
on e.deptno = d.deptno
join salgrade s
on e.sal between s.losal and s.hisal
left join emp e1
on e.mgr=e1.empno;

找出每个部门平均薪资的等级 (from嵌套select)
select t.*,s.grade
from (select deptno,avg(sal) as avgsal from emp group by deptno) t
join salgrade s
on t.avgsal between s.losal and s.hisal;

找出每个部门平均的薪资等级
select e.deptno,avg(s.grade)
from emp e
join salgrade s
on e.sal between s.losal and s.hisal
group by e.deptno;

找出每个员工所在的部门名称,要求显示员工名和部门名(select嵌套select)
select e.ename,e.deptno,
(select d.dname from dept d where e.deptno=d.deptno) daname
from emp e;

三张表的连接查询
找不每个员工的部门名和工资等级以及领导
select e.ename '员工',d.dname '部门',s.grade '工资等级',e1.ename '领导'
from emp e join dept d on e.deptno = d.deptno
join salgrade s on e.sal between s.losal and s.hisal
join emp e1 on e.mgr = e1.empno;

union 可以将查询结果相加
找出工作岗位是SALESMAN和MANAGER
1)select ename,job from emp where job = 'SALESMAN' or job = 'MANAGER';
2)select ename,job from emp where job in ('SALESMAN','MANAGER');
3)select ename,job from emp where job = 'SALESMAN'
union select ename,job from emp where job = 'MANAGER';
两张不相干的表拼接在一起
select ename from emp union select dname from dept;
两个查询必须列数相同

limit (重点中的重点,以后分页查询全靠他了)
mysql特有 取结果集中的部分数据 limit startIndex length
取出工资前五名的员工
select ename,sal from emp order by sal desc limit 0,5;
select ename,sal from emp order by sal desc limit 5;
执行顺序select 5 from 1 where 2 group by 4 having 4 order by 6 limit 7
取出工资第4到第9名的员工
select ename,sal from emp order by sal desc limit 3,6;
通用标准分页sql 每页显示pagesize条
limit (pageno-1)pagesize,pagesize
DQL 结束

创建表
creat table 表名(字段名 数据类型,字段名 数据类型,......);
mysql当中字段数据类型
int 整数型 (java中的int)
bigint 长整型 (java中的long)
float double 浮点型(java中的float double)
char 定长字符串(java中的String)
varchar 可变长字符串 最长255(java中的StringBuffer/StringBuilder)
date 日期 (java中的java.sql.Date)
BLOB 二进制大对象(存储图片、视频等流媒体信息 java中的Object)
CLOB 字符大对象(存储较大文本 可存储4G的字符串java中的Object)       

create table t_stu
(no bigint,
name varchar(255),
sex char(1)default 1,
classno varchar(255),
birth char(10)
);

insert into t_stu(no,name,classno,birth)values(1,'zhangsan','gaosan1ban','2003-8-7');
insert into t_stu(name,classno,birth,no)values('lisi','gaosan1ban','2003-8-7',2);
insert into t_stu values(3,'wangxiaohua','0','gaosan1ban','2002-10-7');
insert into t_stu(name)values('wangdamazi');
insert into t_stu(no,name,sex,classno,birth)
        values(4,'jack','1','gaosan1ban','2003-5-12'),
                (5,'rose','0','gaosan1ban','2002-12-28');

drop table if exists t_student;

表的复制
查询结果当作表复制出来
create table emp1 as select * from emp;
create table dept1 as select * from emp;
查询结果插入表格
insert into emp1  select * from emp;

修改数据
update dept1 set loc='shanghai',dname='renshibu' where deptno=10;

删除数据
delete from dept1 where deptno=10;
delete 不释放空间 效率低
删除大表
truncate table emp1;(表被截断,不可回滚!!!)

crud是指在做计算处理时的增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。
crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。

约束(Constraint)
非空约束(not null)不能为NULL
唯一约束(unique)不能重复
主键约束(primary key)PK 既不能为NULL也不能重复
外键约束(foreign key)FK
检查约束(check)mysql 目前不支持

非空约束(not null)不能为NULL
drop table if exists t_user;
create table t_user(
        id int,
        username varchar(255)not null,
        password varchar(255)
        );
insert into t_user(id,password)values(1,'123');
ERROR 1364 (HY000): Field 'username' doesn't have a default value
insert into t_user(id,username,password)values(1,'lisi','123');

唯一性约束(unique)字段具有唯一性,不能重复,但可以为NULL
drop table if exists t_user;
create table t_user(
        id int,
        username varchar(255)unique,
        password varchar(255)
        );
       
insert into t_user values(1,'zhangsan','123');
insert into t_user values(2,'zhangsan','123');
ERROR 1062 (23000): Duplicate entry 'zhangsan' for key 'username'

drop table if exists t_user;
create table t_user(
        id int,
        usercode varchar(255)unique,        //列级约束
        username varchar(255)unique
        );
insert into t_user values(1,'111','zs');
insert into t_user values(2,'111','ls');
ERROR 1062 (23000): Duplicate entry '111' for key 'usercode'

drop table if exists t_user;
create table t_user(
        id int,
        usercode varchar(255),
        username varchar(255),
        unique(usercode,username)                //表级约束
        );
insert into t_user values(1,'111','zs');
insert into t_user values(2,'111','ls');
insert into t_user values(3,'111','ww');

主键约束
drop table if exists t_user;
create table t_user(
        id int primary key,
        username varchar(255),
        email varchar(255)
        );
insert into t_user values(1,'zs','zs@123.com');
insert into t_user values(2,'ls','ls@123.com');
insert into t_user values(3,'mw','mw@123.com');
主键字段不能为空 也不能重复 表的设计三范式有要求,任何一张表都有主键
主键作用 唯一标识 一张表只能有一个主键约束(多个字段可联合成复合主键 不建议用 违背三范式)
主键值划分 按字段数分 单一主键 复合主键 按性质分 自然主键 业务主键
主键值 最好是个自然数 不推荐与业务挂钩的字段做主键 单一自然主键

drop table if exists t_user;
create table t_user(
        id int primary key auto_increment,
        username varchar(255)
        );
insert into t_user(username)values('zhangsan');
insert into t_user(username)values('lisi');
insert into t_user(username)values('zhangsan');
insert into t_user(username)values('wangwu');

外键约束
外键约foreign key 外键字段 外键值
父子表 创建先创建父表 添加数据先添加父表  删除数据或表先删除子表

drop table if exists t_student;
drop table if exists t_class;

create table t_class
(
        cno int,
        cname varchar(255),
        primary key(cno)
);
create table t_student
(
        sno int,
        sname varchar(255),
        classno int,
        primary key(sno),
        foreign key(classno) references t_class(cno)
);

insert into t_class values(101,'aaaaaaaaaaaaaa');
insert into t_class values(102,'asfdfdfdfdfdfd');

insert into t_student values(1,'zs',101);
insert into t_student values(2,'ls',101);
insert into t_student values(3,'ww',101);
insert into t_student values(4,'ml',101);
insert into t_student values(5,'nq',102);
insert into t_student values(6,'wmz',102);

select * from t_class;
select * from t_student;

外键可以为NULL 外键字段引用其他表字段不一定是主键 但必须具有唯一性

事务 一个完整的业务单元,不可再分
保证两条DML语句同时成功 或同时失败就需要使用事务级制
和事务相关的只有DML语句(insert delete update)

事务包括四大特性ACID
A:原子性
C:一致性
I:隔离性
D:持久性

隔离性
第一级别:读未提交(read uncommitted)脏读
第二级别:读已提交(read committed)不可重复读 (Oracle默认级别)
第三级别:可重复读(repeatable read)读到的数据是幻想(MySQL默认级别)
第四级别:序列化(serializable) 解决了所有问题 效率低

事务演示
MySQL默认自动提交 执行任何一条DML语句就提交一次
关闭自动提交 start transaction;
提交commit;

drop table if exists t_user;
create table t_user(
        id int primary key auto_increment,
        username varchar(255)
        );
insert into t_user(username)values('zhangsan');       
rollback;

设置隔离级别
set global transaction isolation level read uncommitted;
查看隔离级别
select @@global.tx_isolation;

索引index
索引相当于目录 查询一张表有两种模式 全表扫描  根据索引检索(效率很高)
什么时候添加索引 数据量大 该字段很少DML操作 经常出现在where子句中
主键和具有unique约束的字段会自动添加索引
查看sql执行计划
explain select ename,sal from emp where sal = 5000;
创建索引
create index emp_sal_index on emp(sal);
删除索引 drop index emp_sal_index on emp;
分类 单一索引 复合索引 主键索引 唯一索引
索引失效 模糊查询
select ename from emp where ename like '%A%'

视图view
create view myview as select empno,ename from emp;(只有DQL语句可以以视图创建出来)
drop view myview;
对视图进行增删改查会影响原表数据
视图的作用 保密 不能看到原表  程序员只对视图进行CRUD

DBA命令
数据导出
mysqldump bjpowernode > d:\bjpowernode.sql -uroot -p***                   导出整个库
mysqldump bjpowernode emp > d:\bjpowernode.sql -uroot -p***         导出指定表
数据导入
create database bjpowernode
use bjpowernode
source d:\bjpowernode.sql

三范式
每一张表都有主键 字段原子性不可再分
所有非主键字段完全依赖主键 不能产生部分依赖
所有非主键字段直接依赖主键 不能产生传递依赖

多对对 三张表 关系表两个外键
一对多 两张表 多的表加外键

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2020-10-28 18:56:46 | 显示全部楼层
你学sql干什么

出0入0汤圆

发表于 2020-10-28 19:20:16 | 显示全部楼层
B站有,搜索安卓应用开发,然后....

出0入0汤圆

发表于 2020-10-28 20:08:05 | 显示全部楼层
我上个前端的 uni-app教程真香,等我赚钱了去支持原作者。

https://www.bilibili.com/video/BV1U5411b7RJ

出0入0汤圆

发表于 2020-10-28 20:18:06 | 显示全部楼层
从入门到放弃?

出0入0汤圆

发表于 2020-10-29 07:42:22 来自手机 | 显示全部楼层
mark一下

出0入8汤圆

发表于 2020-10-29 08:29:56 | 显示全部楼层
cctv02 发表于 2020-10-28 20:08
我上个前端的 uni-app教程真香,等我赚钱了去支持原作者。

https://www.bilibili.com/video/BV1U5411b7RJ ...

看起来很不错,小40了,不知道还学的动不

出0入0汤圆

发表于 2020-10-29 15:39:30 | 显示全部楼层
cc2666 发表于 2020-10-29 08:29
看起来很不错,小40了,不知道还学的动不

我试了照着操作就行
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-14 02:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表