数据库的介绍
什么是数据库?
数据库的英文单词: DataBase 简称 : DB。顾名思义:数据库就是存储数据的仓库。本质上是一个文件系统,还是以文件的方式存在服务器的电脑上的。所有的关系型数据库都可以使用通用的 SQL 语句进行管理 DBMS DataBase Management System
常见数据库软件
- MySQL:开源免费的数据库,小型的数据库,已经被 Oracle 收购了。MySQL6.x 版本也开始收费。后来 Sun公司收购了 MySQL,而 Sun 公司又被 Oracle 收购
- Oracle:收费的大型数据库,Oracle 公司的产品。
- DB2 :IBM 公司的数据库产品,收费的。常应用在银行系统中。
- SQL Server:MicroSoft 公司收费的中型的数据库。C#、.net 等语言常使用。
- SQLite: 嵌入式的小型数据库,应用在手机端,如:Android。
数据库的安装与卸载
根据自己的需求和电脑的32位或者64位的具体情况,去官网下载需要的版本。下面我们以mysql-5.5.40-win32.msi为例,进行安装演示
- 1. 打开下载的 mysql 安装文件双击解压缩,运行“mysql-5.5.40-win32.msi”。
- 2. 选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,选择“Custom”,按“next”键继续。
- 3. 点选“Browse”,手动指定安装目录。
- 4. 填上安装目录,我的是“d:\Program Files (x86)\MySQL\MySQL Server 5.0”,按“OK”继续。
- 5. 确认一下先前的设置,如果有误,按“Back”返回重做。否则按“Install”开始安装。
- 6. 正在安装中,请稍候,直到出现下面的界面, 则完成 MYSQL 的安装
- 7. 安装完成了,出现如下界面将进入 mysql 配置向导。
- 8. 选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
- 9. 选择服务器类型,“Developer Machine(开发测试类,mysql 占用很少资源)”、“Server Machine(服务器类型,mysql 占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql 占用所有可用资源)”
- 10. 选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“TransactionalDatabase Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对 MyISAM 数据类型的支持仅限于 non-transactional),按“Next”继续。
- 11. 选择网站并发连接数,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)“Online ”、 TransactionProcessing(OLTP)(500 个左右)”、“Manual Setting(手动设置,自己输一个数)”。
- 12. 是否启用 TCP/IP 连接,设定端口,如果不启用,就只能在自己的机器上访问 mysql 数据库了,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样 MySQL 就不会允许细小的语法错误。如果是新手,建议您取消标准模式以减少麻烦。但熟悉 MySQL 以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续。
- 13. 就是对 mysql 默认数据库语言编码进行设置(重要),一般选 UTF-8,按 “Next”继续。
- 14. 选择是否将 mysql 安装为 windows 服务,还可以指定 Service Name(服务标识名称),是否将 mysql 的 bin目录加入到 Windows PATH(加入后,就可以直接使用 bin 下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword;”就可以了,不用指出 mysql.exe 的完整地址,很方便),我这里全部打上了勾,Service Name 不变。按“Next”继续。
- 15. 询问是否要修改默认 root 用户(超级管理)的密码。“Enable root access from remote machines(是否允许 root 用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“CreateAn Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。
- 16. 确认设置无误,按“Execute”使设置生效,即完成 MYSQL 的安装和配置。
- 注意:设置完毕,按“Finish”后有一个比较常见的错误,就是不能“Start service”,一般出现在以前有安装 mysql的服务器上,解决的办法,先保证以前安装的 mysql 服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,之前的密码是否有修改,照上面的操作;如果依然不行,将 mysql 安装目录下的 data 文件夹备份,然后删除,在安装完成后,将安装生成的 data 文件夹删除,备份的 data 文件夹移回来,再重启 mysql 服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。
解决方法:卸载 MySQL,重装 MySQL
数据库的卸载
4:卸载 MySQL 安装程序。找到“控制面板”-> "程序和功能",卸载 MySQL 程序。
MySQL服务
我们刚才安装的是MySQL服务器软件,它会在我们的电脑的列表中注册一个MySQL服务。服务就是一些没有界面的应用程序。
1:Windows 服务方式启动,步骤如下图所示
2:DOS 命令方式启动
需要启动mysql的服务就输入命令:
- net start mysql :
需要关闭mysql服务就输入命令:
- net stop mysql
注意:
- 要想登录MySQL服务中,必须先开启服务。
控制台登录和退出MySQL数据库
- mysql -u用户名 -p密码
或者后输入密码方式:
- mysql -hip 地址 -u 用户名 -p 密码
注意:
- 我们可以通过-h 后面的ip地址来访问对应电脑的MySQL服务
- 127.0.0.1 代表本机的 IP 地址
- mysql --host=ip 地址 --user=用户名 --password=密码
举例:
举例:
MySQL 目录结构
MySQL安装目录
数据目录
数据库管理系统
- 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据
数据库管理系统、数据库和表的关系
- 数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体 User 的数据。数据库管理系统、数据库和表的关系如图所示:
- MySQL服务软件所在的电脑称之为MySQL服务器
- 一个数据库管理系统包含多个数据库(数据库对应文件夹)
- 一个数据库包含多张表(表对应文件)
- 一张表包含多条记录(记录对应数据)
SQL 的概念
什么是 SQL
SQL 作用
- 是一种所有关系型数据库的查询规范,不同的数据库(只要是关系型的数据库)都支持。
- 通用的数据库操作语言,可以用在不同的数据库中。
- 不同的数据库 SQL 语句有一些区别,称之为方言
MySQL 的语法
- 每条语句以分号结尾,如果在 SQLyog 中不是必须加的。
- 可使用空格和缩进来增强语句的可读性。
- SQL 中不区分大小写,关键字中认为大写和小写是一样的。关键字建议使用大写。
3 种注释:
SQL 语句分类
在使用SQL语句之前,我们必须先连接上MySQL服务。
DDL(Data Definition Language)数据定义语言
- 用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
DML(Data Manipulation Language)数据操作语言
- 用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
DQL(Data Query Language)数据查询语言
- 用来查询数据库中表的记录(数据)。关键字:select, where 等
DCL(Data Control Language)数据控制语言(了解)
- 用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
DDL 操作数据库
创建数据库
- 语法:CREATE DATABASE 数据库名;
举例:
- 语法:CREATE DATABASE IF NOT EXISTS 数据库名;
举例:
- 语法:CREATE DATABASE 数据库名 CHARACTER SET 字符集;
创建数据库,判断是否存在,并制定字符集为gbk
- 语法:create database if not exists 数据库名 character set gbk;
举例:
查看数据库
- 语法:show databases;
举例:
查看某个数据库的定义信息 (查看数据库字符集)
- show create database 数据库名称;
举例:
修改数据库
修改数据库默认的字符集
- ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
举例:
删除数据库
删除数据库的语法
- DROP DATABASE 数据库名;
举例:
判断数据库存在,在删除
语法
- drop database if exists 数据库名;
使用数据库
- SELECT DATABASE();
举例:
语法:
- USE 数据库名;
DDL 操作表结构
- 前提先使用某个数据库
创建表
语法:
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
....
列名n 数据类型n
);
注意:最后一列,不需要加逗号(,)
数据库常用类型
- int:整数类型 例如: age int,
- double:小数类型 例如:score double(5,2) 表示double类型最多5位,最多保留小数点后2位
- date:日期,只包含年月日,yyyy-MM-dd
- datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
- timestamp:时间错类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
- varchar:字符串name varchar(20):姓名最大20个字符
- 创建 student 表包含 id,name,score,birthday,insert_time 字段
create table student(
id int,
name varchar(32),
age int ,
score double(4,1),
birthday date,
insert_time timestamp
);
演示:
复制表:
语法:
- create table 表名 like 被复制的表名;
举例:
查看数据库中的表
查看所有的表
语法:
- SHOW TABLES;
举例:
- DESC 表名;
查看创建表的 SQL 语句
- SHOW CREATE TABLE 表名;
举例:
删除表
直接删除表
- DROP TABLE 表名;
举例:
判断表是否存在,如果存在则删除表
- DROP TABLE IF EXISTS 表名;
举例:
修改表结构
修改表名
语法:
- alter table 表名 rename to 新的表名;
举例:
修改表的字符集
语法:
- alter table 表名 character set 字符集名称;
举例:
添加一列
语法:
- alter table 表名 add 列名 数据类型;
举例:
修改列名称 类型
语法
- alter table 表名 change 列名 新列别 新数据类型; (改列名和类型)
- alter table 表名 modify 列名 新数据类型; (只改列的类型)
举例:
删除列
语法
- alter table 表名 drop 列名;
举例:
SQLyog 图形化工具——客户端
使用 SQLyog 登录数据库
DML 操作表中的数据
插入数据到表中
语法:
- INSERT [INTO] 表名 [字段名] VALUES (字段值)
详解
- INSERT INTO 表名:表示往哪张表中添加数据
- (字段名 1, 字段名 2, …):要给哪些字段设置值
- VALUES (值 1, 值 2, …):设置具体的值
所有的字段名都写出来
语法:
- INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3…) VALUES (值 1, 值 2, 值 3);
举例:
不写字段名
- INSERT INTO 表名 VALUES (值 1, 值 2, 值 3…);
举例:
注意事项:
- 列名和值要一一对应。
- 如果表名后,不定义列名,则默认给所有列添加值
- 除了数字类型,其他类型需要使用引号(单双都可以)引起来
插入部分数据
- INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (值 1, 值 2, ...);
举例:
注意事项:
- 没有添加数据的字段会使用 NULL
删除表的数据
- DELETE FROM 表名 [WHERE 条件表达式]
详解:
- 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
- 你可以在 WHERE 子句中指定任何条件
删除整个表中的数据
如果要删除所有记录,不推荐使用,因为这种方式删除表中的数据,有多少条数据,就要执行多少次SQL语句,影响效率
语法:
- DELETE FROM 表名;
举例:
带条件删除数据
- DELETE FROM 表名 WHERE 字段名=值;
举例:
使用 truncate 删除表中所有记录
如果要删除所有记录,推荐使用这种方式,因为使用这种方式,不管表中有多少数据都只要执行2条SQL语句
语法:
- TRUNCATE TABLE 表名;
举例:
修改表中的数据
语法:
- UPDATE 表名 SET 列名=值 [WHERE 条件表达式]
详解:
- UPDATE: 需要更新的表名
- SET: 修改的列值
- WHERE: 符合条件的记录才更新
- 你可以同时更新一个或多个字段。
- 你可以在 WHERE 子句中指定任何条件。
不带条件修改数据,修改所有的数据
- UPDATE 表名 SET 字段名=值;
举例:
带条件修改数据
语法:
- UPDATE 表名 SET 字段名=值 WHERE 字段名=值;
举例: