Jean's Blog

一个专注软件测试开发技术的个人博客

0%

mysql基础学习

MySQL介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

SQL基础教程学习

image-20220829144304443

image-20220829144358164

MySQL配置文件设置

my.ini(WIndows)/my.cnf(MacOS/Linux),主要配置内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=F:\\xxx\\xxx\\mysql-xxx-winx64
# 设置mysql数据库的数据的存放目录
datadir=F:\\xxx\\xxx\\mysql-xxx-winx64\\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数,这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=0
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用端口
port=3306
default-character-set=utf8

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 -p
    • mysql> use 数据库
  • 使用source命令,后面参数为脚本文件(.sql)
1
mysql>source /home/table.sql

MySQL表结构定义

创建表

1
2
3
4
5
CREATE TABLE `表名` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMINT 'ID',
`name` varchar(100) DEFAULT NULL COMMIT '姓名,字段说明',
PRIMARY KEY (`id`) USING BTREE
)ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='表注释';
  • 如果你不想字段为 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=字段值1
    • delete from 表名 删除表里所有数据
  • 查询数据:
    • select * from 表名
  • 更新数据:
    • update 表名 set 字段名1=字段值1 where 字段名2=字段值2
    • update 表名 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')
  • 逻辑关系:and or not
  • 基本语法:group by 字段 having 条件
  • 常用函数:COUNT MAX MIN SUM AVG

内连接查询 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。