hadoop学习序曲之mysql基础篇--mysql基础

1、数据库 -- 一个文件系统,存储数据使用。一般通过标准SQL语言去访问数据库数据。
2、关系型数据库 --  保存关系模型数据。  E-R图
   非关系型数据库 -- 相对于关系型数据库来说的数据库,保存半结构化数据及非结构化数据

关系型数据:
mysql数据库 : 开源,中小型数据库。属于Oracle公司,从6.0+出现收费版本,企业版。任何平台都可以使用。
oracle数据库:不开源,收费,大型数据库。oracley应用领域:安全领域,银行领域等。
DB2数据库:IBM数据库,大型,收费数据库。
SQL server数据库:微软数据库,中大型数据库,收费。运行在window系统上,结合.net开发。
hsql数据库:小型数据库。
sybase:小型数据库。已过时。powerdesigner软件--建模工具。

组合:LAMP组合(linux + apache + mysql + php)  、 SQLserver + windows + .net

非关系型数据库:
hbase数据库:开源,bigtable的开源实现,来源于谷歌三篇论文:Mapreduce 、 bigtable 、gfs。
redis数据库:内存数据库。
mongoDB数据库:半关系型数据库。
cassandra数据库:开源,类似于hbase,比hbase容错性好。

mysql的安装和卸载:
卸载
1、在控制面板中,点击卸载。
2、删除数据文件目录:找到安装目录中的my.ini文件
   datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
3、打开dos窗口,输入regedit进入注册表,点编辑--查找--输入mysql搜索,找到mysql相关键值删除
  
安装
1、双击mysql-5.5.46-winx64.msi文件(32位系统使用mysql-5.5.46-win32.msi)。
2、安装目录选择:
   默认C:\Program Files\MySQL\MySQL Server 5.5\。
   数据目录:C:\ProgramData\MySQL\MySQL Server 5.5\ ,建议放到D盘。
3、修改字符集:默认是latin1  -- 等效于 ISO-8859-1,修改字符集为utf8。
4、填写超级用户密码,开始安装,出现4个勾则安装成功。

访问mysql
1、运行输入cmd,打开 dos窗口
2、使用命令mysql -u root -p 然后输入密码;mysql -uroot -p123456直接访问
3、访问时保证mysql是启动状态services.msc 访问服务页面

重置root密码
1、停止mysql服务
2、mysqld-nt --skip-grant-tables ,5.5使用mysqld: mysqld --skip-grant-tables
3、打开dos窗口输入mysqld --skip-grant-tables别动,在打开另外一个dos窗口直接输入mysql -u root -p回车不需要密码
4、use mysql
   update user set password=password('abc') WHERE User='root';
5、关闭两个dos窗口,打开任务管理器结束mysqld.exe进程
6、服务界面中启动mysql服务,重新登录

mysql相关要点
数据库服务器:安装了mysql的机器,叫做数据库服务器

数据库访问语言(SQL)
实体类
class user
{
id int,
name string,
age int
}
对应于数据库的一个数据行。

访问数据库时使用是SQL语言:Structured Query Language。数据库查询语言。
非过程性语言和过程性语言
非过程性语言一次性执行。加强版PL/SQL、T-SQL。
SQL语言:查询、定义、控制、操纵。

mysql用法:
1、登录:mysql (-h 127.0.0.1 -P 3306) -u root -p回车->输入密码
2、使用数据库
  show database;查看数据库
  use database_name; 使用某一个数据库
  show tables; 查看数据表
3、创建表
 
SQL语言分类:
DDL:数据定义语言 - Data Definition Language,创建数据库、创建数据表、创建视图、创建索引。
DML: 数据处理语言 - Data Manipulation Language ,数据表已经存在,操作数据表中的数据的操作叫做DML。
DCL:数据控制语言 – Data Control Language,判断型,事务型。
DQL:(不是w3c定义,程序员定义),数据查询语言 – Data Query Language
----要求:能够识别操作属于那种sql类型

DDL语句:
CREATE DATABASE; 创建数据库
CREATE TABLE; 创建数据表
ALTER DATABASE; 修改数据库
ALTER TABLE; 修改表
CREATE VIEW; 创建视图
ALTER VIEW; 修改视图
DROP VIEW; 删除视图
TRUNCATE TABLE; 删除表数据

数据库操作:
1、use 数据库
  use 数据库名
2、没有,创建
  create database 数据库名;
  create database 数据库名 if not exists ;如果不存在改数据库,则创建,如果存在,不做操作。
3、查看数据库
  show databases 数据库名;
4、查看数据库字符集、名称、比较规则
  show create database 数据库名 ;
5、删除数据库
 drop database 数据库名 if exists ;\\如果存在,删除
6、修改数据库:修改数据库字符集 
 alter database 数据库名  character set gbk;
7、查看当前使用的数据库
 select database();

数据库表操作
1、数据库表的创建
CREATE TABLE table_name
(
field1  datatype,
field2  datatype,
field3  datatype
)character set 字符集 ;

create table student(
id int,
name varchar(11),
age int
);

查看表
show tables;
查看表结构
desc student;
添加表字段
alter table student add salary int ;
修改表字段的属性
alter table student modify name varchar(12);
修改列名:alter table student change name username varchar(11);
查看表属性
show create table user;
修改表字符集
alter table user character set utf8;

表字段的约束:
主键约束:确定数据记录唯一性。在字段后面添加 primary key;自增auto_increment
唯一约束:确定字段唯一性unique
非空约束:添加后字段不能为空 not null

数据库表字段类型:
数值型
tinyint\smallint\mediumint\int\bigint
字符型
char \ varchar
大数据类型
text、blob
日期时间型
year、time 、datetime 、timestamp
逻辑型
BIT

java对象和数据库字段类型对应:
User{
id int ,   -----   tinyint\smallint\mediumint\int\bigint
name string ,  ---- char \ varchar
birthday Date,  ---- year、time 、datetime 、timestamp
sex boolean  ---- bit
}
tinyint占用1个字节 ------ byte、short、int、long、float、double

字符类型:
char(11): 定长,固定存储空间,"lisi"占用11位,性能更好,当数据末尾有空格时,会丢失。
varchar(11):变长,不固定,"lisi"实际占用4位

日期时间型:
year型
Date型
Time型
Datetime\timestamp:区别是timestamp自动更新,大数据开发一般用时间戳(UTC时间、基础时间)。

操作表数据(CRUD):
插入、查询、更新、删除。
1:插入
方式一:
insert into <表名>(字段名) values(数据)
方式二:
insert into <表名> values(数据) :必须顺序指定插入的数据

插入数据时,如果插入的数据中有中文,会报一下错误。
ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD\xB7\xE1' for column 'name' at row 1
需要做如下设置,dos窗口输入set namess gbk; (告诉mysql服务器当前client字符集)

:2:更新
语法:update <表名> set 字段="新加值" where 字段="值" (注意:如果不写where语句,将更新所有数据) 
update test set age=51 where name='zhangsan';

更新多个字段用逗号分隔:update test set age=49,name="lisi" where age=51;

3:删除操作
  delete from <表名> where 字段='值'

如果使用delete删除表中所有记录和使用truncate table删除表中所有记录 有何不同?
 delete删除时是逐行删除,从表记录记录删除  ---- 属于DML操作   ----  
 truncate将整表之间删除,重新创建新的表  ---- 属于DDL操作 ---- 性能好!

4:查询操作
创建一张表
定义一个成绩表exam:包含id,name,chinese,math,english
语法:select *|<列名,列名,...> from <表名> where 列名=<值>,列名=<值>,...

java程序拼接sql语句时可能使用到如下语句:
select name,english from exam where 1=1;  \\永远为真
select name,english from exam where 1=0;  \\永远为假

查询所有列---指定所有列名称
select id,name,chinese,math,english from exam;
去重使用distinct,直接指定需要去重的列。

别名
select 列名 as 别名 from <表> where 字段=值,字段=值,...
select 列名 别名 from <表> where 字段=值,字段=值,...

和给定字段时区别开来
select 列名 别名 from <表> where 字段=值,字段=值,...  //指定别名
select 列名,列名 from <表> where 字段=值,字段=值,...  //添加逗号为指定不同列

运算符:
比较运算符
>   <   <=   >=   =    <>  
between  ...and... :在什么到什么之间
between 小值 and 大值 , 等价于  >= and <=
   用法:select 列名,列名,... from 表名 where 字段 between 值 and 值;

in(set) : 括号中是可选条件
  where 字段 in (条件,条件,...)

like:模糊查询,like "张%"  ,找出以张开头的字符的所有记录

      like '张_',找出张开头并且只有两个字符的记录。
   where 字段 like ""

is null:判断是否为空
  where 字段 is null  ; where 字段 is not null

逻辑运算符
and :逻辑与,必须要满足所有条件
or:逻辑或,只需要满足一个条件
not:逻辑非,不满足条件

聚集函数--count
count--返回所有或者符合条件的记录数。

聚集函数--sum
sum--返回整列的数据总和。
sum函数只能统计数值类型的字段。
ifnull(字段,默认值) ---- 判断该字段是否为null ,如果是则使用默认值,如果不是使用字段值。

聚集函数--avg
avg--对整列求平均 求值时,字段最好判断一下是否为空
sum函数只能统计数值类型的字段。

聚集函数--max\min
#求学员的最高总分和最低总分
select max(chinese+math+english) 最高总分 ,min(ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0)) 最低总分  from exam ;

having:对结果集进行筛选,where是在查询过程中进行筛选

limit m;限制查询条数
limit m,n;限制查询条数 m代表懂第几条开始返回,n代表返回多少条。

排序:order by
默认是按照升序排列 升序是asc,降序是desc

经典用法:s-f-w-g-h-o
select ---- from -----where --- group by ---- having ---- order by 
执行顺序:from --> where --> group by --> having --> order by 

from型子查询:将结果集传递给外部的查询语句。
   select * from exam where math in (select max(math) from exam);
where型子查询:将查询的结果集作为where的查询条件
   select * from exam where math in (select max(math) from exam);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值