MySQL是一个小型的关系型数据库管理系统,开发者为瑞典MySQL AB 公司,在2008年1月16号被sun公司收购,以后又在2009年4月被Oracle公司收购,现属于 Oracle 旗下产品。mysql
MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL被普遍的应用在Internet上的中小型网站中。MySQL 软件采用了双受权政策,分为社区版和商业版,因为其体积小、速度快、整体拥有成本低,尤为是开放源码这一特色,通常中小型网站的开发都选择 MySQL 做为网站数据库。sql
在实际项目开发中,数据库一共分为两大类:数据库
关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户经过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型能够简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。安全
小型数据库:微软Access服务器
中型数据库:编辑器
DB2:IBM公司的数据库产品,收费的。常应用在银行系统中. 在中国的互联网公司,要求去IOE 网站
MySQL:开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL5.5版本以后都是由Oracle发布的版本。ui
SQL Server:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。spa
大型数据库:.net
Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
非关系型数据库有:Redis、MongoDB
1. 链接mysql
格式: mysql -h主机地址 -u用户名-p用户密码
A. 链接到本地MYSQL
首先打开DOS窗口,而后进入目录mysql\bin,再键入命令mysql -u root -p,
回车后提示你输密码。 MYSQL的提示符是: mysql> 。(默认root用户没有密码)
B. 链接到远程主机上的MYSQL
假设远程主机的IP为:218.105.110.116,用户名为root,密码为abcd123456。
则键入如下命令:mysql -h218.105.110.116 -u root -p abcd123456;(注:u与root之间能够不用加空格,其它也同样)。
2. 启动mysql服务
net start mysql
3. 中止mysql服务
net stop mysql
4. 查询端口是否冲突
netstat –na | findstr 8080 查看被监听的端口 , findstr用于查找后面的端口是否存在。
5. 退出mysql
quit或者exit退出
6. 修改密码:
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例如给root修改密码:
mysqladmin -u root -p ab12 password djg345
SQL,全称Structured Query Language,简称SQL,中文叫结构化查询语言。
Ø 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
Ø 数据操做语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等
Ø 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及建立用户;关键字:grant等
Ø 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等
1. 建立MySQL数据库:
create database 数据库名称;
示例代码:
① 选中localhost,而后切换到SQL编辑器
② 在SQL编辑器中输入create database db_20171227;以下图所示:
2. 删除数据库
基本语法:
删除就是不想要了,不想要了就是丢掉,丢掉的单词:drop
drop database 数据库名称;
示例代码:
特别注意:删除数据库是不可逆的,删除以前必定要慎重。
3. 查看数据库
①查看全部数据库
查看的单词:show
查看全部数据库:show databases;
示例代码:
②显示指定的某类数据库
show databases like ‘db%’; //查询全部以db开头的全部数据库
普及like模糊查询,有两个关键字须要记住:
_(下划线):表明任一一个字符,可能表明a也可能表明b...
%(百分号):表明任意的n个字符,可能表明ab也可能表明abcd...
4. 建立表
建立数据表的基本语法:
create table 数据表名称(
列名称(英文) 列类型 列约束(not null)
);
示例代码:
5. 删除数据表
丢掉:drop
表:table
删除数据表:drop table 数据表名称;
6. 修改数据表(数据表的名称)
重命名:rename
rename table 原来的名字 to 新名称;
7. 查看数据表
①查看全部的数据表或某类的数据
show tables like ‘_或%’;
②查看数据表的结构
desc 数据表名称;
8. 插入记录:insert
语法:
insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
insert into 表 values (值1,值2,值3..); --向表中插入全部列
insert into 表 (列名1,列名2,列名3..) values select (列名1,列名2,列名3..) from 表
insert into 表 values select * from 表
9. 更新数据表中的记录
基本语法:
更新:update
update 数据表名称 set 字段(列) = 更新后的值,字段(列) = 更新后的值 where 条件;
10. 从数据表中查询数据
①查询全部数据
查询:select
select * from 数据表名称;
或
select 字段(某一列) from 数据表名称;
②根据条件查询数据(多了一个where)
11. 从数据表中删除数据(重点)
基本语法:
删除:delete
delete from 数据表名称 where 条件;
delete from 数据表名称;
truncate 数据表名称;
二者的功能都是删除全部数据,可是truncate删除的数据,其主键(primary key)会从新编号。而delete from删除后的数据,会继续上一次编号。
修改my.ini文件,而后重启mysql服务器
表与表之间的关系,说的就是表与表之间数据的关系。
在实际工做中,一对一在开发中应用很少,由于一对一彻底能够建立成一张表
案例:一个丈夫只能有一个妻子
案例:一个分类对应多个商品
总结:有外键的就是多的一方。
1. 注意事项:
一对多关系和一对一关系的建立很相似,惟一区别就是外键不惟一。
2. 一对多关系建立:
添加外键列
添加外键约束
3. 注意事项:
Ø 须要中间表去完成多对多关系的建立
Ø 多对多关系其实就是两个一对多关系的组合
Ø 建立中间表,并在其中建立多对多关系中两张表的外键列
Ø 在中间表中添加外键约束
Ø 在中间表中添加联合主键约束
交叉链接的关键字:CROSS JOIN
1. 隐式交叉链接
SELECT * FROM A, B
2. 显式交叉链接
SELECT * FROM A CROSS JOIN B
内链接的关键字:INNER JOIN
内链接也叫等值链接,内联接使用比较运算符根据每一个表共有的列的值匹配两个表中的行。
1. 隐式内链接
SELECT * FROM A,B WHERE A.id = B.id
2. 显式内链接
SELECT * FROM A INNER JOIN B ON A.id = B.id
外联接能够是左向外联接、右向外联接或完整外部联接。也就是说外链接又分为:左外链接、右外链接、全外链接
外链接须要有主表或者保留表的概念。
在 FROM子句中指定外联接时,能够由下列几组关键字中的一组指定:
1. 左外链接:LEFT JOIN 或者 LEFT OUTER JOIN
SELECT * FROM A LEFT JOIN B ON A.id = B.id
2. 右外链接::RIGHT JOIN 或者 RIGHT OUTER JOIN
SELECT * FROM A RIGHT JOIN B ON A.id = B.id
3. 全外链接(MySQL不支持):FULL JOIN 或 FULL OUTER JOIN
SELECT * FROM A FULL JOIN B ON A.id = B.id
外链接总结:
l 经过业务需求,分析主从表
l 若是使用LEFT JOIN,则主表在它左边
l 若是使用RIGHT JOIN,则主表在它右边
查询结果以主表为主,从表记录匹配不到,则补null
MySQL的分页关键字是:LIMIT
格式:
SELECT * FROM table LIMIT [offset,] rows
定义:
子查询容许把一个查询嵌套在另外一个查询当中。
子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。
子查询能够包含普通select能够包括的任何子句,好比:distinct、 group by、order by、limit、join和union等;
可是对应的外部查询必须是如下语句之一:select、insert、update、delete。
位置:
select 中、from 后、where 中.
group by 和order by 中无实用意义。
MySQL 事务主要用于处理操做量大,复杂度高的数据。
Ø 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
Ø 事务处理能够用来维护数据库的完整性,保证成批的 SQL 语句要么所有执行,要么所有不执行。
Ø 事务用来管理DML操做,好比 insert,update,delete 语句
通常来讲,事务是必须知足4个条件(ACID):
Ø Atomicity(原子性)
构成事务的的全部操做必须是一个逻辑单元,要么所有执行,要么所有不执行。
Ø Consistency(稳定性)
数据库在事务执行先后状态都必须是稳定的。
Ø Isolation(隔离性)
事务之间不会相互影响。
Ø Durability(可靠性)
事务执行成功后必须所有写入磁盘。