1.1数据库的简介
1.1.1数据库
数据库( DataBase,DB)从本质上讲就是一个文件系统,它能够将数据有组织地集合在一起,按照一定的规则长期存储到计算机的磁盘中,并且能够供多个用户共享和使用,同时,用户能够对数据库中的数据进行插入、删除、修和查询操作。
1.1.2 数据库管理系统
数据库管理系统(DataBase Management System,DBMS从本质讲就是一个为管理数据库中的数据而设计的一套管理系统。它依托数据库,对外提供统一管理数据库中数据的功能和接口能够有效地对数据库的安全、认证、数据 备份、数据恢复、数据传输等进行统一的管理。同时,数据库管理系统能够根据所依托的数据库模型对数据库进行相应的分类。大多数的数据库都是通过数据库管理系统对数据库中的数据进行管理和维护的。
1.1.3 DB和DBMS关系
1.2数据库的分类
1.2.1关系型数据库
依据所有存储数据的模型之间的关系建立的数据库。所谓关系模型,指的是“一对一、一对多、多对多”等关系型。常见的关系型数据库如下:
Oracle:是Oracle公司的数据库产品
Mysql: 最早属于瑞典的MysqlAB公司的,后被Sun公司收购,Sun在2009年4月20号被Oracle收购。
SQLServer:微软旗下的数据库产品
Access:微软旗下的数据库产品
DB2:IBM公司旗下的数据库产品
1.2.2非关系型数据库
泛指非关系型的数据库,区别于关系数据库。采用了没有特定关系模型来组织数据。常见的非关系型数据库如下:
MongoDB:是一个面向文档的开源NoSQL数据库。MongoDB使用JSON之类的文档来存储任何数据。它是用c++写的。
Cassandra:是Facebook为收件箱搜索开发的。Cassandra是一个用于处理大量结构化数据的分布式数据存储系统。
Redis:是最著名的键值存储。Redis是用C语言编写的。它是根据BSD授权的。
HBase:是谷歌为BigTable数据库设计的分布式非关系数据库
1.3数据库的安装及配置
1.3.1ubuntu16安装MySQL
安装命令:
sudo apt-get update #更新软件源
sudo apt-get install mysql-server #安装mysql
安装过程会提示设置mysql root用户的密码
重新输入新密码
然后它会自动安装完成()
启动或关闭MySQL服务
默认安装完成后,MySQL为启动状态
service mysql start
service mysql stop
确认是否启动成功
sudo netstat -tap | grep mysql
mysql节点处于LISTEN状态表示启动成功
进入mysql shell界面
mysql -u root -p
解决MySQL中文乱码问题
解决利用sqoop导入MySQL中文乱码的问题(可以插入中文,但不能用sqoop导入中文)导致导入时中文乱码的原因是character_set_server默认设置是latin1,如下图
修改方式:
1、编辑配置文件sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
2、在[mysqld]下添加一行character_set_server=utf8。记得保存退出如下图
3、重启MySQL服务器service mysql restart
4、登录MySQL,并查看MySQL目前设置的编码。show variables like "char%";
Ubuntu已经成功安装上了MySQL数据库
MySQL数据库操作指令
2.1 SQL的分类
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(重要)(Data Query Language):数据查询语言,用来查询记录(数据)。 注意:sql语句以;结尾
2.2 MySQL操作数据库
2.2.1 创建数据库create database
使用create database语句创建数据库
语法:create database database_name;
案例:创建名为person的数据库
create database person;
查看创建好的数据库:show databases;
使用create database if not exists语句创建数据库(推荐)
如果数据库中已经存在名称为person的数据库,再次使用CREATE DATABASE database_ name语句创建名称为 perso的数据库时会报错。
这样,使用CREATE DATABASE IF NOT EXISTS database_ name语句创建数据库时将不再报错。
2.2.2 查看数据库
show databases查看数据库
语法:show databases;
查看MySQL命令行所在的数据库
查看命令行所在的数据库。
语法:select database();
切换数据数据库
语法:use person;
查看数据库的创建信息
语法:show create database person \g
2.2.4 修改数据库的字符编码
修改字符编码命令
语法:alter database person character set utf8;
查看数据库的字符编码命令
语法:show create database person \G
2.2.5 删除数据库
语法:drop database if exists person;
3.1 MySQL操作数据表
创建完数据库之后,接下来就是在数据库中创建数据表。在MySQL中,数据表以二维表格的形式展示,表格中的一行代表一条完整的数据记录,表格中的一列代表数据的某个特定属性。
需要注意:
在数据库中创建表之前,需要查看当前使用的数据库
语法:select database();
然后切换到你需要操作的数据库
Use db_name;
3.2 数据库的DDL操作
DDL操作 主要管理数据库、表、列等操作
3.2.1在数据库中创建表:
语法:create table 表名(字段1 字段类型,字段2 字段类型, ...字段n 字段类型);
3.2.2常用数据类型:
int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型;
char(10): 'aaa ' 占10位
varchar:可变长度字符串类型;
varchar(10): 'aaa' 占3为
text:字符串类型;
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
boolean:mysql不支持,oracle支持
3.2.3查看当前数据库中的所有表
SHOW TABLES;
3.2.4查看表的字段信息
DESC table_name;
3.2.4 添加列信息
在上面stu表的基础上增加一个addr列。
ALTER TABLE stu ADD addr text;
修改addr列,使其长度为60。
alter table stu modify addr varchar(60);
3.2.5 删除表中列
删除addr列,一次只能删一列。
alter table stu drop addr;
3.2.6 表名的重命名
表名改为new_stu。
rename table stu to new_stu;
3.2.7查看表格的创建细节
SHOW CREATE TABLE new_stu;
3.2.8修改表的字符集为utf8
ALTER TABLE user CHARACTER SET utf8;
3.2.9 列名称重命名
列名name修改为username
ALTER TABLE user CHANGE name username varchar(100);
3.2.10备份表结构和表数据
create table tname2 as select * from tname1;
3.2.11备份表结构
create table tname2 like tname1;
3.2.12删除表
DROP TABLE user ;
数据库的DML操作
4.1 数据库的DML操作概述
DML是对表中的数据进行增、删、改的操作。不要与DDL混淆了。
INSERT 、UPDATE、 DELETE 小知识:在mysql中,字符串类型和日期类型都要用单引号括起来。空值:null
4.2.1插入操作 insert into
语法:INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);注意:列名与列值的类型、个数、顺序要一一对应
4.2.2查询操作 select * from 表名;
注意select不是DML操作 而是 DQL操作 此处讲 只是方便查看数据库插入结果
语法:select * from 表名;
4.2.3复制表操作
创建一张表 和需要复制的表所有列 尽量列名称、列类型保持一致。否则容易出现数据错误
create table stu(num int, name text, age int);
语法:insert into stu select * from new_stu;
4.2.4修改操作update
语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值
需求:将stu表中的姓名’lucy’修改成’tom’
4.2.5删除操作 delete
语法:DELETE FROM 表名 【WHERE 列名=值】
需求:删除上表中name=’tom’所在的行
语句:delete from stu where name=’tom’;
删除整个表:delete from 表名;