聚合函数11

本文详细介绍了MySQL数据库的基础知识,包括DBMS的概念、数据库的创建与管理、表的结构和操作,以及数据的增删改查。还讨论了数据库连接、用户权限管理、数据类型和SQL语句的使用。特别提到了主键和外键在数据库设计中的重要性,以及如何进行数据库的备份和恢复。此外,文章还强调了避免使用NULL和合理设计数据库结构的重要性。
摘要由CSDN通过智能技术生成

1. DBMS是一类软件的统称,比如MySQL,Oracle
2. 数据库: MySQL是一个数据库管理的软件,这个软件里面管理的是数据库。
3. 表(二元关系)是数据存储的真正单元。
不能往数据库里直接发放数据,只能将数据放在表格中。

数据库相关的语句:
create database 数据库名;
show databases;  #查看所有的数据库
drop database 数据库名;
use 数据库名;

表格相关的语句:
create table 表格名(列名 列类型, 列名 列类型, 列名 列类型。。。。。。。。。。);
drop table 表格名;
show tables; 查看所有的数据库表格

表格内数据相关的:
insert into 表格名(列名,列名。。。。。) values (值,值。。。。。。);
select * from 表格名;
update 表格名 set 列名=列的新值, 列名=列的新值,........;
delete from 表名;


MYSQL这个软件只要安装在计算机上,这台计算机就成了一个数据库服务器。
服务器就是对外提供服务的一台计算机。


用DataGrip的时候,建立一个数据库连接,用户名如果是root,那么database处一般应该是mysql
mysql这个数据库本身存储的是mysql这个软件运行所必需的信息,非常重要。同时也存储了其它数据库的基本信息和用户信息。
这个数据库一旦损坏,其余数据库和mysql这个软件也随之崩溃。

我们工作后,一般会由管理员分配一个数据库和用户、密码。

注意建立/删除用户、数据库和授权的操作必须由root用户登录才能完成。
不要用你建立的普通用户再去尝试建立其它用户或者数据库。

CREATE DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';

GRANT alter,select,insert,update,delete,create,drop,index,references,
    CREATE VIEW,TRIGGER,show view, ALTER ROUTINE,
    create routine, execute, create temporary tables ON 数据库名.* TO '用户名'@'%';

drop user 用户名; 删除用户


MySQL中表格列的常见类型
create table test(
    a int,
    b double,
    c float,
    d char(10),        #类似于Java中的String,但是宽度固定是10
    e varchar(20),      #类似于Java中的String,但是宽度不固定,此处的20是上限
    f time,
    g date,
    h datetime,         #年月日时分秒,年一直到9999年
    i timestamp,
    j enum('F', 'M')
);

insert into test(a, b, c, d, e, f, g, h, i, j)
values(1, 3.14, 3.14, 'char', 'varchar', TIME'13:01:59', DATE'2021-09-19', '2021-01-01 13:08-22', '2021-01-01 13:08-22', 'F');

insert into test(a, b, c, d, e, f, g, h, i, j)
values(1, 3.14, 3.14, 'char', 'varchar', '13:01:59', '2021-09-19', '2021-01-01 13:08-22', '2021-01-01 13:08-22', 'F');
#TIME和DATE类型最好加上前缀
#枚举和字符串用单引号,数字直接写


insert into test
values (3, 3.14, 3.14, 'char', 'varchar', '13:01:59', '2021-09-19', '2021-01-01 13:08-22', '2021-01-01 13:08-22', 'F');
#插入语句当插入的数据和列数量相同的时候,可以不写列名。但是这样的做法非常不好,应该避免。


insert into test(a, c, j) values (3,  3.14, 'F');


#下面有一个MySQL的特殊写法,可以一次插入多行。但是这样的做法非常不好,应该避免。
insert into test(a, c, j) values (4,  3.14, 'F'), (5,  3.14, 'F'),  (6,  3.14, 'F');

select a, now() from test; #now是MySQL内置函数,表示当前时间
select now() from dual;
select 1+2 from dual;
select 1+2, 'abc', now() from dual;
#当我们查询的内容并不在任何一个表格中时,为了sql语句的完整性,我们发明了dual这个虚表
#虚表是一个并不存在的表格,只是为了语法上的需要。





#表别名,列别名和关键字的使用
select 1+2*4-(5-4)*7 as result, 'abc' as text, now() as now from dual;
select 1+2*4-(5-4)*7  result, 'abc'  text, now()  now from dual;

select a, b, c from test as t;
select t.a, t.b, t.c from test as t;
select t.a, t.b, t.c from test  t;

select 'select' from dual;
create table users(
    `select` int
);

#聚合函数
select sum(a), max(a),min(a),avg(a) from test;
select count(*) from test;  #*尽量不要使用,指所有列
select count(a), count(e) from test; #null是不会被算在总行数中的


#null的使用:数据库里尽量不要使用null,会为后期的数据仓库带来麻烦。
#null是关键字,使用的时候不需要加特殊符号
insert into test(a)  values (null);
#null不能比较相等,必须使用is null或者is not null
select * from test where a < 3;
select * from test where a = null;  #这句话并不是语法错误,只是结果不确定
select * from test where a is null;
select * from test where a is not null;

#where后面可以写哪些内容?
select * from test where a >= 3;
select * from test where a >= 3 or a is null; #and类似于Java中的&&, or类似于Java中的||
select * from test where e = 'varchar';
select * from test where a>=3 and a<=5;
select * from test where a between 3 and 5; #等价于 a>=3 and a<=5; between和and是一体的,是一个运算符
select * from test where e like '%a%';  #like用来判断字符串相等,其中%指代的是0或者多个字符。
select * from test where e like 'a%';
select * from test where e like '_a%';  #_表示一个任意的字符,但不能是空
select * from test where h > '2021-01-01 13:08:22';


#主键和外键
#主键是行的唯一标识,主键不允许是null,也不允许重复。主键在建立表格是就要指定。
#每一个表格今后都要带主键
drop table if exists users;
create table users(
    id int primary key auto_increment,  #primary key就表示id这个列是一个主键,auto_increment是让主键自动增长
    name varchar(20),
    age int
);
insert into users(name, age) value ('tom', 10);
insert into users(name, age) value ('jerry', 5);
insert into users(name, age) value ('ben', 12);
#自动增长的意思是让我们可以不用手动给其赋值

#外键用于表达两个表格之间存在某种关系,用于将两个表格连接在一起。
drop table if exists logs;
create table logs(
    id  int primary key auto_increment,
    login_time datetime,
    u_id int,
    foreign key (u_id) references users(id)
);
# foreign key表示外键,括号里就是被选中作为外键的列名,references表示引用,后面放另一个表格的名字和主键的列名
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
聚合函数是指对一组值进行计算并返回单个值的函数。常见的聚合函数包括sum、count、max、min、avg等。这些函数可以对数据进行求和、计数、取最大值、取最小值、计算平均值等操作。 非聚合函数则是指不对一组值进行计算,而是对单个值进行操作的函数。非聚合函数可以对每个数据点进行独立的操作,例如字符串处理函数、日期函数等。 在Tableau中,当我们在使用聚合函数和非聚合函数进行比较时,可能会出现报错提示不能混合聚合与非聚合比较结果。这是因为聚合函数对整个数据集进行计算,而非聚合函数对每个数据点进行操作,两者的结果无法直接进行比较。 解决这个问题的方法是使用Tableau提供的聚合计算功能。我们可以在计算字段中使用聚合函数来创建一个新的字段,然后再与其他聚合函数进行比较。例如,我们可以使用count函数统计每个部门领取了多少文具,然后再按日期进行分组,计算今年每个部门领取的文具总数和均值,从而实现双轴比较。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Tableau 聚合函数与非聚合函数](https://blog.csdn.net/weixin_59406566/article/details/128643504)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光莫不甘娜哪行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值