mysql基础知识(概念 数据库的安装卸载 语句DDL DML DQL DCL )

本文详细介绍数据库概念,包括数据库的定义、分类、安装及卸载流程,以及关系型数据库和非关系型数据库的区别。深入讲解SQL语言,涵盖DDL、DML、DCL和DQL的使用方法,包括创建、修改、查询和控制数据库,以及如何进行数据的增删改查操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

* 数据库的概念

存储数据的仓库,电脑装有数据库软件,就可以对外提供数据的增删改查服务,这台电脑,就是一台,数据库服务器

* 常见数据库:

SQLServer 微软的 中小型关系型数据库
MySQL 中小型的关系型数据库
Oracle 大型的关系型数据库

* 关系型数据库和非关系型数据库

关系型数据库 :具有行和列的这种二维表结构的数据库

非关系型数据: NOSQL 用键值关系来存储数据 类似 json

* 数据库的安装和卸载
数据库的安装
数据库的卸载
  • 可以使用第三方的卸载软件来卸载

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

操作数据库 增删改查

SQL:结构化查询语言,用来对关系型数据库进行操作,它是一套规范,关系型数据库,都会遵循此规范,但是允许有差异,称为方言

* SQL语句分类

sql分类:
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;

DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(增、删、改)

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;

DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

* DDL:
  • 创建数据库:create database 数据库名 例如: create database mydb;

  • 查询所有库:show databases;

  • 删除:drop database mydb;

  • 修改数据库编码:alter database mydb character set=‘gbk’;

  • 查看建库语句:show create database mydb;

  • 我们要建表 删除表 对表头进行操作(增删改表头)

  • 切换库 use mydb;

  • 查看改库下所有的表 show tables;

  • 查看表结构 desc 表名; 例如: desc student;

表头: id name age sal

  • 创建表时,列名 要有数据类型 数据库中常见的列的数据类型

  • 列的数据类型:
    int:整型 id int,

    double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
    money double(5,2)

    char:固定长度字符串类型;

    varchar:可变长度字符串类型;

    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 数据类型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 student;

  • 表中 表头的操作 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);

    alter table student change username username varchar(20);

  • 查看建表语句
    show create table student;

* DML:给表中 插入数据,删除数据,修改数据
  • 插入数据 insert into 表名(字段名,字段名2,…) valuses(值1,值2,…);

    insert into student(id,name,age,sal) values(1,‘zhangsan’,23,555.55);

    字符串类型的类 值的话,用单引号引起来
    insert into student(name) values(‘wangwu’);

    yyyy-MM-dd hh:mm:ss
    日期类型的列 值的话 用单引号引起来
    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’;

  • 修改表中的数据 update student set 字段名=‘修改的值’ , set 字段名 … where 条件

    不带有条件的修改
    update student set name=‘lisi’,age=30;

    带有条件的修改
    update student set name=‘wangwu’,age=25,sal=666.66 where name=‘zhangsan2’ and birthday=‘2019-08-21 15:52:59’;

* DQL: select 查询表中的数据
  • 查询表中所有的信息
    select * from 表名

  • 查询个别字段
    select 字段名称,字段名称 from 表名

  • 条件查询

    =、!=、<>(不等于)、<、<=、>、>=

    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的员工
    select * from emp where sal>1000 and comm>1000;

  • 查询工资 大于等于2000 小于等于 3000 的员工
    select * from emp where sal>=2000 and sal<=3000;

    select * from emp where sal between 2000 and 3000;

  • 要查询奖金是null的员工

  • null 值比较特殊,你要判断是不是null 用 = 或 != 判别不出来

    select * from emp where comm is null

    select * from emp where comm is not null

  • 字段运算

  • 查询这个员工的年薪是多少

    select ename,sal,sal*12 from emp;

  • 可以给字段起别名,用于展示好看一些 AS 可以省略不写

    select ename 姓名,sal 月薪,sal*12 AS 年薪 from emp;

  • 查询这个员工的年薪是多少 并且把奖金加上

  • null值参与运算 结果就是null了

  • ifnull 来处理null 值 ifnull(0,comm)
    select ename AS 姓名,sal as 月薪,comm as 奖金,(sal*12)+ifnull(0,comm) as 年薪 from emp;

  • 注意 nullif(参数一,参数二) 如果参数一等于参数二,返回值为NULL,否则返回参数一

  • 查询工资是3000的 distinct 对结果去重
    select distinct sal from emp where sal=3000;

  • 查询这个奖金是 500 300 1400 的员工
    select * from emp where comm=300 OR comm=500 OR comm=1400;

  • in()
    select * from emp where comm in(300,500,1400) OR sal in(800);

  • as 可以给字段起别名,也可以给表起别名
    select e.ename,e.job,e.sal from emp as e where e.comm is not null;

  • 模糊查询 like
    %通配多个任意字符
    _ 统配单个任意字符

  • 查询 姓名包含S的员工
    select * from emp where ename like ‘%S%’

  • 查询 姓名是以S开头的
    select * from emp where ename like ‘S%’

  • 查询 姓名是以T结尾的
    select * from emp where ename like ‘%T’

  • 查询 姓名第二个字符是C的员工
    select * from emp where ename like ‘__O%’

  • 查询 姓名是5个字符组成的
    select * from emp where ename like ‘_____’

  • 排序 order by

  • 查询工资 从小到大排列
    select * from emp order by sal asc; – 默认升序排列

    select * from emp order by sal desc; – 降序排列

    select * from emp order by sal asc,comm desc; – 可以排序多个字段

  • 聚合函数:

  • 聚合函数是用来做纵向运算的函数:
    count(empno) 统计一列由多少个

  • 统计工资发了多少
    select sum(sal) as 总支出from emp;

  • 统计最高工资 最小工资 平均工资
    select max(sal) as 最高工资 from emp;

    select min(sal) as 最小工资 from emp;

    select avg(sal) as 平均工资 from emp;

  • group by

    select deptno as 部门号, avg(sal) as 部门平均工资 from emp group by deptno;

  • 例如查询 每个部门的部门编号 以及每个部门工资大于1500的人数
    分组之前可以通过where 做条件筛选
    select deptno as 部门号, count(*) as 部门人数 from emp where sal>1500 group by deptno;

  • .例如 我要查询 各个部门平均工资 大于2000 的部门

  • having 对分组之后的结果,进行再次筛选
    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

  • where 和 having 的区别,where 是分组之前,进行条件筛选,不符合条件的不参与分组,having 是对分组之后产生的结果集,进行再次筛选

  • 分页查询 limit

  • 查询第一页,每页展示4条

    select * from emp limit 0,4; – 第一页

    select * from emp limit 4,4; – 第二页

    select * from emp limit 8,4; – 第三页

    select * from emp limit 12,4; – 第四页

  • 起始索引=(页码-1)*每页的条数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值