1.MySQL数据库的基本概述
1.1什么是数据库数据库就是一个文件系统,用来存储、管理、组织数据的仓库。MySQL就是一种关系型数据库。
1.2什么是关系型数据库关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
1.3常见的关系型数据库MySQLOracleDB2SQL Server
2.MySQL是数据存储方式概述
2.1什么是服务器
我们提到MySQL首先会想到服务器,那什么是服务器呢?从两个方面来讲,从硬件方面来讲,服务器就是一台计算机;从软件方面来讲,服务器就是装有服务器软件的计算机。比如安装了MySQL的计算机就是服务器。
2.2MySQL的储存方式的描述
我们在连接MySQL服务器的时候通常情况下本地通过mysql -uroot -p来连接,本地省略了主机,默认情况下认为是localhost 端口默认情况下是3306这个端口。一台数据库服务器会创建很多数据库,通常情况下一个应用对应于一个数据库。在数据库的内部会有很多的表,通常情况下一个实体对应于一张表。在表中会有很多条记录,一个实体的实例会创建一条表中的记录。这里的实体可以理解为在Java中的一个类,实例可以理解为创建的一个类的对象。
3.SQL的概述
3.1什么是SQLSQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
3.2SQL的分类DDL(数据定义语言)create,alter,drop....
DCL(数据控制语言)grant,if....
DML(数据管理语言)insert,update,delete....
DQL(数据查询语言)select...
4.SQL使用
4.1使用SQL对数据库进行操作
4.1.1对数据库的创建
创建数据库的语法规则:create database 数据库名称 character set 字符集 collation 校对规则例如:create database db1;create database db2 character set gbk;create database db3 character set utf8 collate utf8_general_ci;
4.1.2对数据库进行查询
show databases;如果想查看数据库创建的语句可以使用下面的语句:show create database db1;查看数据库系统支持的字符集:show character set;查看数据库系统支持对应字符集的校对规则:show collation like 'utf8%';
4.1.3对数据库进行修改
修改数据库的语法alter database 数据库名称 character set 字符集;例如alter database db2 character set utf8;
4.1.4对数据库进行删除
删除数据库的语法drop database 数据库名例如drop database db3;
4.1.5其它数据库操作:
我们想要切换数据库use 数据库名称查看当前使用的数据库select database();
4.2使用SQL对数据库表进行操作
4.2.1对数据库表的创建语法:create table 表名称(字段名称 字段类型(长度)约束,字段名称 字段类型(长度) 约束 ...);字段类型一个实体对应一张表,一个实体的属性对应表的一个字段。
Java中的类型 | MySQL中的类型 |
---|---|
byte/short/int/long | tingint/smallint/int/bigint |
float | float |
double | double |
boolean | bit |
char/String | char和varchar |
Date | date/time/datetime/timestamp |
File | BLOB/TEXT |
注意事项:char和varchar区别:char代表是固定长度的字符或者字符串,如果定义了一个char(8),向这个字段插入一个字符串“hello",那么数据库会使用三个空格将其补其。varchar代表可变长度的字符串定义一个varchar(8),向这个字段存入字符串hello,那么存入数据库的就是hello。
datetime和timestamp区别:datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用null存入到数据库中。timestamp也就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的系统时间存入到数据库中。
约束:约束作用:保证数据的完整性单表约束分类:主键约束 primary key 主键约束默认就是唯一非空的唯一约束 unique非空约束 not null
create database db1;use db1;create table user( id int primary key auto_increment, username varchar(20) unique, password varchar(20) not null, age int, birthdate date);
4.2.2对数据库表的查看
查看数据库中的所有表show tables;查看数据库中某个表的结构desc 表名
4.2.3对数据库表的删除
基本语法:drop table 表名
4.2.4对数据库表的修改
修改表:增加列alter table user add 列名 类型(长度) 约束;修改表:修改列的长度,类型,约束alter table user modify 列名 类型(长度) 约束;修改表:删除列alter table drop 列名修改表:修改列名称alter table 表名 change 旧列名 新列名 类型(长度) 约束;修改表:修改表名rename table 表名 to 新表名;修改表:修改表的字符集alter table 表名 character set 字符集;
4.3使用SQL对数据库表记录进行操作
4.3.1使用SQL添加表记录
语法:向表中添加某几列:insert into 表名(列1,列2,列3...) values(值1,值2,值3);向表中添加所有列:insert into 表名 values(值1,值2,值3...);注意事项:值的类型要和数据库表中的类型对应值的顺序要和数据库表中列的顺序一致值的最大长度不能超过数据库表中设置的最大长度值的类型为字符或者日期类型的时候,使用单引号例如:insert into user(id,username,password) values(1,'aaa','ccc');insert into user values(2,'bbb','bbb',23,'1999-09-07');可能会出现的问题:添加中文出现错误。查看支持的字符集:show variables like '%character%';想要插入中文,可以修改MySQL客户端的字符集改为gbk修改MySQL配置文件my.ini中客户端字符集的设置为gbk,重启服务器即可。
4.3.2使用SQL修改表中的记录
语法:update 表名 set 列名=值,列名=值 where 条件;注意事项:值的类型要和数据库表中的类型对应值的顺序要和数据库表中列的顺序一致值的最大长度不能超过数据库表中设置的最大长度值的类型为字符或者日期类型的时候,使用单引号
4.3.3使用SQL删除表中记录
语法:delete from 表 where 条件;如果没有条件语句删除所有记录删除表中所有记录的两种方法:delete from 表名;truncate table 表名;二者的区别:delete from 表;删除所有记录,属于DML语句,一条记录一条记录的删除。事务可以作用在DML语句上。truncate table 表名:删除所有记录,属于DDL语句,将表删除,然后重建一个一模一样的表,事务不能作用在DDL语句上。
4.4使用SQL查看表中的记录
基本查询:select [distinct] *|列名 from 表 [条件];select * from user;select id,username from user;select id,distinct username from user;select id, math+english as sum from user;条件查询:使用where子句> >= < <= <> !=like模糊查询in:范围查询条件查询:and or not排序查询:使用order by 字段列名 desc/asc;分组统计查询:聚合函数的使用:sum()获取总和count()获取总数max()获取最大值min()获取最小值avg()获取平均数分组查询:语法使用:group by 字段名称;where子句后面不能跟着聚合函数,如果现在使用带有聚合函数的条件过滤,需要使用一个关键字having
总结SQL语句的顺序:select 字段 from ... where 条件 group by 分组 having 条件 order by 排序
5.重置MySQLroot密码①停止MySQL服务②启动mysql服务:mysqld --skip-grant-tables不需要权限认证的启动③重新启动一个客户端mysql -uroot -p不需要输入密码④修改root密码update mysql.user set password = password("....") where user = 'root';⑤重启mysql
6.mysql服务器的备份和还原
6.1数据库的备份
在cmd中输入mysqldump -u root -p 数据库名称 > D:/web_test.sql;
6.2还原数据库
①在数据库的内部创建一个数据库,新打开一个窗口,mysql -u root -p 数据库名 < D:/db1
②通过source D:/db1.sql;