MYSQL的相关知识概述,带有面经(基础篇)

1、数据库的基本概念

2、MySQL数据库软件的基本配置

3、SQL的相关介绍

4、SQL分类 ——面试题

5、承接上个问题的一些例子

6、相关练习(题目)

7、相关练习(问题)


整理仓促,文章中有任何问题,敬请提出,感谢支持,让我们共同进步吧!

MYSQL的相关知识概述,共分基础篇、进阶篇和高级篇!

1、数据库的基本概念

MYSQL的相关知识概述,带有面经(基础篇)_第1张图片

1. 数据库的英文单词: DataBase 简称 : DB

2. 什么数据库?

——— 用于存储和管理数据的仓库。

1. 内存存储:变量 -> 集合/数组 缺点:无法持久化存储,优点:存取很快。

2. 文件存储:缺点:存取很慢,优点:可以持久存储,

3. 数据库的特点:

1. 持久化存储数据的。其实数据库就是一个文件系统

2. 方便存储和管理数据使用了统一的方式操作数据库 -- SQL

2、MySQL数据库软件的基本配置

MYSQL的相关知识概述,带有面经(基础篇)_第2张图片

* MySQL服务启动

1. 手动。

2. cmd--> services.msc 打开服务的窗口

3. 使用管理员打开cmd

* net start mysql : 启动mysql的服务

* net stop mysql:关闭mysql服务

* MySQL登录

打开dos命令行(CMD)

1. mysql -uroot -p密码

2. mysql -hip -uroot -p连接目标的密码

3. mysql --host=ip --user=root --password=连接目标的密码

* MySQL退出

1. exit

2. quit

3、SQL的相关介绍

MYSQL的相关知识概述,带有面经(基础篇)_第3张图片

1.什么是SQL?

Structured Query Language:结构化查询语言

其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。

(下面有例子解释方言)

2.SQL通用语法

1. SQL 语句可以单行或多行书写,以分号结尾。

2. 可使用空格和缩进来增强语句的可读性。

3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。

3 注释

* 单行注释: -- 注释内容 或 # 注释内容(mysql 特有)

* 多行注释: /* 注释 */

4、SQL分类 ——面试题

MYSQL的相关知识概述,带有面经(基础篇)_第4张图片

简称:CRUD

1) DDL(Data Definition Language)数据定义语言

用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等

2) DML(Data Manipulation Language)数据操作语言

用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等

3) DQL(Data Query Language)数据查询语言

用来查询数据库中表的记录(数据)。关键字:select, where 等

4) DCL(Data Control Language)数据控制语言(了解)

用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

5、承接上个问题的一些例子

CRUD
C:creat
1、创建数据库:
creat database +(heiheihei);
creat database if not exists+(heiheihei);
2、创建数据库,并指定字符集
creat database if not exists haha character set gbk;
utf8b4 == utf-8,数据库中没有utf-8字符集
R:read
3、查看所有的库
show database;
4、查看数据库的名称
show creat database haha;
U:update
5、修改字符集
ALTER DATABASE haha CHARACTER SET utf8mb4;
D:delete
6、删除已存在的数据库
DROP DATABASE if EXISTS haha;
7、删除数据库
DROP DATABASE haha;
8、查询当前所在的数据库
USE DATABASE();
9、SELECT 字句
SELECT 字段列表 FROM 表名
SELECT * FROM emp;
SELECT ENAME,SAL FROM emp;
10、select去重(DISTINCT )
SELECT DISTINCT ENAME,SAL FROM emp;
11、有NULL存在时
SELECT ENAME,SAL*16+COMM*12 FROM emp;(错)
SELECT ENAME,SAL*16+(COMM,0)*12 FROM emp;(改)
12、where字句,条件查询
SELECT ENAME,SALFROM emp WHERE SAL >1000;(SAL后要有空格)
13、where字句,条件查询,没有关键字
select * from emp where comm is not null;
14、模糊查询,占位符 like "%"、"_ _"
SELECT ENAME,SAL FROM emp WHERE ENAME LIKE "%克";
SELECT ENAME,SAL FROM emp WHERE ENAME LIKE "%斯%";

6、相关练习(题目)

数据表:
年级表(Grade):年级 id(主键)-gradeid,年级名称(gname)
成绩表(score):id(主键)-scoreid,学员编号-stuno,科目 id-subjectid,
分数-score,考试时间-examtime
学生表(student):学生编号(主键)-stuid,学生姓名-stuname,登录密
码-password,性别-sex,年级 id-gid,电话-telphone,地址-address,出生日
期-birthday,邮箱-email
科目表(subject):科目 id(主键)-subjectid,科目名称-subjectname,课
时-studycount,年级 id-gradeid

7、相关练习(问题)

DDL语句

Grade

CREATE TABLE `grade` (
  `gradeid` int(11) NOT NULL AUTO_INCREMENT,
  `gname` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`gradeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

score

CREATE TABLE `score` (
  `scoreid` int(20) NOT NULL AUTO_INCREMENT,
  `stuno` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `subjectid` int(20) NOT NULL,
  `score` int(120) DEFAULT NULL,
  `examtime` datetime(5) DEFAULT NULL,
  PRIMARY KEY (`scoreid`,`subjectid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

student

CREATE TABLE `student` (
  `stuid` int(11) NOT NULL AUTO_INCREMENT,
  `stuname` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `password` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `sex` varchar(2) COLLATE utf8_bin DEFAULT NULL,
  `address` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `birthday` datetime(5) DEFAULT NULL,
  `email` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`stuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

subject

CREATE TABLE `subject` (
  `subjectid` int(20) NOT NULL AUTO_INCREMENT,
  `subjectname` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `studycount` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `gradeid` int(11) NOT NULL,
  PRIMARY KEY (`subjectid`,`gradeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

1. grade 表增加一个阶段,“就业期”
INSERT INTO grade(gname) VALUES('就业期');
2.将第三阶段的学生的 gradeid 改为就业期的 id
UPDATE student SET gid=(SELECT gradeid FROM grade where gname=('就业期') WHERE gid=(select gradeid from grade where gname='第三阶段');
3.查询所有得了 100 分的学号
SELECT stuno FROM score WHERE score=100;
4.查询所有 1989 年出生的学生(1989-1-1~1990-1-1)
SELECT * FROM student WHERE BETWEEN birthday='1989-1-1' AND '1990-1-1';
5.查询学生姓名为“金蝶”的全部信息
SELECT * FROM student WHERE stuname='金蝶';
6.查询 subjectid 为 8 的科目考试未及格(60 分)的学号和成绩
SELECT stuno,score FROM score WHERE subjectid=8 AND score<60;
7.查询第 3 阶段课时大于 50 的课程全部信息
SELECT * FROM SUBJECT gradeid=3 AND studcount>50;
8.查询 S1101001 学生的考试信息
SELECT * FROM score WHERE stuno='S1101001';
9.查询所有第二阶段的女生信息
SELECT * FROM student WHERE sex='女' and gid=(SELECT gradeid FROM grade where gname='第二阶段');
10.“基于.NET 平台的软件系统分层开发”需要多少课时
SELECT studycount FROM `subject` WHERE subjectname='基于.NET 平台的软件系统分层开发';
11.查询“设计 MySchool 数据库”和“面向对象程序设计”的课时(使用 in)
SELECT studycount FROM `subject` WHERE subjectname in('设计 MySchool 数据库','面向对象程序设计');
12 查询所有地址在山东的学生信息
SELECT * FROM student WHERE address LIKE='%山东%';
13 查询所有姓凌的单名同学
SELECT * FROM student WHERE stuname LIKE='凌_';
14.查询 gradeid 为 1 的学生信息,按出生日期升序排序
SELECT * FROM student WHERE gradeid=1 ORDER BY birthday;
15.查询 subjectid 为 3 的考试的成绩信息,用降序排序
SELECT * FROM score WHERE subjectid=3 ORDER BY score DESC;
16.查询 gradeid 为 2 的课程中课时最多的课程信息
SELECT * FROM `subject` WHERE gradeid=2 ORDER BY studycount DESC LIMIT 0,1;
17.查询北京的学生有多少个
SELECT count(*) from student WHERE address LIKE='%北京%';
18.查询有多少个科目学时小于 50
SELECT count(*) FROM `subject` WHERE studycount<50;
19.查询 gradeid 为 2 的阶段总课时是多少
SELECT SUM(studycount) FROM `subject` WHERE gradeid=2;
20.查询 subjectid 为 8 的课程学生平均分
SELECT AVG([DISTINCT] score) FROM `subject` WHERE subjectid=8; 
21.查询 gradeid 为 3 的课程中最多的学时和最少的学时
SELECT MAX(studycount),MIN(studycount) FROM `subject` WHERE gradeid=3
22.查询每个科目有多少人次考试
SELECT gradeid,AVG([DISTINCT] studycount) FROM `subject`GROUP BY gradeid;

23.每个阶段课程的平均课时
SELECT COUNT(*) FROM score GROUP BY subjectid;
24.查询每个阶段的男生和女生个数(group by 两列)
SELECT gid,sex,COUNT(*) FROM student GROUP BY gid,sex;

基础篇结束!!

你可能感兴趣的:(java,数据库,学习,mysql,数据库,mariadb)