MySQL数据库——day26 数据库安装,卸载,概念,msq的介绍,安装,连接,DDL,DML,DQL模糊查询,字段控制(别名和运算),排序,聚合函数,分组查询(where和having),分页查询

学到mysql的时候非常的快,感觉前面的没有很巩固,还是要复习前面的博客

常见的数据库

MySQL , Oracle , SQL Server , SQLite , DB2 , …

  • SQL Server 微软的 中小型关系型数据库
  • MySQL 中小型的关系型数据库
  • Oracle 大型的关系型数据库
  • 数据库管理系统(DataBase Management System)

关系型数据库:具有行和列这种二维表结构的数据库
非关系型数据库: NOSQL 用键值关系来存储数据 类似 json

  • 数据库的安装
  • 数据库的卸载
    1.可以使用第三方的卸载软件来卸载
    2.在控制面板里面常规卸载
    2.1.停止后台服务 电脑–右键–管理—服务—mysql–右键停止掉
    2.2.卸载
    2.3.清除残留文件 C:\ProgramData\MySQL 把这个MySQL文件夹删除

数据库的概念

  • 数据库(DataBase,简称DB)
  • 概念:放在计算机内有组织,可共享大量数据的仓库
  • 作用:保存,并且能安全管理数据(增删改查),减少数据的冗余

MySQL介绍

  • 概念:是现在流行的开源的的,免费的,关系型数据库
  • 历史:由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。
  • 特点:
    免费,开源数据库
    小巧,功能齐全
    使用便捷
    可运行Windows或Linux操作系统
    适用于中小型公司或者是大型网站

安装

链接数据库

首先在dos命令下打开,net start myslq,然后登陆 mysql -u -p

几个基本的数据库操作命令

update user set password =password (‘123456’)where user =‘root’;
flash privilegs ;刷新数据库
show databases;显示所有的数据库
use dbname;打开某个数据库
show tables;显示mysql数据库中的所有的表
describe user;显示表mysql数据库中user表的列的信息
create databases name;创建数据库
use databasesname;选择数据库

exit ;退出mysql
?命令关键词:寻求帮助
#表示注释
/**/表示多行注释

结构化分类

DDL(data definition language):数据定义语言,用来定义数据库对象:库,表,列等;
DML(data manipulation language ):数据库操作语言,用来定义数据库记录(增,删,改);
DCL(data control language):数据控制语言,用来定义访问权限和安全级别;
DQL(data query language):数据查询语言,用来查询记录(数据),

DDL:创建 表对象修改列名

创建数据库:create database ; 数据库名字
查询所有的数据库:show databases;
删除:drop database 数据库名字
修改数据库编码:alter database 数据库名字 character set=‘gbk’;
查看建库语句:show create database 数据库名字

建表 删除表 对表头进行操作

切换库: use mydb;
查看库下面所有的表 show tables;
查看表结构 desc 表名;例如: desc student;

  • 常见的数据类型

在这里插入图片描述

  • 字符串类型
    -
  • 日期和时间型数值类型
    在这里插入图片描述
  • 数据表类型
    MySQL数据表的常见类型:MyISAM,InnoDB,HEAP,BOB,CSV等…
    常见的MyISAM与InnoDB类型
    在这里插入图片描述

创建表

create table 表名(列名 数据类型,列名2 数据类型2(长度),…);
案例

# 目标 : 创建一个school数据库
# 创建学生表(列,字段)
# 学号int 登录密码varchar(20) 姓名,性别varchar(2),出生日期(datatime),家庭住址,email
# 创建表之前 , 一定要先选择数据库

CREATE TABLE IF NOT EXISTS `student` (
  `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` varchar(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
  `pwd` varchar(20) NOT NULL DEFAULT '123456' COMMENT '密码',
  `sex` varchar(2) NOT NULL DEFAULT '男' COMMENT '性别',
  `birthday` datetime DEFAULT NULL COMMENT '生日',
  `address` varchar(100) DEFAULT NULL COMMENT '地址',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

#查看数据库的定义
show create databases sholl;
#查看数据表的定义
show create table sstudent;
#显示表结构
dese student;
#设置严格检查模式(不能容错了)
set sql_mode='STRICT_TRANS_TABLES';
列名的命名规范和Java一样,不要拿SQL中的关键字来命名
  • 修改表名
    alter table 旧表名 rename to 新表名;
    alter table student rename to stu;
  • 删除表
    drop table 表名;
表中表头的操作
  • 添加列
    alter table 表名 add(phone varchar(20));
  • 删除列
    alter table 表名 drop(phone);
  • 修改列名
    alter tablie 表名 change 旧列名 新列名(类型);
  • 修改列的数据类型
    alter table 表名 cahnge 旧列名 新列名(类型);
    alter table 表名 modify 列名(新的类型);
  • 查看建表语句
    show create tables 表名;
DML修改表的结构,给表进行增删改查
  • 插入数据:
    insert into 表名 (把表头插进去,插入全部的话表头可以省略)value(‘值是字符串类型的话就用单引号引起来’,double类型的要一致,timestamp’可以指定格式’/null(默认));

  • 删除表中的所有行:
    delete from 表名;
    truncate table 表名;

  • 条件删除
    delete from 表名 表名 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’;

  • 修改表中的数据:
    (全部改成一样的)
    update 表名 set 字段名=‘新值’,set 字段名=‘新值’ …
    (有针对性的改)
    update 表名 set 字段名=‘新值’ , 字段名=‘新值’ … where 字段名=‘旧值’ and 字段名=‘旧值’;

DQL 查询表中的数据

无条件查询

  • 查询表中的所有的数据
    selete * from 表名;
  • 查询个别字段
    selete name,age(字段名) from 表名;

条件查询 where
=、!=、<>(不等于)、<、<=、>、>=;
BETWEEN…AND; 在什么范围之间
IN(set);
IS NULL;为空
IS NOT NULL 不为空
AND; 并且
OR; 或者
NOT;非

模糊查询

  • 通配符: _ 匹配单个任意字符
    比如: 我要查询姓名是3个任意字符组成的
    select * from student sname like=’___’;(三个下划线)
    例如:我要查询第二个字符是m的
    select * from student where sanme like ‘_m%’;

  • **%**匹配多个任意字符
    例如:我要查询名字中包含m的 select * from student where sname like ‘%m%’;
    例如我要查询名字是a开头的 select * from student where sname like ‘a%’;
    例如我要查询名字是b结尾的 select * from student wher like ‘%b’;

字段控制

  • 修改字段名称:AS(可以山省略)
    例如: select sname as 别名, sage 别名 from student;
    给运算字段起别名:
    例如: select sname as 姓名, (工资+奖金) as 总收入 from student;
    给表起别名:给每一张表起一个别名。简化书写
    例如: select stu.sname, stu.sage from student as stu;
  • 字段运算:
    null参与的运算,结果都为null
    比如 工资 是100 奖金是null 我们让这两个字段运算 那结果就为null
    一般会将null替换为0: ifnull(字段名称,如果是null的替换值) ifnull 是mysql的方言
    所有如果奖金字段为null 一般我们把奖金替换为0
    例如: select sname,(工资+ifnull(奖金,0)) as 总收入from student;
  • 去除重复记录 比如我查询工资是3000的 出现了多条工资为3000 的记录 那我只想展示一条3000的记录 所以可以用 distinct 去除重复记录
    * DISTINCT
    例如: select distinct 工资 from student;

排序order by 默认升序 (sac) desc(降序)

按工资从大到小进行排序
selete * from student order by 工资 asc;
按照工资从小到大进行排序
selete * from student order by 工资 desc;
如果出现多条重复的工资,可以指定第二条排序
selete * from student order by 工资 desc ,奖金desc;

聚合函数

概念:我们可以做纵向运算的函数

  • COUNT():统计个数的.统计不为null的记录的行数
    select count (sid) from student; 或者select count (*) from student;

  • MAX():指定某列的最大值,如果是字符串的话就按照字符串的排运算
    查询工资最大
    selete max(工资) as 最高工资 from student;

  • MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
    例如 查询 最少工资 select min(工资) as 最小工资 from student;

  • SUM():计算指定列的数值和,如果指 定列类型不是数值类型,那么计算结果为0;
    例如 计算总工资 select sum(工资) as 总支出 from student;

  • SUM():计算指定列的数值和,如果指 定列类型不是数值类型,那么计算结果为0;
    例如 计算总工资 select sum(工资) as 总支出 from student;

  • AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
    例如:计算平均 工资 select avg(工资) as 平均工资 from student;

分组查询group by 一般配合聚合函数的使用才有意义

  • 查询的字段:
    1.分组字段本身
    2.聚合函数
  1. 比如:按照部门的编号分组,有三个部门,要查询各个部门的平均工资
    selete 部门编号 avg(工资) from student group by 部门编号;
  • where和having
    where :在分组之前对条件进行限定,没有满足条件的就不能进行分组
    having:在分组之后岁结果集进行删选,没有选上的就不用
    2.我要查询各个部门的平均工资2000的部门
    selete 部门编号 avg(工资) from student group by 部门编号 having avg(工资) >2000;
    3.查询各个部门员工平均工资,大于1500的部门,大于2000的部门
    selete 部门,avg(工资) from student group by 部门编号 where avg(工资)>1500 having avg(工资)>2000;

分页查询:limit

limit 0,5,10…
开始记录索引,每个索引显示的条数 (索引都是从0开始)
开始记录索引=(页码-1)*每一页显示的条数
例如:显示第一页,每页显示5条记录:
selete * from student limit 0,5;这是第一页的5条记录
selete * from student limit 1,5,这是第二页的5条记录
selete * from student limit 2,5这是第三页的5条记录

  • oracle:rownum 分页方言
  • sqlserver:top 分页方言
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值