MySQL数据库-个人归纳总结
1 什么是数据库?
百度百科解释:
2 数据库的分类?具体含义?常见的数据库?
2.1 数据库的分类
2.1.1 关系型数据库
关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。关系数据库的定义造成元数据的一张表格或造成表格、列、范围和约束的正式描述。每个表格(有时被称为一个关系)包含用列表示的一个或更多的数据种类。 每行包含一个唯一的数据实体,这些数据是被列定义的种类。当创造一个关系数据库的时候,你能定义数据列的可能值的范围和可能应用于那个数据值的进一步约束。而SQL语言是标准用户和应用程序到关系数据库的接口。其优势是容易扩充,且在最初的数据库创造之后,一个新的数据种类能被添加而不需要修改所有的现有应用软件。主流的关系数据库有oracle、db2、sqlserver、sybase、mysql 等。
关系数据库---标志需要使用表格来存储数据。
表格
- 列
- 每一个列需要对应的数据类型来限制需要被保存的数据值
- 需要使用约束,来约束每一个列中的数据
- 行就代表一个实体数据
2.1.2 非关系型数据库
非关系型数据库,又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL( Structured QueryLanguage,结构化查询语言),据*介绍,NoSQL最早出现于1998 年,是由Carlo Storzzi最早开发的个轻量、开源、不兼容SQL 功能的关系型数据库,2009 年,在一次分布式开源数据库的讨论会上,再次提出了NOSQL 的概念,此时NOSQL主要是指I非关系型、分布式、不提供ACID (数据库事务处理的四个本要素)的数据库设计模式。同年,在亚特兰大举行的“NO:SQL(east)”讨论会上,对NOSQL 最普遍的定义是“非关联型的”,强调Key-Value 存储和文档数据库的优点,而不是单纯地反对RDBMS,至此,NoSQL 开始正式出现在世人面前。
2.2 常见的关系型数据库
3 MySQL数据库服务器、数据库和表的关系?
所谓数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如图所示:
MySQL数据库服务器就是一个数据库管理程序/一个数据库管理软件。
我们一个操作系统上安装一个MySQL数据库服务器,打开进入到MySQL数据库服务器上,就可以给这个MySQL数据库服务器创建一个/多个数据库,为每一个数据库创建一个/对个数据表,可以向数据表中保存实体数据。
通常情况下都是一个应用程序对应一个数据库,这个一个数据库中有好多张表,来存储数据。
4 MySQL数据库服务器下载和安装?【解决MySQL安装到最后一步未响应的三种方法】
MySQL服务器下载地址:https://downloads.mysql.com/archives/community/
下载好的文件如图:
MySQL的安装:
1 打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup.exe”
2 选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,选择“Custom”,按“next”键继续。
3 在“Developer Components(开发者部分)”上左键单击,选择“This feature,and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。在上面的“MySQL Server(mysql服务器)”、“Client Programs(mysql客户端程序)”、“Documentation(文档)”也如此操作,以保证安装所有文件。点选“Change...”,手动指定安装目录。
4 填上安装目录,我的是“F:\Server\MySQL\MySQL Server 5.0”,也建议不要放在与操作系统同一分区,这样可以防止系统备份还原的时候,数据被清空。按“OK”继续。
确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。
5 正在安装中,请稍候,直到出现下面的界面
这里是询问你是否要注册一个mysql.com的账号,或是使用已有的账号登陆mysql.com,一般不需要了,点选“Skip Sign-Up”,按“Next”略过此步骤。继续则完成MYSQL的安装。
MySQL的配置
1 安装完成了,出现如下界面将进入mysql配置向导。
2 选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
3 选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”
4 选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),按“Next”继续。
5 选择网站并发连接数,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”。
6 是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器*问mysql数据库了,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。如果是新手,建议您取消标准模式以减少麻烦。但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续
7 就是对mysql默认数据库语言编码进行设置(重要),一般选UTF-8,按 “Next”继续。
8 选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),我这里全部打上了勾,Service Name不变。按“Next”继续。
9 询问是否要修改默认root用户(超级管理)的密码。“Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。
10 确认设置无误,按“Execute”使设置生效,即完成MYSQL的安装和配置。
注意:设置完毕,按“Finish”后有一个比较常见的错误,就是不能“Start service”,一般出现在以前有安装mysql的服务器上,解决的办法,先保证以前安装的mysql服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,之前的密码是否有修改,照上面的操作;如果依然不行,将mysql安装目录下的data文件夹备份,然后删除,在安装完成后,将安装生成的 data文件夹删除,备份的data文件夹移回来,再重启mysql服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。
卸载MySQL数据库服务器:
- 卸载MySQL
- 删除安装目录及数据存放目录
- 在注册表(regedit)查询mysql,全部删除,
注意的是注册表 cmd -> regedit
1.HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 目录
2.HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目录
3.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 目录
4.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl001\Services\MYSQL 目录
5.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl002\Services\MYSQL 目录
6.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MYSQL 目录
4、在c盘查询MySQL,全部删除 ;一般是在ProgramData文件夹下(该文件是隐藏的,需要设置为显示隐藏文件)和winbdows文件夹下
【解决MySQL安装到最后一步未响应就直接卸载重新安装】
5 SQL语言
5.1 基本数据库操作语句
CREATE DATABASE [IF NOT EXISTS] db_name
CHARACTER SET:指定数据库采用的字符集
COLLATE:指定数据库字符集的比较方式
例如:
创建一个名称为mydb1的数据库。
CREATE DATABASE mydb1;
创建一个使用utf8字符集的mydb2数据库。
CREATE DATABASE mydb2 CHARACTER SET utf8;
创建一个使用utf8字符集,并带比较规则的mydb3数据库。
CREATE DATABASE mydb3 CHARACTER SET utf8 COLLATE utf8_bin;
数据库的修改
例如:
修改mydb2字符集为gbk;
ALTER DATABASE mydb2 CHARACTER SET gbk;
数据库查看:
例如:
查看所有数据库。
show databases;
查看数据库mydb1的字符集
show create database mydb1;
数据库的删除:
例如:
删除数据库mydb3。
drop database mydb3;
创建表(基本语句)
语法结构:
CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype
);
field:指定列名 datatype:指定列类型
注意:
创建表前,要先使用use db语句使用库。
创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。
5.2 MySQL常用数据类型
字符串型 VARCHAR、CHAR
大数据类型BLOB、TEXT
数值型TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
逻辑性 BIT
日期型DATE、TIME、DATETIME、TIMESTAMP
例如:
创建一个员工表employee1
具体字段描述如下:
create table employee1 (
id int ,
name varchar(20) not null,
gender varchar(10),
birthday date,
entry_date date,
job varchar(30),
salary double,
resume text
);
查看表结构: desc 表名;
desc employee1 ;
5.3 MySQL定义表的字段的约束
1.定义主键约束:primary key:不允许为空,不允许重复
2.删除主键:alter table tablename drop primary key ;
3.主键自动增长 :auto_increment
4.定义唯一约束:unique 例如:name varchar(20) unique
5.定义非空约束:not null 例如:salary double not null
例如:
创建一张员工表employee2,要求把id 设置成主键,并且自动增长。name不允许为空。
create table employee (
id int primary key auto_increment,
name varchar(20) not null,
gender varchar(10),
birthday date,
entry_date date,
job varchar(30),
salary double,
resume text
);
5.4 基本数据库表操作语句
删除表
删除employee1表
drop table employee1;
数据表的结构的修改:
在上面员工表的基本上增加一个image列。
alter table employee2 add image varchr(20);
修改job列,使其长度为60。
alter table employee2 modify job varchar(60);
删除gender列。
alter table employee2 drop gender;
表名改为user。
rename table employee2 to user;
修改表的字符集为utf8
alter table user character set utf8;
列名name修改为username
alter table user change name username varchar(20) not null;
.查看表结构
查看数据库内的所有表
show tables;
查看employee的建表语句
show create table employee1;
查看employee的表结构
desc employee1;
5.5 INSERT 语句向表中插入数据
语法结构:
INSERT INTO table [(column [, column…])] VALUES (value [, value…]);
插入的数据应与字段的数据类型相同。
数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
在values中列出的数据位置必须与被加入的列的排列位置相对应。
字符和日期型数据应包含在单引号中。
插入空值:不指定或insert into table value(null)
update语句修改表中数据
delete语句删除表中数据
5.6 update语句修改表中数据
语法结构:
UPDATE tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
1.UPDATE语法可以用新值更新原有表行中的各列。
2.SET子句指示要修改哪些列和要给予哪些值。
3.WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。
例如:
1、将所有员工薪水修改为5000元。
UPDATE employee SET salary=5000;
2、将姓名为’zs’的员工薪水修改为3000元。
UPDATE employee SET salary=3000 WHERE NAME='zs';
3、将姓名为’ls’的员工薪水修改为4000元,job改为ccc。
UPDATE employee SET salary=4000,job='ccc' WHERE NAME='ls';
4、将wangwu的薪水在原有基础上增加1000元。
UPDATE employee SET salary=salary+1000 WHERE NAME='wangwu';
5.7 delete语句删除表中数据
语法结构:
delete from tbl_name
[WHERE where_definition]
1.如果不使用where子句,将删除表中所有数据。
2.Delete语句不能删除某一列的值(可使用update)
3.使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。
4.同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。外键约束
例如:
1、删除表中名称为’zs’的记录。
DELETE FROM employee WHERE NAME='zs';
2、删除表中所有记录。
DELETE FROM employee;
6 select语句
6.1 基本select语句
语法结构:
SELECT [DISTINCT] *|{column1, column2. column3..} FROM table;
1.select 指定查询哪些列的数据。
2.column指定列名。
3.*号代表查询所有列。
4.from指定查询哪张表。
5.DISTINCT可选,指显示结果时,是否剔除重复数据
例如:
CREATE TABLE exam(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
chinese DOUBLE,
math DOUBLE,
english DOUBLE
);
INSERT INTO exam VALUES(NULL,'关羽',85,76,70);
INSERT INTO exam VALUES(NULL,'张飞',70,75,70);
INSERT INTO exam VALUES(NULL,'赵云',90,65,95);
INSERT INTO exam VALUES(NULL,'刘备',97,50,50);
INSERT INTO exam VALUES(NULL,'曹操',90,89,80);
INSERT INTO exam VALUES(NULL,'司马懿',90,67,65);
1、查询表中所有学生的信息。
SELECT * FROM exam;
2、查询表中所有学生的姓名和对应的英语成绩。
SELECT NAME,english FROM exam;
3、过滤表中重复数据。
SELECT DISTINCT * FROM exam GROUP BY ;
(待补充)
6.2 多表查询
6.2.1 表与表之间的关系
多表设计中三种实体关系:
6.2.2 外键的定义
多表设计——外键约束
定义外键约束
foreign key
foreign key(ordersid) references orders(id)
6.2.3 子查询
就是将一个查询语句包含在另一个查询语句中,那么这个被包含的查询语句就是子查询语句。
子查询练习:
CREATE TABLE emp(
empno INT,
ename VARCHAR(50),
job VARCHAR(50),
mgr INT,
hiredate DATE,
sal DECIMAL(7,2),
comm DECIMAL(7,2),
deptno INT
) ;
INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);
INSERT INTO emp VALUES(7981,'MILLER','CLERK',7788,'1992-01-23',2600,500,20);
CREATE TABLE dept(
deptno INT,
dname VARCHAR(14),
loc VARCHAR(13)
);
INSERT INTO dept VALUES(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES(20, 'RESEARCH', 'DALLAS');
INSERT INTO dept VALUES(30, 'SALES', 'CHICAGO');
INSERT INTO dept VALUES(40, 'OPERATIONS', 'BOSTON');
7 联合查询
内连接查询 【inner join】
左连接查询 【left join】 左外连接查询 【left outer join】
右连接查询 【right join】 右外连接查询 【right outer join】
内连接与左连接和右连接查询的区别
–内连接:显示左边右边共有的
–左连接:左边有的,右边没有的为null
–右连接:右边有的,左边没有的为null
语法结构:
select [col1,col2...coln来自多张表【最好使用别名】] from table1
inner join / left outer join / left join / right outer join / right join
table2
on table1.col = table2.col
where 查询条件
本文地址:https://blog.csdn.net/qq_45966418/article/details/107672107