关于MySQL基础知识

本文介绍了数据库的基本概念,包括数据库、数据库管理系统和关系型数据库。详细阐述了数据库管理系统的常用工具如MySQL,并列举了其数据类型和常用的DOS命令进行数据库操作,如创建、删除数据库和表,以及插入、删除和更新数据。还涉及了查询语句,包括基本查询、条件查询、分组查询和多表查询等。
摘要由CSDN通过智能技术生成
  1. 什么是数据库?

答:数据库是储存和组织数据的仓库

  1. 什么是数据库管理系统?常见的有哪些?

答:管理和操作数据库的软件。常见的有:MySQL、SqlServer、Oracle、MongoDB、 Redis

  1. 什么是关系型数据库?

答:建立在关系模型的基础上,由多张二维表组成,这些二维表通过某种关系连接起来。

  1. 数据库与数据表的联系?

答:客户端 --- >数据库管理系统 --- >数据库 --->多张数据表

一个数据库管理系统中课创建多个数据库

一个数据库中可创建多个表

  1. 简单得DOS命令操作:

答:Win+R 跳出运行截面 输入cmd弹出窗口

1. 键盘 上 键 可以调出历史命令

2. cls 能够清屏

3. Tab 键 能够补全文件名

4. Ctrl+c 退出

  1. 使用DOS命令连接数据库

答:连接数据库

    mysql -h localhost -P 3306 -u root -p
    mysql -u root -p(简写)

查看已有数据库

show databases;(每一句执行语句后面都需要加分号;)

创建数据库

create database 数据库名;

删除数据库

drop database 数据库名;

使用数据库

use 数据库名;

查看正在使用的数据库名称

select database();

创建表

    create table 表名(
     字段一 数据类型(数据长度) comment “注释”,
    字段二 数据类型(数据长度) comment “注释”,
    字段三 数据类型(数据长度) comment “注释”,
    ...
    ) comment “注释”;

查看表结构

desc 表名;

查看创表语句

show create table userinfo;
  1. 常见数据库的数据类型

答:integer ----- js(number) 整数

real------ js(number) 浮点数

Text ----- js(string) 文本

时间维度 ---- js(new Date()) 时间

  1. 数据库表的三大范式

答:1NF:字段不可再分(字段唯一性)

2NF:一个表必须有主键,即每行数据都能被唯一的区分;非主属性依赖主属性

3NF:一个表中不能包涵其他相关表中非关键字段的信息,即数据表不能有冗余字段

注:需求 > 性能 > 范式

9.MySQL数据库系统

答:表:真正存放数据的地方

列:字段、属性,就是表头的定义

记录:一条一条的数据

数据:字段与记录交叉的地方

10.MySQL数据类型

答:在 MySQL 中,有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。

文本类型

char 固定长度的字符串

varchar 不是固定长度的字符串

text 文本类型

数字类型

int 0~255

tinyint

longint

float

double

时间类型

Datetime

11.MySQL添加数据

insert into 表名 (字段1,字段2) values (值1,值2)
insert into 表名 values (值)  

12.MySQL删除数据

delete from 表名  //会删除整个表数据  id不会重新排序
delete from 表名 where //通过判断确定删除某个数据  id不会重新排序
truncate 表名    //不能跟条件  删除整个表得数据  id会重新排序
drop table 表名   //删除表结构和表数据(删除整个表)

13.MySQL修改数据

update 表名 set 字段1="值",字段2="值" // 更新整个表格
update 表名 set 字段1="值",字段2="值" where   //通过判断具体更新某个记录

14.MySQL查询数据

基本查询

select * from 表名  //查询当前表里面得所有数据
select 字段1,字段2 from  表名  //查询某几个字段
select 字段1 as 别名,字段2 as 别名 from 表名   //查询字段并设置别名
select 字段1  别名,字段2  别名 from 表名   //查询字段并设置别名(省略as)
select distinct 字段1 from  //查询唯一数据   有了这个distinct 不能查询其他字段,要查询其他字段也只能放在后面
select * from 表名 where //根据条件查询表里所有数据

条件查询

//跟在where后面条件组合
逻辑运算符   and or not 
比较运算符  > < >= <=   !=  /  <>   
between  and     /     in   

模糊查询

like  "%字段%"  //包含某个字段
like  "字段%"  //以某个字段开头
like  "%字段"  //以某个字段结尾

聚合函数

Max(字段),min(字段),avg(字段)   //取该字段里面得最大值、最小值、平均值
count(字段)   统计该字段得个数  //不包括 null
count(*)   统计该表记录得个数  //包括 null

分组查询

select 字段(分组得字段) from 表名 [where] group by 字段

注意:分组查询 只能查 被分组得字段 和 聚合函数

分组查询和聚合函数天生一对

having where区别:

having后可跟聚合函数,where不行

having是对分组结果再次筛选,where条件判断后才分组:不满足条件则不参与分组

分页查询

limit 0,20   第一个表示起始下标,第二个值表示记录的个数
limit 20   表示查询的记录个数

排序

order by 字段  ASC 升序   DESC 降序

多表查询

内连接

//查询两个表里面的所有数据  不增加判断条件 会产生笛卡尔积的效果  隐式内连接
SELECT * FROM employee,dept;
//查询两个表里面的所有数据,增加判断条件 显示内连接  只查出了交集部分;
SELECT * FROM employee,dept WHERE employee.deptid = dept.deptid;
//查询两个表里面的所有数据,增加判断条件 设置别名 显示内连接 只查出了交集部分;
SELECT * FROM employee AS e,dept d WHERE e.deptid=d.deptid;
//显示内连接  只查出了交集部分
SELECT * FROM employee e INNER JOIN dept d ON e.deptid = d.deptid;

左连接

//LEFT JOIN  查询左表所有内容以及和右表相交的部分  如果左表的内容没有与右表对应 就用null 填充
SELECT * FROM employee e LEFT JOIN dept d ON e.deptid = d.deptid;

右连接

//RIGHT JOIN 查询右表所有内容以及和左表相交的部分  如果右表的内容没有与左表对应 就用null 填充
SELECT * FROM employee e RIGHT JOIN dept d ON e.deptid = d.deptid;

子连接

//根据查询条件一层一层内连接进行嵌套
//查询H5教学部的所有员工信息
SELECT * FROM employee WHERE deptid = (SELECT deptid FROM dept WHERE dname = "H5教学部");

//查询employee表中salary最大值对应的该条所有数据
SELECT * FROM employee WHERE salary = (SELECT MAX(salary) mas FROM employee);

SELECT * FROM employee e INNER JOIN (SELECT MAX(salary) mas FROM employee) a ON e.salary = a.mas

SELECT * FROM employee e,(SELECT MAX(salary) mas FROM employee) a WHERE e.salary = a.mas

//查询employee表中salary最大值对应的姓名和最大工资
SELECT e.name,a.mas FROM employee e,(SELECT MAX(salary) mas FROM employee) a WHERE e.salary = a.mas

//查询employee表中salary大于平均薪资的所有员工数据
SELECT AVG(salary) FROM employee;

SELECT * FROM employee WHERE salary >= (SELECT AVG(salary) FROM employee);
SELECT e.* FROM employee e INNER JOIN (SELECT AVG(salary) avs FROM employee) a ON e.salary >= a.avs

//查询employee表中salary大于平均薪资的所有员工数据 显示出对应的部门名称

SELECT a.*,d.dname FROM (SELECT e.* FROM employee e INNER JOIN (SELECT AVG(salary) avs FROM employee) a ON e.salary >= a.avs) a INNER JOIN dept d ON a.deptid = d.deptid;

//列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序 
SELECT deptid,COUNT(*) num FROM (SELECT e.*,a.avs FROM employee e INNER JOIN (SELECT AVG(salary) avs,deptid  FROM employee GROUP BY deptid) a WHERE e.deptid = a.deptid AND e.salary >= a.avs) a GROUP BY deptid ORDER BY deptid 
DESC;

//列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序 并显示出部门名
 
SELECT a.*,d.dname FROM (SELECT COUNT(*) num,deptid FROM (SELECT e.*,a.avs FROM employee e,(SELECT AVG(salary) avs,deptid FROM employee GROUP BY deptid) a WHERE e.salary >=a.avs AND e.deptid = a.deptid) a GROUP BY deptid ) a 
INNER JOIN dept d ON a.deptid = d.deptid  ORDER BY deptid DESC;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值