纯属个人自总结,若有错误,还请各位大佬提出宝贵建议
什么是数据库?
存放数据的仓库,仅仅是保存数据的一种方式,比平时的操作复杂一些,根本目的还是保存数据。
常见的数据库分为关系型数据库和非关系型数据库
关系型数据库
Oracle:MySQL(免费)、Oracle(收费)
IBM:DB2(收费)
微软:Microsoft SQL Server(收费)、Microsoft Access(收费)
优点:基于表保存数据,可以连接多张表做复杂的查询,支持事物。
缺点:速度较慢,基本都收费。
非关系型数据库
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
键值(Key-Value)存储数据库:Redis、OracleBDB
文档型数据库:MongoDB
特点:基于键值对保存数据,不需要经过SQL层解析所以速度快,通过减少用不到的功能提高产品性能。很多都是免费使用。
什么是MySQL?
mysql是最流行关系型数据库管理系统,是一个软件。
数据以表格的形式存在。
名词解释
DB(DataBase)数据库
DBMS(Database Management System)数据库管理系统
DBA(Database Administrator)数据库管理员,负责维护DBMS稳定、高效的运行。
SQL(Structured Query Language)结构化查询语言。数据库语言,可以操作数据库。
数据库下载及安装
下载地址:https://dev.mysql.com/downloads/
安装:安装过程全部使用默认配置,仅修改密码,可以使用root
启动/停止数据库
第一种方式
windows系统需要开启,Linux直接进入即可
打开终端
启动MySQL:net start mysql
停止MySQL:net stop mysql
如果出现启动时报错,找不到对应的服务名,那么说明没有配置path变量,如果配置了还不行,那么将 终端 以管理员身份运行;后面会讲怎么配置环境变量
输入net stop mysql57可以停止mysql服务端
输入net start mysql57可以启动mysql服务端
第二种方式
数据库分为客户端和服务端,数据保存在服务端,在系统中以服务的形式存在,服务名称以mysql开头。
通过window+r打开服务器, 输入services.msc 打开本地服务,找到mysql服务;手动停止或者启动;
分析sql目录
bin目录:存放可执行文件
mysql.exe:客户端命令
mysqld.exe:服务端命令
环境变量配置
mysql.exe和mysqld.exe可以在控制台CLI(终端控制台)执行,与javac类似,如果不配置环境变量,执行时需要在控制台输入完整路径。
控制台完整路径:“C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe”
环境变量配置步骤
右键点击桌面“此电脑”->点击左侧“高级系统设置”->点击顶部“高级”选项卡->点击下方“环境变量”->选中path点编辑->新建
将C:\Program Files\MySQL\MySQL Server 5.7\bin(默认安装位置\bin)配置到环境变量中
配置完成后,重启CLI。可以直接输入mysql.exe
mysql登录与退出
mysql -uroot -proot
远程连接数据库
mysql -hIP地址 –uroot –proot
这里的客户端是一个exe程序,客户端本身无法保存数据,客户端连接到服务端后,可以将数据传输并保存到服务端。
所以如果我们操作数据库前,总是要先使用客户端程序mysql.exe连接到服务端。
安装了mysql服务端的电脑,我们也叫做mysql服务器。
退出数据库
quit或\q
退出终端(控制台)
exit
数据库操作
一行语句输入完成后,回车是换行,不是执行,当语句中包含分号时,回车才会执行。
语法不区分大小写,单引号双引号内的文字区分大小写,关键字全部使用大写。
MySQL服务器可以建立若干数据库,在数据库中可以建表。
包含关系:MySQL服务器->数据库->表
查询数据库
SHOW DATABASES; // 显示所有数据库
模糊查询数据库
SHOW DATABASES LIKE '%MY%';
%表示任意长度的字符串
_表示一个字符
创建数据库
CREATE DATABASE ZHOUGUNIANG DEFAULT CHARSET UTF8;
CREATE DATABASE IF NOT EXISTS NJWANGBO DEFAULT CHARSET UTF8;
删除数据库
DROP DATABASE ZHOUGUNIANG;
表操作
选择数据库
USE ZHOUGUNIANG;
一个数据库中可以储存若干张表,表必须保存在数据库中。
可以把数据库看作是文件夹,表是文件夹中的文件,一个数据库中的表不能同名。
对表进行任何操作之前必须选择一个数据库,否则不知道你想操作哪个数据库中的表。
例如:
显示数据库中所有的表
SHOW TABLES;
创建表
分析字段
学生表该有哪些属性
T_STUDENT
T_ID 学号
T_NAME 姓名
T_AGE 年龄
T_SEX 性别
T_BIRTHDAY 生日
一个表,由列组成,且每一列必须指定存放的数据类型。
CREATE TABLE T_STUDENT (
T_ID CHAR(2),
T_NAME VARCHAR(20),
T_AGE INT,
T_SEX CHAR(2),
T_BIRTHDAY DATE
);
创建表的三要素
- 表名称
- 表的字段
- 表的字段类型
MySQL常用数据类型
创建表时,必须确定每一个字段的数据类型,所以对常用数据类型必须很熟悉。
MySQL支持所有标准SQL数值数据类型。
以下列出常用数据类型:
数据类型 | 大小 | 描述 |
---|---|---|
INT | 4字节 | 整数,可以使1、2、3、4 |
FLOAT(M, D) | 4字节 | 单精度浮点型,m总个数,d小数位 |
DOUBLE(M, D) | 8字节 | 双精度浮点型,m总个数,d小数位 |
DECIMAL(5,2) | decimal是存储为字符串的浮点数,整数部分为3位,小数部分为2位 | |
DATE | 3字节 | 日期,格式:2016-01-01 |
INT | 4字节 | 整数,可以使1、2、3、4 |
DATETIME | 8字节 | 日期时间,格式:2016-01-01 01:01:01 |
CHAR(10) | 0-255字节 | 固定分配10个字符长度 |
VARCHAR(10) | 0-65535 字节 | 长度不确定,最多能存储10个字符,可变长度 |
BLOB | 0-65 535字节 | 二进制形式的长文本数据,保存图片 |
TEXT | 0-65 535字节 | 长文本数据,保存一篇文章 |
查看API《MYSQL5.1中文帮助文档.chm》了解完整的数据类型:11.列类型->11.1列类型概述
可以看到,字段的数据类型包括以下三种:
- 数值类型:INT、FLOAT、DOUBLE、DECIMAL
- 日期和事件类型DATE、DATETIME日期和事件类型DATE、DATETIME
- 字符串类型CHAR、VARCHAR、BLOB、TEXT
字符串类型CHAR、VARCHAR、BLOB、TEXTchar和varchar区别?
- CHAR长度固定,不满10个字符,使用空格表示。
VARCHAR不固定,不满10个字符,不需要使用空格表示。
VARCHAR比CHAR省空间 - VARCHAR比CHAR效率低
VARCHAR类型的数据,存储时,数据库需要额外的计算出有多少长度的字符并且记录下来,在检索时,还要根据实际的长度获取,这样降低了效率,VARCHAR以时间换空间。 - 什么时候使用CHAr类型?VARCHAR类型
性别用CHAR,手机号码11位用CHAR。
字符串类型CHAR、VARCHAR、BLOB、TEXT
查看表结构
DESC 表名
如:DESC T_STUDENT
查看创建表的语句
SHOW CREATE TABLE 表名
如:SHOW CREATE TABLE T_STUDENT
删除表
DROP TABLE 表名
DROP TABLE IF EXISTS 表名
编辑表
在实际使用中,一般表建立之后,不会修改表结构。
如果要修改表结构,应该先删表,再重新创建表,而不是直接编辑表字段。
修改表名
方法一:
RENAME TABLE T_旧表名 TO T_新表名;
方法二:
alter table 旧表名 rename 新表名;
修改字段的类型
ALTER TABLE T_表名 MODIFY T_字段名 数据类型;
修改字段名及列类型
alter table 表名 change 旧列名 新列名(可以保持不变) 新的类型;
通过change既可以修改列名也可以修改类型
给表添加一个字段
ALTER TABLE T_表名 ADD T_字段名 数据类型;
删除一个字段
ALTER TABLE T_表名 DROP T_字段名;
alter table 表名 drop column 列名;
总结
找规律
创建数据库CREATE DATABASE 库名…
创建表CREATE TABLE 表明…
删除表DROP TABLE 表名
修改表 ALTER TABLE 表名
DDL数据定义语言(Data Definition Language):只操作对象,不会操作具体数据
CREATE 创建数据库和数据库中的对象
DROP 删除数据库和数据库中的对象
ALTER 修改数据库和数据库中的对象