剑指数据仓库-SQL01

本文详细介绍了MySQL数据库的基础语法,包括数据库与用户创建、进程管理、字段类型、表创建及规范、字符集设置等,同时提供了实用的建表示例与操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、上次课程回顾

二、二、MySQL语法一(创建database && user && show processlist && kill进程)

三、本次课程面试题&&作业

一、上次课程回顾

  • https://blog.youkuaiyun.com/SparkOnYarn/article/details/104876632
  • 软连接(软件升级、日志迁移),日志迁移场景,磁盘爆了,把50G硬盘的数据移动到2T硬盘中去,ln -s进行软连接。

二、MySQL语法一(创建database && user && show processlist && kill进程)

  1. 创建Database && User:

     create database ruozedata;
     grant all privileges on *.* to 'root'@'%' identified by '960210';
     flush privileges;
    
  • 大数据中对于我们而言,用到表是最多的,其余视图、索引、存储过程其它开发人员用的比较多。
    在这里插入图片描述
  1. MySQL中杀进程,使用终端登录

     1、命令行不能带有密码,否则history查看会有泄露
     hadoop:mysqladmin:/usr/local/mysql:>mysql -u root -p960210
     mysql>
     hadoop:mysqladmin:/usr/local/mysql:>mysql -u root -p 960210
     Enter password: 
    
     2、show processlist;		查看正在运行的进程:
     mysql> show processlist;
     +----+------+--------------------+-----------+---------+------+----------+------------------+
     | Id | User | Host               | db        | Command | Time | State    | Info             |
     +----+------+--------------------+-----------+---------+------+----------+------------------+
     |  9 | root | 122.96.50.84:35845 | ruozedata | Sleep   |  716 |          | NULL             |
     | 10 | root | 122.96.50.84:36362 | NULL      | Sleep   |  692 |          | NULL             |
     | 14 | root | localhost          | NULL      | Query   |    0 | starting | show processlist |
     +----+------+--------------------+-----------+---------+------+----------+------------------+
     3 rows in set (0.00 sec)
    
     3、因为此时我们正在使用海狸连接,我们断开dbeaver连接,再次查看进程发现已经少了两个进程了。
     mysql> show processlist;
     +----+------+-----------+------+---------+------+----------+------------------+
     | Id | User | Host      | db   | Command | Time | State    | Info             |
     +----+------+-----------+------+---------+------+----------+------------------+
     | 14 | root | localhost | NULL | Query   |    0 | starting | show processlist |
     +----+------+-----------+------+---------+------+----------+------------------+
     1 row in set (0.00 sec)
    
     4、kill id杀掉进程
     mysql> kill 15;
     Query OK, 0 rows affected (0.00 sec)
     
     mysql> kill 16;
     Query OK, 0 rows affected (0.00 sec)
    
     5、注意:看时间,找到哪个消耗时间长的,有可能导致mysql的服务夯住,别导致锁死 --》 这个SQL的目的一定要搞清楚,到底能不能被kill掉。
    

2.1、MySQL字段类型

1、数值类型:

类型释义
int整数型
long长整型
double双精度
float单精度
decimal小数值(与金额挂钩)

2、字符串类型:

类型释义
char定长,0-255个字节,比如一个英文字母a,它占存储会自动补全255字节,浪费存储空间
varchar变长,字符串,存储0-65535字节,比如一个英文字母b,它本身多大就占多少存储空间

3、日期类型:

类型释义
date日期类型,YYYY-MM-DD
time时间 HH:MM:SS
datetime年月日时分秒,YYYY-MM-DD HH:MM:SS
timestamp年月日时分秒,YYYY-MM-DD HH:MM:SS

作业:datetime和timestamp的区别?

2.2、MySQL中的SQL类型&创建数据表

DDL:create drop 数据定义语言
DML:insert update delete select 增删改查,数据操作语言
DCL:grant 数据控制语言

1、规范的创建rzdata数据表,关键最后5行
create table rzdata(
id int(10) not null auto_increment,			//id不为空自增长
name varchar(30),
age int(3),
createuser varchar(200),							
createtime timestamp not null default current_timestamp,					//创建时间不为空且默认为当前时间
updateuser varchar(200),
updatetime timestamp not null default current_timestamp on update current_timestamp,			//修改时间也不为空,当数据那一刹那发生改变就会留下一个记录时间。
primary key (id)		//id做主键
);

2、数据准备:
insert into ruozedata.rzdata(name,age,createuser,updateuser) values ('john',24,'sail','sail')

3、测试对这条数据进行更新:
update ruozedata.rzdata set age=18 where name='john';
  • 修改了john的年纪为18,就会有一条记录:
    在这里插入图片描述

2、设置name的唯一约束,使得不能插入同名的数据:
图形化界面操作:

  • 一层层的打开到表,点击约束,右键新建约束,选择name字段,设置为unique_key,点击确定,下角有一个保存,需要点击执行。
    在这里插入图片描述
insert into ruozedata.rzdata(name,age,createuser,updateuser) values ('john',24,'sail','sail');
insert into ruozedata.rzdata(name,age,createuser,updateuser) values ('john',25,'fox','fox');
出现错误提示:
SQL 错误 [1062] [23000]: Duplicate entry 'john' for key 'rzdata_un'

//下次遇见这个错误就应该能够明白:是设置了唯一值,所以值不能被重复。
  • J总公司每一条数据都有createuser和updateuser和upadatetime,

2.3、MySQL建表规范

a. 表名称、字段名称 不能是中文、不能是汉语拼音;需要统一风格
b. 统一风格:比如你建表的时候要去看已经存在的表的风格是什么样的:以一个字段创建者为例子,有很多种写法:create_user、cuser、createuser;不确定的话可以拿去个leader check。
到时候来新项目的风格就是by you.
举例:以创建时间为例:ctime、createtime、cretime、cre_time、create_time;
c. MySQL表的第一个字段是id自增长的,设置为主键,它是没有意义的;为了mysql能够进行高性能的查询。
d. 一张表只能有一个主键:primary key ==> id,主键字段必须唯一,unique + not null
e.后四个字段都需要增加:createuser、createtime、updateuser、updatetime;这条记录无论是做新增、还是做修改,直观明了了。
f. 双击表下的“列”,然后拉到最后,会有注释栏目,把注释加上,直观明了的知道每个字段的含义,最后点击保存。

面试题:自增长主键和UUID方式的对比

2.4、MySQL字符集

1、展示创建数据库的建表语句,创建数据库的时候并没有设置字符集,默认设定为了latin字符集:

  • show create database ruozedata;
  • CREATE DATABASE ruozedata /*!40100 DEFAULT CHARACTER SET latin1 */

//数据库database有字符集,表table有字符集,列column也有字符集。

2、服务端也有字符集:

  • show variables like ‘%char%’;

      character_set_client	utf8
      character_set_connection	utf8
      character_set_database	latin1
      character_set_filesystem	binary
      character_set_results	
      character_set_server	latin1
      character_set_system	utf8
      character_sets_dir	/usr/local/mysql-5.7.11-linux-glibc2.5-x86_64/share/charsets/
    

2.5、MySQL的增删改查

insert into ruoedata.rzdata(name,age,createuser,updateuser) values (‘john’,24,‘root’,‘root’);

select * from ruozedata.rzdata;

update ruozedata.rzdata set age = 19 where name = ‘john’;

delete from ruozedata.rzdata where name = ‘john’;

注意:切记在生产上不要使用*,写一个limit 10;

select * from rzdata; //切记生产写sql不要加*
select id,name,age from rzdata;

  • 财务系统,delete from rzdata没有加上where条件,就会导致所有的数据都会被删除;通过binlog文件进行恢复(arch/mysql-bin)。

未来在工作中无论是update还是delete切忌加上where条件,1条还是多条数据,createtime >=‘2019-01-01 00:00:00’

举例:数据表有一亿数据,select * 会导致不能对外提供服务,select id,name,age from rzdata limit 3; 查看样本数据就使用limit 10

生产上关于MySQL是如何做的:

  • MySQL的主从复制,生产上的主库尽量都做写的操作,从库进行写的操作。
  • 业务ERP APP --> A服务器上的MySQL:写 --> 数据会自动的同步到B服务器上的MySQL: 读 ;这就叫读写分离。
  • 确认清楚select和delete的where使用情况。

三、本次课程面试题&&作业

面试题

1、datetime和timestamp的区别?

2、加入id自增长主键超额了,该怎么办?

3、ENGINE=InnoDB 是什么?和MyISAM的区别是什么

作业

1、创建MySQL表规范

2、整理DDL、DML语句,依次执行

3、整理三句话,修改密码、赋予权限、刷新权限

### 回答1: Flink是现在最为流行的数据流处理引擎之一,被广泛应用于大数据领域中的实时数据处理、分布式计算、批量数据处理、流与批的混合处理等各个方面。Flink的灵活性、高可用性和可扩展性都得到了业内的高度评价,因此得到了越来越多工程团队的选择与信任。 Flink的处理引擎采用的是基于数据流的模型,对数据进行实时的处理操作,而不是采用基于批处理的模式。这种模式的优势在于实时性更好,处理速度更快,能够应对更为复杂的数据处理任务,不仅对数据的延迟有更精细的控制,而且在可靠性上也表现出了更高的水平。 此外,Flink还具有强大的内存管理、计算优化和资源调度功能,这些特性为Flink的处理引擎提供了更高的效率和可靠性。尤其以Flink的计算优化能力为例,Flink内置的优化机制可以在不同的计算场景下,为用户提供合适的优化建议,从而提升处理效率和性能。因此,Flink被广泛应用于真正的实时数据处理任务,不论是实时数据仓库、业务监控、在线预测等场景都能得到应用。 综上所述,Flink是一个非常强大的数据处理引擎,其采用的基于数据流的处理模式具有更高的灵活性、可用性和可扩展性,迎合了大数据处理的需求。因此,Flink具有广泛的应用前景,在各个领域包括企业级应用、物联网、人工智能等领域都能展现出其优异的性能。 ### 回答2: 剑指大数据 Flink 是一种流处理引擎,易于使用且具有高度可扩展性。Flink 提供了对数据流的严格处理,能够以任何规模处理数据流,从而在数据处理和分析中提供了强大的支持。与其他流处理引擎不同,Flink 允许在同一应用程序中处理批处理和流处理数据。Flink 的架构基于有向无环图 (DAG),将任务以节点和有向边的形式映射到物理计算资源上。Flink 提供了广泛的 API,包括基于 Java 和 Scala 的 API,还提供了适用于 SQL 和流程编排的 API。 Flink 还具有高度可扩展性,支持水平扩展和垂直扩展,并支持 Amazon Web Services、Google Cloud 和 Microsoft Azure 等云平台。Flink 提供了不同类型的计算模式,如批处理、迭代和流处理等,可以轻松地处理实时数据处理、跨批处理的计算和流式数据分析。此外,Flink 还提供了一些高级功能,如事件驱动的应用程序、弹性 RESTful API、基于状态的计算以及基于真实世界使用案例的运行时最佳实践。Flink 的这些功能使其成为大数据处理和实时流处理的理想选择,可广泛应用于广告、电子商务、金融、物联网等领域。 ### 回答3: 剑指大数据 flink,flink是一个开源流处理框架,是当前行业内最火热的技术之一。flink的出现填补了数据处理中的流式处理空白,使得大数据处理更加高效快捷。flink具有较高的扩展性和可伸缩性,可以应对高并发的数据处理任务,实现实时的数据处理和分析。与其他流处理框架相比,flink具有较高的容错性,能够在发生故障时自动恢复,确保数据处理过程的高可靠性。 flink支持多种数据处理模式,如批处理、流处理、迭代计算等,具有较强的通用性和适应性。同时,flink还支持数据流和状态的有机结合,可以存储和维护全局状态,实现更加复杂的计算任务。flink还具有灵活的部署方式,支持在各种环境中进行部署,包括本地机器、云平台等。因此,flink被广泛运用于实时流量分析、广告推荐、金融风控、电商推荐等各种大数据应用场景。 总之,flink是一个高效、可靠、灵活的大数据流处理框架,通过对分布式流式数据的处理和计算,为企业提供了更加高效的数据分析解决方案,对于当前大数据领域的发展具有重要的推动作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值