MySQL介绍
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。


MySQL配置文件设置
my.ini(WIndows)/my.cnf(MacOS/Linux),主要配置内容如下:
1 | [mysqld] |
MySQL使用命令导出/导入数据
导出数据库文件
常用命令
1 | mysqldump -uroot -pMyPassword databaseName tableName1 tableName2 > /home/foo.sql |
mysqldump -u 用户名 -p 数据库名 数据表名 > 导出的文件名和路径
导出整个数据库
1 | mysqldump -u root -p databaseName > /home/test.sql (输入后会让你输入进入MySQL的密码) |
mysql导出数据库一个表,包括表结构和数据
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名和路径
1 | mysqldump -u root -p databaseName tableName1 > /home/table1.sql |
如果需要导出数据中多张表的结构及数据时,表名用空格隔开
1 | mysqldump -u root -p databaseName tableName01 tableName02 > /home/table.sql |
仅导出数据库结构
1 | mysqldump -uroot -pPassWord -d databaseName > /home/database.sql |
仅导出表结构
1 | mysqldump -uroot -pPassWord -d databaseName tableName > /home/table.sql |
将语句查询出来的结果导出为.txt文件
1 | mysql -uroot -pPassword database1 -e "select * from table1" > /home/data.txt |
数据导入
- 常用source 命令
- 进入mysql数据库控制台
mysql -u root -pmysql> use 数据库
- 使用source命令,后面参数为脚本文件(.sql)
1 | mysql>source /home/table.sql |
MySQL表结构定义
创建表
1 | CREATE TABLE `表名` ( |
- 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
- AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
- PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
- ENGINE 设置存储引擎,CHARSET 设置编码。
删除表
1 | drop table 表名 |
表结构修改语法
- 增加列:
alter table 表名 add 列名 类型(长度) 约束; 修改现有列类型、长度和约束语法:
alter table 表名 modify 列名 类型(长度) 约束;修改现有列名称语法:
alter table 表名 change 旧列名 新列名 类型(长度) 约束;- 删除现有列语法:
alter table 表名 drop 列名 ; - 修改表名:
alter table 表名 rename table 旧表名 to 新表名; - 修改表的字符集:
alter table person character set utf8;
MySQL表数据的基本增删改查
- 插入一条数据:
insert into 表名(字段1,字段2) values(字段值1,字段值2) - 删除一条数据:
delete from 表名 where 字段名1=字段值1delete from 表名 删除表里所有数据
- 查询数据:
select * from 表名
- 更新数据:
update 表名 set 字段名1=字段值1 where 字段名2=字段值2update 表名 set 字段名1=字段值1(修改表里所有数据)
- 基本查询:
select * from table_name - 字段查询:
select fileds from table_name - 条件查询:
select * from table_name where a=1 - 排序:
select * from table_name order by b desc - 分页:
select * from table_name order limit 10 offset 0 - 去重:
select distinct gender from table_name - 比较:等于
=、大于>、小于<、不等于<> - 通配:
where fileds like '%or%' - 范围限定:
where fileds between 10 and 20 - 子集限定:
where fileds in('Beijing','Shanghai','Shenzhen') - 逻辑关系:
andornot - 基本语法:
group by 字段 having 条件 - 常用函数:
COUNTMAXMINSUMAVG
内连接查询 inner join
语句:select * from a_table a inner join b_table b on a.id=b.b_id;
说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集部分。
左连接查询 left join
语句:select * from a_table a left join b_table on a.id=b.b_id;
说明:left join是left outer join的简写,它的全称是左外连接,是外连接中的一种。左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
左连接查询 right join
语句:select * from a_table a right outer join b_table b on a.id=b.b_id;
说明:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种,与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将全部表示出来。左表记录不足的地方均为NULL。