MySQL–>免费
1: MySQL 是什么?
是一个软件
2:MySQL有什么用?
按照特定的格式存储数据的一个仓库,用户可以对仓库中的数据进行管理
3:MySQL怎么用?
1:连接MySQL
mysql -uroot -p123
mysql:关键字
-u:标识符,标识用户
root:用户名。
-p:标识符,标识密码
123:数据库的密码
2:认识一下数据的结构
1:库(硬盘上的表现形式就是文件夹)
创建库: create database bjpowernode;
create 和 database 是关键字(不能写错,不区分大小写)
bjpowernode :用户自定义的库名称
“;” 代表一句话的结束,英文输入法下的。
删除库:
drop database bjpowernode;
drop 和 database 是关键字(不能写错,不区分大小写)
bjpowernode :用户自定义的库名称
“;” 代表一句话的结束,英文输入法下的。
2:表(不可以重复的)
1:行:在数据库的专业术语中成为“记录”
2:列:在数据库的专业术语中成为“字段”
3:主键:特征不可以重复具有唯一性,标识一行记录。
3:库与表的关系:
1:一个库可以包含多个表(一对多)
人与人沟通要使用普通话,人与数据库进行交互,
3: SQL(Structured Query Lanaguage)分类:
1: 数据库查询语句:
1:英文:DQL(Data Query Language)
2:代表关键字:select
2:数据库定义语句:
1:英文:DDL(Data Denifition Language)
2:代表关键字:create ,drop,alter
3:数据库操作语句:
1:英文:DML(Data Manipulation Language)
2:代表关键字:insert,delete,update
4:事务控制语句:
5:数据控制语句:
4: DQL(Data Query Language):数据库查询语句
1:装备数据:
1:创建数据库
create database bjpowernode;
2:使用数据库
use bjpowernode;
3:导入数据:
source D:\动力节点【Java全栈工程师从入门到项目实战【干货】】\day04\bjpowernode.sql
注意:一定不要添加“;”
2:查询:
语法:
select 字段名称一,字段名称二 from 表的名称;
1:查询一个字段(在mysql中大小写不区分)
例如:查询员工姓名:select ename from emp;
2:查询多个字段
例如:查询员工的姓名和工资:select ename,sal from emp;
3:查询所有字段(* 代表所有字段的意思)
select * from emp;
4:字段做运算
例如:查询一下员工的:编号(empno),姓名(ename),年薪
select empno,ename,sal * 12 from emp;
5:字段起别名:
select empno,ename,sal * 12 as ysal from emp;
select empno,ename,sal * 12 as '年薪' from emp;
select empno,ename,sal * 12 as "年薪" from emp;
select empno,ename,sal * 12 "年薪" from emp;
6:带简单条件的查询:
例如:查询经理编号,经理姓名,经理年薪
1:先找经理编号,经理姓名和经理工资
select empno,ename,sal from emp where job ='manager';
2:查询经理编号,经理姓名,经理年薪
select empno,ename,sal*12 '年薪' from emp where job ='manager';
2:排序(order by):
1:单一字段排序:
1:降序(desc):由大到小
例如:查询empno ,ename,sal 按照工资由大到小进行排序
select empno,ename,sal from emp order by sal desc;
2:升序(asc): 由小到大
select empno,ename,sal from emp order by sal asc;
select empno,ename,sal from emp order by sal;
注意:省略asc 默认为升序
2:多字段排序:
例如:查询empno ,ename,sal 按照工资由小到大进行排序,再按照empno有小到大进行排序
select empno,ename,sal from emp order by sal asc,empno asc;
3:按照字段的位置进行排序:(可读性差,不具有扩展性,在开发的过程中不建议使用)
select * from emp order by 6 asc ;
3:分组函数/聚合函数/多行处理函数:
sum,avg,max,min,count
例如:查询所有员工每月的工资金额
select sum(sal) from emp;
例如:求员工的平均工资:(工资总金额/公司总人数)
select count(empno) from emp;
select count(*) from emp; -- 效率不高
select count(comm) from emp; -- 如果comm为null 认为没有这条记录
select sum(sal)/count(empno) as '员工平均工资' from emp;
select avg(sal) from emp;
例如:查询全体员工中,工资最高是多少钱。
select max(sal) from emp;
例如:查询全体员工中,工资最低是多少钱。
select min(sal) from emp;
例如:部门平均工资多少钱(部门编号,平均工资)
4:分组查询(group by)
例如:部门平均工资多少钱(部门编号,平均工资)
select deptno ,avg(sal) from emp group by deptno;
例如:部门平均工资大于2000的(部门编号,平均工资)
select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000;
例如:部门平均工资大于2000的(部门编号,平均工资),按照升序进行排序
select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000 order by avg(sal);
异常:
1:ERROR 1300 (HY000): Invalid utf8 character string: '\xA1\xB0' ,使用了中文的输入法