1、数据库的基本概念
2、MySQL数据库软件的基本配置
3、SQL的相关介绍
4、SQL分类 ——面试题
5、承接上个问题的一些例子
6、相关练习(题目)
7、相关练习(问题)
整理仓促,文章中有任何问题,敬请提出,感谢支持,让我们共同进步吧!
MYSQL的相关知识概述,共分基础篇、进阶篇和高级篇!
1. 数据库的英文单词: DataBase 简称 : DB
2. 什么数据库?
——— 用于存储和管理数据的仓库。
1. 内存存储:变量 -> 集合/数组 缺点:无法持久化存储,优点:存取很快。
2. 文件存储:缺点:存取很慢,优点:可以持久存储,
3. 数据库的特点:
1. 持久化存储数据的。其实数据库就是一个文件系统
2. 方便存储和管理数据使用了统一的方式操作数据库 -- SQL
* 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
1.什么是SQL?
Structured Query Language:结构化查询语言
其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
(下面有例子解释方言)
2.SQL通用语法
1. SQL 语句可以单行或多行书写,以分号结尾。
2. 可使用空格和缩进来增强语句的可读性。
3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
3 注释
* 单行注释: -- 注释内容 或 # 注释内容(mysql 特有)
* 多行注释: /* 注释 */
简称: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 等
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 "%斯%";
数据表:年级表(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
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;
INSERT INTO grade(gname) VALUES('就业期');
UPDATE student SET gid=(SELECT gradeid FROM grade where gname=('就业期') WHERE gid=(select gradeid from grade where gname='第三阶段');
SELECT stuno FROM score WHERE score=100;
SELECT * FROM student WHERE BETWEEN birthday='1989-1-1' AND '1990-1-1';
SELECT * FROM student WHERE stuname='金蝶';
SELECT stuno,score FROM score WHERE subjectid=8 AND score<60;
SELECT * FROM SUBJECT gradeid=3 AND studcount>50;
SELECT * FROM score WHERE stuno='S1101001';
SELECT * FROM student WHERE sex='女' and gid=(SELECT gradeid FROM grade where gname='第二阶段');
SELECT studycount FROM `subject` WHERE subjectname='基于.NET 平台的软件系统分层开发';
SELECT studycount FROM `subject` WHERE subjectname in('设计 MySchool 数据库','面向对象程序设计');
SELECT * FROM student WHERE address LIKE='%山东%';
SELECT * FROM student WHERE stuname LIKE='凌_';
SELECT * FROM student WHERE gradeid=1 ORDER BY birthday;
SELECT * FROM score WHERE subjectid=3 ORDER BY score DESC;
SELECT * FROM `subject` WHERE gradeid=2 ORDER BY studycount DESC LIMIT 0,1;
SELECT count(*) from student WHERE address LIKE='%北京%';
SELECT count(*) FROM `subject` WHERE studycount<50;
SELECT SUM(studycount) FROM `subject` WHERE gradeid=2;
SELECT AVG([DISTINCT] score) FROM `subject` WHERE subjectid=8;
SELECT MAX(studycount),MIN(studycount) FROM `subject` WHERE gradeid=3
SELECT gradeid,AVG([DISTINCT] studycount) FROM `subject`GROUP BY gradeid;
SELECT COUNT(*) FROM score GROUP BY subjectid;
SELECT gid,sex,COUNT(*) FROM student GROUP BY gid,sex;