前言

MySQL数据库和其他数据库功能和特性基本都差不多,关于MySQL的安装方法在我写的另一篇博客:MySQL的安装,接下来就让我们具体来来理解MySQL吧!

1,MySQL是什么?
1)软件(Software)
2)数据库管理系统(DBMS)
2.1)关系型数据库管理系统(Oracle,SQLServer,DB2,MySQL)
2.2)非关系型数据库管理系统(NoSQL)
3)关系型数据库管理系统(RDBMS)

2,MySQL的特点
1)简单(尤其是安装,当然使用起来也相对比较简单)
2)功能强大
3)有开源版本

3,MySQL应用场景
1)创业型公司
2)互联网公司

4,MySQL应用架构(基于c/s架构)
1)Server
2)Client
通讯协议:TCP/IP

启动(服务)并开启MySQL:
启动:
方式一:sudo /etc/init.d/mysql start
方式二:sudo service mysql start

开启:

mysql -uroot -p

登录数据库:

如图所示:

mysql的软件资产型号 mysql软件介绍_表名


Connection Name:随便写什么,因为它没有实际的意义,但是最好写全中文

User name:用户名,在安装数据库的时候我们默认了一个用户root

Password:用户密码

停止(服务)及退出mysql:

停止:

方式一:sudo /etc/init.d/mysql stop

方式二:sudo service mysql stop

退出:
exit

重启mysql:

方式一:sudo/etc/init.d/mysql restart

方式二:sudo service mysql restart

创建用户:

如图所示:

mysql的软件资产型号 mysql软件介绍_MySQL_02


User name:创建的用户名

Host:本机的地址,可以是127.0.0.1,也可以是localhost

Password:用户密码

Connfirm Password:再次确认用户密码首先我们先来查看一下 , 当前拥有的数据库

找到我们的执行框:

如图所示:

mysql的软件资产型号 mysql软件介绍_MySQL_03


查看当前拥有的数据库

在执行框输入show databases;

选中你要执行的语句,然后点击Run执行

如图所示:

mysql的软件资产型号 mysql软件介绍_mysql的软件资产型号_04


执行结果如图所示:

mysql的软件资产型号 mysql软件介绍_MySQL_05

创建一个数据库

有两种方式:

1.手动创数据库

如图所示:

mysql的软件资产型号 mysql软件介绍_mysql的软件资产型号_06


点击它,然后就会出来一个框

如图所示:

mysql的软件资产型号 mysql软件介绍_mysql的软件资产型号_07


Enter database name:创建的数据库的名字

Character set:找到开头是utf8,整句是utf8–UTF-8 Unicode

Collation:找到最长的那一条,然后选最长那一条的上面那一条,整句是utf8_general_ci

然后点击OK就可以创建成功了

2.代码创数据库

我们来创建一个数据库名叫做 tmp的数据库

在执行框里面输入create database tmp;

选中你要执行的语句,然后点击Run执行

如图所示:

mysql的软件资产型号 mysql软件介绍_数据库_08


这样就显示创建成功 , 然后我们在show一下

如图所示:

mysql的软件资产型号 mysql软件介绍_mysql的软件资产型号_09


从图中可以看到 , tmp数据库已经创建成功.

选择数据库
选择使用哪个数据库 , 我们要使用刚刚创建的tmp数据库

这样 ,后面的建表 , 对表的操作都是在数据库tmp上进行.

查看数据库中有多少的表

在执行框里面输入show tables;

结果如图所示:

mysql的软件资产型号 mysql软件介绍_MySQL_10


显示当前为空表

创建表
创建表的SQL语句格式如下:

CREATE TABLE 表名(属性名 数据类型 [完整性约束条件],
		属性名 数据类型 [完整性约束条件],
		...
		属性名 数据类型 [完整性约束条件]
	    );

注意 : 创建表结构的时候,要选择合适的数据类型,而且还可以给字段添加完整性约束条件,比如主键,非空键,唯一键等。完整性约束条件都有哪些呢,如下所示:

约束条件

说明

PRIMARY KEY

修饰的属性为该表的主键, 可以区分不同的行记录

FOREIGN KEY

修饰的属性为该表的外键,关联了父表的主键

NOT NULL

表示该属性不能为空

UNIQUE

表示该属性的值是唯一的

AUTO_INCREMENT

MySQL的特色 , 表示该属性是自增的 , 整数类型

DEFAULT

给属性设置默认值

例如:

// 创建一张学生表 id int name varchar age int sex enum score double level

create table student(id int primary key,
name varchar(20), age tinyint,
sex enum(‘男’, ‘女’), score double,
level varchar(20) default “不合格”);

如图所示

mysql的软件资产型号 mysql软件介绍_数据库_11

这样就显示名为student的表创建成功.

让我们查看一下

查看表
1.查看表的结构

desc student;   //表名

来查看一下刚才建成的表的结构

如图所示:

mysql的软件资产型号 mysql软件介绍_表名_12

从上图可以看到, 用desc 可以查看到表的字段名称 , 类型 , 是否为空 , 约束条件 , 默认值 , 备注信息

2.查看表的详细结构 , 存储引擎 , 表的字符编码等信息
show create table student\G
(SQL语句可以使用 ;号或者\G结尾 , \G结尾打印的格式更清晰)

如图所示

mysql的软件资产型号 mysql软件介绍_MySQL_13


从上图可以看到,show create table命令可以打印出创建表的SQL语句,并显示了该编排的存储引擎和字符编码信息。

删除表

drop table student;

插入数据
INSERT INTO <表名> [ <列名1> [ , … <列名n>] ]
VALUES (值1) [… , (值n) ];
我们向表中批量添加加一些数据 ,可以使用

insert into 表名 values(value1,value2,value3,…valuen),
(value1,value2,value3,…valuen),
(value1,value2,value3,…valuen),

(value1,value2,value3,…valuen);

这里的表名后面加上所需要的字段 , 不然MySQL就会报错 ; 如果在表明后面不添加字段 , 就需要每天记录的数值恍必须与表中字段的顺序一致.

更新表中数据
更新表中的数据,如果没有where,则将影响所有的记录

update student name='administrator' where id='1';

删除表的中的数据
使用where设置删除的条件

delete from student  score < 60.0 or age < 20;

删除表中的所有数据,但是表结构依然存在

delete from student;

修改表
如果表在使用的过程中,逐渐发现表的字段不满足设计要求,而且表中已添加大量数据,此时想添加新的字段或者删除已有的字段,可以通过alter命令操作,如下是常用的alter命令**(但是最好还是设计之初,分析好应用场景,一次性设计好表的结构)** :

修改表名:
ALTER TABLE 旧表名 RENAME [TO] 新表名;
修改字段的数据类型:
ALTER TABLE 表名 MODIFY 属性名 数据类型;
修改字段名:
ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;
增加字段:
ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];
删除字段:
ALTER TABLE 表名 DROP 属性名;
修改字段排列位置:
ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST | AFTER 属性名2;
修改表的存储引擎:
ALTER TABLE 表名 ENGINE=InnoDB | MyISAM;

大家可以用create table创建一个表,操作一下上面的alter语句。

查询表
SQL的基本查询结构如下:
SELECT 属性列表
FROM 表名
[WHERE 条件表达式1]
[GROUP BY 属性名1 [HAVING 条件表达式2]]
[ORDER BY 属性名2 [ASC | DESC]]

1. 带in的子查询
[NOT] IN (元素1,元素2,…,元素n)
如:select * from user where id in (select stu_id from grade where average>=60.0);
2. 带BETWEEN AND的范围查询
[NOT] BETWEEN 取值1 AND 取值2
如:select * from user inner join grade on user.id = grade.id where average between 80.0 and 100.0;
3. 带like的通配符匹配查询
[NOT] LIKE ‘字符串’
注意此处LIKE后面的字符串可以携带通配符
% : 表示0个或任意长度的字符串
_ :只能表示单个字符
如:select * from news where content like “%亚运会%”;
4. 空值查询
IS [NOT] NULL;
如:select * from user a left join grade b on a.id = b.userid where b.id is NULL;

5. 带AND的多条件查询
条件表达式1 AND 条件表达式2 [… AND 条件表达式n]
如:select * from user inner join grade on user.id = grade.id where average between 80.0 and 100.0 and user.sex=’男’;

6. 带OR的多条件查询
条件表达式1 OR 条件表达式2 [… OR 条件表达式n]
如:select * from user inner join grade on user.id = grade.id where grade.math>80.0 or grade.english>80.0;

7. 去重复查询
SELECT DISTINCT 属性名
如:select distinct name from user ;

8. 对结果排序
ORDER BY 属性名 [ASC | DESC]
如:select * from user inner join grade on user.id = grade.id where average between 80.0 and 100.0 order by average desc;
组查询
GROUP BY 属性名 [HAVING 条件表达式]
如:select name, count(*) from record group by id;

10. union合并查询
SELECT expression1, expression2, … expression_n
FROM tables[WHERE conditions]
UNION [ALL | DISTINCT] //注意:union默认去重,不用修饰distinct,all表示显示所有重复值
SELECT expression1, expression2, … expression_n
FROM tables[WHERE conditions];
如:SELECT country FROM Websites UNION ALL SELECT country FROM apps ORDER BY country;

11. Limit分页查询
不指定初始位置是LIMIT 记录数;指定初始位置是LIMIT 初始位置, 记录数。
如:select * from user limit 10, 20;

12. 内连接和外连接查询
内连接查询
SELECT a.属性名1,a.属性名2,…,b,属性名1,b.属性名2… FROM table_name1 a, table_name2 b on a.id = b.id where a.属性名 满足某些条件;
SELECT a.属性名1,a.属性名2,…,b,属性名1,b.属性名2… FROM table_name1 a inner join table_name2 b on a.id = b.id where a.属性名 满足某些条件;

如:select a.id,b.average,c.address from user a inner join grade b on a.id = b.userid
inner join info c on a.id = c.userid
where b.average>=60.0;

外连接查询
左连接查询
SELECT a.属性名列表, b.属性名列表 FROM table_name1 a [OUTER] LEFT JOIN table_name2 b on a.id = b.id;

右连接查询
SELECT a.属性名列表, b.属性名列表 FROM table_name1 a [OUTER] RIGHT JOIN table_name2 b on a.id = b.id;

我们一般都会用连接查询代替in子查询进行多表联合查询,子查询的效率远不及连接查询效率高!

13.统计函数
AVG()函数 : 该统计函数实现计算字段的平均值 .
SUM()函数 : 该统计函数实现计算字段的总和 .
MAX()函数 : 该统计函数实现计算字段的最大值 .
MIN()函数 :该统计函数实现计算字段的最小值 .
COUNT()函数 : 该统计函数实现统计表中记录的条数 .
具体语法 :
select function(field)
from table_name
where condition

在上述语句中利用统计函数 function 来统计关于字段 field 的值.

设置表的字符编码

有时候MySQL中的表需要存储中文,需要设置表的字符编码为utf8,否则默认的字符编码有可能不能正确处理中文,那么在MySQL中通过命令查看MySQL表的字符编码,如下:

show variables like ‘charac%’;

设置表的字符编码,如下设置:

set character_set_server=utf8;

导入和导出数据

导出:

如图所示:

mysql的软件资产型号 mysql软件介绍_数据库_14


打开你要操作的数据库,点击Tables,找到你要导出的表,然后右键选择Dump SQL File,然后选择你要导出到的路径,点击保存就行了

如下所示:

mysql的软件资产型号 mysql软件介绍_表名_15


导入:

如图所示:

mysql的软件资产型号 mysql软件介绍_表名_16


打开你要操作的数据库,点击Tables,在空白处右键选择Execute Batch File,然后如图所示:

mysql的软件资产型号 mysql软件介绍_MySQL_17


File:选择你要导入的数据文件

Encoding:选择65001(UTF-8)

点击Start

然后如图所示:

mysql的软件资产型号 mysql软件介绍_MySQL_18


然后在空白处右击点击Refresh刷新,就可以看到如图所示:

mysql的软件资产型号 mysql软件介绍_MySQL_19


这样就表示你导入表数据成功了!