这篇博客介绍下MariaDB的安装及其使用!
下载链接:https://pan.baidu.com/s/1-VyX3PgOvGXwwr_jyyVUYA
提取码:1826
DataBaseManagementSystem(数据库软件)
常见的DBMS:
开源和闭源
DDL: 数据定义语言, 包括数据库和表相关的SQL
在MySQL数据库软件中保存数据需要, 先建库再建表,最后才能操作数据
DML: 数据操作语言, 包括数据增删改查相关的SQL
DQL: 数据查询语言, 只包括查询相关SQL
TCL: 事务控制语言,包括和事务相关的SQL
DCL: 数据控制语言, 包括权限分配相关SQL
查询所有数据库
格式: show databases;
创建数据库
格式: create database 数据库名;
指定字符集创建格式: create database 数据库名 character set utf8/gbk;
举例:
create database db1;
create database db2 character set utf8;
create database db3 character set gbk;
查看数据库详情
格式: show create database 数据库名;
举例:
show create database db1;
删除数据库
格式: drop database 数据库名;
举例:
drop database db1;
使用数据库
执行表和数据相关的SQL语句必须提前使用了某个数据库
格式: use 数据库名;
use db2;
创建mydb1和mydb2数据库 字符集第一个utf8和第二个gbk
create database mydb1 character set utf8;
create database mydb2 character set gbk;
查询所有数据库检查是否创建成功
show databases;
分别查询两个数据库的字符集是否正确
show create database mydb1;
show create database mydb2;
先使用mydb1再使用mydb2
use mydb1;
use mydb2;
删除两个数据库
drop database mydb1;
drop database mydb2;
操作表相关SQL 必须使用了某个数据库否则会报错
No database selected
创建表
格式: create table 表名(字段1名 类型,字段2名 类型);
指定字符集格式: create table (字段1名 类型,字段2名 类型) charset=utf8/gbk;
举例:
create table person(name varchar(20),age int);
create table student(name varchar(20),score int)charset=utf8;
create table car(name varchar(20),money int)charset=gbk;
查询所有表
格式: show tables;
查询表详情
格式: show create table 表名;
举例:
show create table person;
show create table student;
show create table car;
查询表字段 description描述
格式: desc 表名;
举例:
desc person;
删除表
格式: drop table 表名;
举例:
drop table student;
修改表名
格式: rename table 原名 to 新名
举例:
rename table car to t_car;
创建数据库mydb3 字符集gbk并使用
create database mydb3 character set gbk;
use mydb3;
创建t_hero 英雄表, 有名字和年龄字段 字符集默认
create table t_hero(name varchar(20),age int);
修改表名为hero rename table t_hero to hero;
查询表字段 desc hero;
删除数据库 drop database mydb3;
use db2;
create table emp(name varchar(20));
添加表字段
最后面格式: alter table 表名 add 字段名 类型;
最前面格式: alter table 表名 add 字段名 类型 first;
某字段后面格式: alter table 表名 add 字段名 类型 after xxx;
举例:
alter table emp add age int;
alter table emp add id int first;
alter table emp add salary int after name;
desc emp;
删除表字段
格式: alter table 表名 drop 字段名;
alter table emp drop salary;
desc emp;
修改表字段
格式: alter table 表名 change 原名 新名 新类型;
alter table emp change age gender varchar(1);
desc emp;
创建数据库mydb4 字符集utf8并使用
create database mydb4 character set utf8;
use mydb4;
创建teacher表 字段:名字 字符集utf8
create table teacher(name varchar(20)) charset=utf8;
添加表字段: 最后添加age ,最前面添加id , age前面添加工资salary
alter table teacher add age int;
alter table teacher add id int first;
alter table teacher add salary int after name;
删除age字段 alter table teacher drop age;
修改表名为t rename table teacher to t;
删除表 drop table t;
删除数据库 drop database mydb4;
create database db4 character set utf8;
use db4;
create table person(name varchar(20),age int) charset=utf8;
insert into person values(“Tom”,18);
insert into person(name) values(“Jerry”);
insert into person values(‘aaa’,10),(‘bbb’,11),(‘ccc’,12);
查询数据
格式: select 字段信息 from 表名 where 条件;
举例:
select name from person;
select * from person;
select * from person where age>15;
select age from person where name=‘刘德华’;
修改数据
格式: update 表名 set 字段名=值,字段名=值 where 条件;
举例:
update person set age=88 where name=‘Tom’;
update person set name=‘张学友’,age=50 where name=‘刘德华’;
删除数据
格式: delete from 表名 where 条件;
举例:
delete from person where age=10;
delete from person where name=‘张学友’;
delete from person where age>15;
delete from person where age=null;
delete from person;
1. 创建数据库mydb5 字符集utf8并使用
create database mydb5 character set utf8;
use mydb5;
2. 创建hero表 字段: id,name,type varchar(10)
create table hero(id int,name varchar(20),type varchar(10));
3. 插入以下数据:
insert into hero values(1,'李白','刺客'), (2,'诸葛亮','法师'), (3,'刘备','战士'), (4,'孙尚香','射手'),
(5,'关羽','战士'), (6,'刘禅','辅助');
4. 修改李白为诗人
update hero set type='诗人' where name='李白';
5. 给表添加价格money字段 alter table hero add money int;
6. 修改id小于5的价格为6888
update hero set money=6888 where id<5;
7. 修改诗人为打野
update hero set type='打野' where type='诗人';
8. 修改刘禅为阿斗
update hero set name='阿斗' where name='刘禅';
9. 删除id为5的 delete from hero where id=5;
10. 修改所有英雄的价格为13888
update hero set money=13888;
11. 修改表名为 heros
rename table hero to heros;
12. 删除money字段
alter table heros drop money;
13. 删除所有数据
delete from heros;
14.删除表
drop table heros;
15.删除数据库
drop database mydb5;
整数: int(m)和bigint(m), bigint等效java语言中的long, m代表显示长度(用来补零 m=5 , 00018),如果需要补零需要结合zerofill关键字使用
create table t1(name varchar(20),age int(10) zerofill);
insert into t1 values(‘aaa’,18);
select * from t1;
浮点数: double(m,d) m代表总长度, d代表小数长度 m=5 d=3 23.456
decimal(m,d) 超高精度浮点数, 只有涉及到超高精度运算时使用
字符串
日期
create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
insert into t_date values(“2021-1-4”,null,null,null);
insert into t_date values(null,‘20:27:33’,‘2020-10-10 11:20:30’,null);
select * from t_date;
什么是约束: 约束就是创建表时给表字段添加的限制条件
什么是主键: 表示数据唯一性的字段称为主键
主键约束: 限制主键字段的值 唯一且非空.
举例:
create table t2(id int primary key,name varchar(10));
insert into t2 values(1,‘aaa’);
insert into t2 values(1,‘bbb’); //报错 主键值重复
insert into t2 values(null,‘ccc’); //报错 主键值不能为null
自增规律:从历史最大值+1
create table t3(id int primary key auto_increment,name varchar(10));
insert into t3 values(null,‘aaa’); 1 //自增情况下 null代表触发自增
insert into t3 values(null,‘bbb’); 2
insert into t3 values(3,‘ccc’); 3
insert into t3 values(10,‘ccc’); 10
insert into t3 values(null,‘ddd’); 11
delete from t3 where id>=10;
insert into t3 values(null,‘eee’); 12
链接:https://pan.baidu.com/s/1PLt4fZvVgkmnKNqUVC3ScA
提取码:1826
把sql文件保存在某个盘的根目录 ,如果是其它系统保存在桌面
在终端中执行以下代码 提示Query OK! 成功!
source e:/emp.sql;
查询emp表数据如果出现乱码 执行 set names gbk; 再次查询
select * from emp;
如果查询的是某个字段值为null的 使用 is null 查询不是null 的 写 is not null;
查询没有上级领导的员工信息
select * from emp where mgr is null;
查询有上级领导的员工姓名 和领导编号
select ename,mgr from emp where mgr is not null;
查询员工表中出现了哪几种工作
select distinct job from emp;
查询员工表中出现的部门编号 去掉重复
select distinct deptno from emp;
查询工资小于等于3000 的员工姓名和工资
select ename,sal from emp where sal<=3000;
查询1号部门的员工姓名和工作
select ename,job from emp where deptno=1;
查询不是程序员的员工姓名 工资和工作(两种写法)
select ename,sal,job from emp where job !=“程序员”;
select ename,sal,job from emp where job <> “程序员”;
查询有奖金的员工姓名和奖金
select ename,comm from emp where comm>0;
查询1号部门工资高于2000的员工信息
select * from emp where deptno=1 and sal>2000;
查询是程序员或者工资等于5000的员工信息
select * from emp where job=‘程序员’ or sal=5000;
查询工资是3000,1500和5000的员工信息
select * from emp where sal=3000 or sal=1500 or sal=5000;
select * from emp where sal in(3000,1500,5000);
查询工作是销售,人事和程序员的员工信息
select * from emp where job in(“销售”,“人事”,“程序员”);
查询1号和2号部门中工资大于2000的员工信息
select * from emp where deptno in(1,2) and sal>2000;
查询工资在2000至3000之间的员工信息
select * from emp where sal between 2000 and 3000;
查询3号部门中有上级领导的员工信息
select * from emp where deptno=3 and mgr is not null;
查询2号部门工资在2000-3000之间的员工姓名,工资和部门编号
select ename,sal,deptno from emp
where deptno=2 and sal between 2000 and 3000;
查询1号部门工资为800和1600的员工信息
select * from emp where deptno=1 and sal in(800,1600);
查询1号部门中出现了哪几种不同的工作
select distinct job from emp where deptno=1;
_ : 代表1个未知字符
%:代表0或多个未知字符
举例:
查询姓孙的员工姓名
select ename from emp where ename like “孙%”;
查询工作中第二个字是售的员工信息
select * from emp where job like ‘_售%’;
查询名字中以精结尾的员工姓名
select ename from emp where ename like ‘%精’;
查询名字中包含僧的员工并且工资高于2000的员工信息
select * from emp where ename like ‘%僧%’ and sal>2000;
查询每个员工的姓名和工资按照工资升序排序
select ename,sal from emp order by sal; 升序 默认
select ename,sal from emp order by sal asc; 升序
select ename,sal from emp order by sal desc; 降序
查询3号部门的员工信息 按照工资降序排序排序
select * from emp where deptno=3 order by sal desc;
查询每个员工的姓名,工资和部门编号 按照部门编号升序,如果部门编号一样的情况下 按照工资降序排序
select ename,sal,deptno from emp order by deptno,sal desc;
查询员工表中工资升序排序第一页的5条数据
select * from emp order by sal limit 0,5;
查询员工表中工资降序第二页的3条数据
select * from emp order by sal desc limit 3,3;
查询工资高于1000的员工信息, 工资升序 查询前三条数据
select * from emp where sal>1000 order by sal limit 0,3;
查询每个员工的姓名,工资和年终奖 (年终奖=工资*5)
select ename,sal,sal*5 from emp;
给1号部门的员工每人涨薪5块钱 (修改)
update emp set sal=sal+5 where deptno=1;
select ename from emp;
select ename as ‘姓名’ from emp;
select ename ‘姓名’ from emp;
select ename 姓名 from emp;
1. 查询有领导并且工资在1000到3000之间的员工信息
select * from emp
where mgr is not null and sal between 1000 and 3000;
2. 查询1号部门有几种不同的工作
select distinct job from emp where deptno=1;
3. 查询名字中包含精或者工作中包含序的员工姓名和工作
select ename,job from emp
where ename like '%精%' or job like '%序%';
4. 查询3号部门工资最高的员工姓名和工资
select ename,sal from emp
where deptno=3 order by sal desc limit 0,1;
5. 查询上级领导编号是8工资最高的3个人的信息
select * from emp where mgr=8 order by sal desc limit 0,3;
6. 查询1号部门和2号部门的员工信息工资升序,查询第3页的2条数据
select * from emp
where deptno in(1,2) order by sal limit 4,2;
使用聚合函数可以对查询的多条数据进行统计查询
统计方式:
平均值avg(字段名)
查询员工表的平均工资
select avg(sal) from emp;
查询1号部门的平均工资
select avg(sal) from emp where deptno=1;
最大值max(字段名)
查询2号部门中的最高工资
select max(sal) from emp where deptno=2;
最小值min(字段名)
查询1号部门的最低工资
select min(sal) from emp where deptno=1;
求和sum(字段名)
查询3号部门的工资总和
select sum(sal) from emp where deptno=3;
计数count(*) 如果计数字段中有null值 则会不被统计在内
查询员工表中的人数
select count(*) from emp;
查询1号部门的平均工资,最高工资,最低工资,工资总和,人数 并且起别名
select avg(sal) 平均工资,max(sal) 最高工资,min(sal) 最低工资,sum(sal) 工资总和, count(*) 人数 from emp where deptno=1;
1. 查询员工表中工资高于2000的员工姓名和工资,按照工资升序排序,查询第2页的两条数据
select ename,sal from emp where sal>2000 order by sal limit 2,2;
2. 查询和销售相关工作的工资总和
select sum(sal) from emp where job like '%销售%';
3. 查询1号部门工资高于2000的员工人数
select count(*) from emp where deptno=1 and sal>2000;
4. 查询3号部门的人数和工资总和并起别名
select count(*) 人数,sum(sal) 工资总和 from emp where deptno=3;
5. 查询1号部门中名字包含僧的员工的人数和平均工资 起别名
select count(*) 人数,avg(sal) 平均工资 from emp where deptno=1 and ename like '%僧%';
查询每个部门的平均工资
select deptno,avg(sal) from emp group by deptno;
查询每一个部门的最高工资
select deptno,max(sal) from emp group by deptno;
查询每种工作的工资总和
select job,sum(sal) from emp group by job;
查询每个部门中工资高于2000的员工人数
select deptno,count(*) from emp where sal>2000 group by deptno;
查询最高人数的工作名称及人数
select job,count(*) from emp
group by job order by count(*) desc limit 0,1;
select job,count(*) c from emp
group by job order by c desc limit 0,1;
6.查询平均工资最高的部门编号和平均工资
select deptno,avg(sal) a from emp
group by deptno order by a desc limit 0,1;
(后续继续更新)