数据库

数据库的概念

存储数据的仓库,你一台电脑装有数据库软件,你可以对外提供数据的增删改查服务,你这台电脑,就是一台数据库服务器。
常见数据库:
SQLServer 微软的 中小型关系型数据库
MySQL 中小型的关系型数据库
Oracle 大型的关系型数据库
关系型数据库: 具有行和列这种二维表结构的数据库

非关系型数据:NOSQL用键值关系来存储数据 类似json
数据库的安装
1. 可以使用第三方的卸载软件来卸载

2.在控制面板里面常规卸载
1.停止后台服务 电脑–右键–管理—服务—mysql–右键停止掉
2.卸载
3.清除残留文件 C:\ProgramData\MySQL 把这个MySQL文件夹删除

操作数据库 增删改查
SQL: 结构化查询语言,用来对关系型数据库进行操作,他是一套规范,关系型数据库,都会遵循此规范,但是允许各家的数据库有差异,这些差异,我们称之为 方言
对SQL语句我们习惯分为以下四类:
DDL (Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等。
DML (Data Manipulation Language):数据操作语言,用来定义数据库记录(增、删、改)。
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

DDL

创建数据库: create database 数据库名 例如:create database mubd;
查询所有库: show databases;
删除: drop database mybd;
修改数据库编码: alter database mybd character set=‘gdk’;
查看建库语言: show create database mybd;

– 切换库 use mybd;

–查看库下所有的表 show table ;

–查看表结构 desc 表名;
表头: id name age sal
创建表时,列名是有数据类型的
列的数据类型:
int 整型 id int,
double: 浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
money double(5,2)
char: 固定长度字符串类型;
name char(10) “张三”
varchar:可变长度字符串类型;
name varchar(10) “张三”
text: 字符串类型;存大格式的文本 比如存个小说 一般不用
blob: 字节类型;存字节类型的数据 比如电影字节 图片字节 但是一般不会把字节数据存到数据库当中
date: 日期类型,格式为:yyyy-MM-dd;
time: 时间类型,格式为:hh:mm:ss
datetime: 日期时间类型 yyyy-MM-dd hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss
* 如果该类型的字段不给赋值,则默认当前时间
创建表: create table 表名(列名1 数据类型,列名2 数据类型(长度),…)
例如:
create table student(
id int,
name varchar(16),
age int,
sal double(5,2),
birthday timestamp
);
列名的命名规范: 遵循java中的命名规范,记住不能拿mysql中的关键字来命名;
修改表名: alter table 旧的表名 rename to 新的表名
alter table student rename to stu;
删除表: drop table 表名
drop table stu;
表中 表头的操作 alter
添加一个列: alter table student add(phone varchar(11));
删除一个列: alter table student drop phone
修改列名: alter table student change name username varchar(20);
修改列的数据类型: alter table student modify username char(20);
查看建表语句: show create table student;

DML

DML:给表中插入数据删除数据修改数据
插入数据: insert into 表名(字段名,字段名2,…)values(值1,值2,…);
insert into student(id,name,age,sal) values(1,“张三”,23,555.44);
字符串类型的类 值的话,需要用单引号括起来
insert into student (name) values(‘王五’);
日期类型的列 值的话 用单引号括起来
insert into student(name,birthday) values(‘wangwu2’,‘2010-10-10 16:20:20’);
insert into student(name,birthday) values(‘wangwu3’,null);
如果说,我要给表中所有的字段都插入值 可以简写
insert into student(id,name,age,sal,birthday) values(1,‘zhangsan2’,23,555.55,null);
要给表中所有的字段都插入值 可以简写
insert into student values(10,‘zhangsan222’,23,555.55,null);
删除表中的所有数据
方式一:
逐行删除
delete from student ; -------- 无条件的删除,删除表中的所有数据。
方式二:
truncate table 表名;--------删除所有记录。
条件删除: where = > < >= <= and 并且 or或者

delete from student where name=‘zhangsan’;
delete from student where name=‘zhangsan’ and birthday=‘2019-08-21 15:44:12’
delete from student where name=‘zhangsan’ or name=‘wangwu2’ or name=‘wangwu3’;
insert into student(id,name,age,sal) values(1,‘zhangsan’,23,555.55);
修改表中的数据 update student set字段名=‘修改的值’,set 字段名…where 条件
不带条件的修改: update student set name =‘lisi’,age=30;
带有条件的修改:update student set name=‘王五’ ,age=25,sal=666.33 where name=‘张三’ and birthday =‘2019-08-21 15:22:22’;

DQL

DQL: SELECT 查询表中的数据
统配符 统配表中的所有字段
select from student ;
查询表中所有数据
查询个别字段
select id ,name,sal from student;
条件查询: where
=、!=、<>(不等于)、<、<=、>、>=;
BETWEEN…AND; 在什么范围之间
IN(set);
IS NULL;为空
IS NOT NULL 不为空
AND; 并且
OR; 或者
NOT;非
等值条件:
查询工资等于800 的员工
SELECT
FROM emp where sal=800;
查询工资大于1500的员工
SELECT
FROM emp where sal>=1500;
查询工资大于1000 奖金大于1000的员工
SELECTFROM emp where sal>1000 and comm>1000;
查询工资大于1000 或奖金大于1000 的员工
SELECT
FROM emp where sal>1000 or comm>1000;
查询工资大于等于2000小于等于3000的员工
SELECTFROM emp where sal between 2000 and 3000;
查询奖金是null的员工
null值比较特殊 要判断是不是null用=或!=是判断不出来的
SELECT
FROM emp where comm is nnull;
SELECTFROM emp where comm is not null;
字段运算
查询这个字段的年薪是多少
select ename, sal,sal
12 from emp;
查询员工的年薪是多少并加上奖金
null值参加运算结果就是null

select ename as 姓名 ,sal as 月薪,comm as 奖金,(sal12)+ifnull(0,comm) as 年薪 from emp;
查询工资是3000 的 distinct 对结果去重
select distinct sal from emp where sal=3000;
模糊查询:like
% 统配多个任意字符
—统配单个任意字符
查询姓名包含s的员工

SELECT
FROM emp where ename like ‘%s%’;
排序 order by
查询工资从小到大排序
SELECTFROM emp order by sal asc; 默认升序排序
SELECT
FROM emp order by desc;降序排序
SELECTFROM emp order by sal asc,comm desc;
可以排序多个字段
聚合函数:是用来做纵向运算的函数
查询有多少个员工,null值不参与计算

select count(empno) as 总人数 from emp;
统计工资发了多少
select sum(sal)as 总支出 from emp;
统计最高工资 最低工资 平均工资
selest max(sal) as 最高工资 from emp;
selest min(sal) as 最低工资 from emp;
selest avg(sal) as 平均工资 from emp;
按部门编号分组 比如有三个部门 然后求出每个部门的平均工资 那么展示出来的数据应该有三条
group by
select deptno as 部门号,avg(sal) as 部门平均工资 from emp group by deptno;
查询每个部门编号以及每个部门工资大于2000 的人数
分组之前可以通过where进行条件筛选
select deptno as 部门号,avg(sal) as 部门平均工资 from emp group by deptno having avg(sal)>2000;
select deptno as 部门号,avg(sal) as 部门平均工资 from emp group by deptno having 部门平均工资>2000;
查询各个部门员工工资大于1500的平均工资 并且平均工资大于3000 的部门
where和having的区别: where是分组之前进行条件的筛选,不符合条件的不参与分组,having是分组之后产生的结果集合,进行再次筛选
select deptno as 部门号,avg(sal) as 部门平均工资 from emp where sal>1500 group by deptno having 部门平均工资>3000;
分页查询 limit;
我要查询第一页每页展示四条;
SELECT
FROM emp LINIT 0,4; ---------第一页
SELECTFROM emp LINIT 4,4; ---------第二页
SELECT
FROM emp LINIT 8,4; ---------第三页
SELECT*FROM emp LINIT 12,4; ---------第四页
*起始索引=(页码-1)每页条数;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值