数据蛙第九期就业班 2020/7/23

MYSQL练习题

1、MySQL中的varchar和char有什么区别?

1、CHAR的长度是固定的,而VARCHAR的长度是可以变化的,比如,存储字符串“abc”,对于CHAR(10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR(10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度储存。

2、CHAR的效率比VARCHAR的效率稍高。

3、CHAR(10)若输入数据的字符小于10,则系统自动在其后添加空格来填满设定好的空间。若输入的数据过长,将会截掉其中超出部分。VARCHAR(10)数据类型的存储长度为实际数值长度。

2、MySQL中having后面可以使用别名吗?为什么?

SQL语句的语法顺序:

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> UNION -> ORDER BY

因此一般不能在having condition中使用select list中的alias。

但是mysql对此作了扩展。在mysql 5.7.5之前的版本,ONLY_FULL_GROUP_BY sql mode默认不开启。在5.7.5或之后的版本默认开启。

如果ONLY_FULL_GROUP_BY sql mode不开启,那么mysql对标准SQL的扩展可以生效:

1.允许在select list、having condition和order by list中使用没有出现在group by list中的字段。此时mysql会
随机选择没有出现在group by list中的字段的值。效果和使用ANY_VALUE()是相同的。
2.允许在having condition中使用select list中的alias

3、查找入职员工时间排名倒数第三的员工所有信息

建表:

CREATE TABLE `employees`
(`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(10) NOT NULL,
`last_name` varchar(10) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL);

插入数据:

insert into employees values(10001,'1955-01-21','Tom','Brant','M','1989-09-01');
insert into employees values(10002,'1955-01-21','Li','Brant','M','1989-09-02'),
(10003,'1955-01-21','Zhang','Brant','M','1989-09-03'),
(10004,'1955-01-21','Wang','Brant','M','1989-09-04'),
(10005,'1955-01-21','Zhao','Brant','M','1989-09-05'),
(10006,'1955-01-21','Zhou','Brant','M','1989-09-06');

查询语句:

select a.emp_no,a.birth_date,a.first_name,a.last_name,a.gender,a.hire_date
from
(select *,row_number() over(order by hire_date desc) as 'rank'
from employees limit 2,1)a;
捕获.PNG

PYTHON练习题

1、怎么对列表进行去重操作?

list1=[2,1,2,4,5,6,10,3,3,3,7]

输出示例:

[2, 1, 4, 5, 6, 10, 3, 7]

执行代码:

list1=[2,1,2,4,5,6,10,3,3,3,7]
list2=[]
for i in list1:
    if i not in list2:
        list2.append(i)
print(list2)

2、pandas的axis参数怎么理解?
axis=0、axis=index,指的是遍历每个index、行号,即在纵向上遍历每列,所以做sum()、mean()等运算时,是对每列数据做操作,而drop(index, axis=0),传入的参数指定了某一行号,所以会在纵向上遍历每列,去掉行号对应位置的数据。
axis=1、axis=columns,指的是遍历每个columns、列名,即在横向上遍历每行,所以做sum()、mean()等运算时,是对每行数据做操作,而drop(col, axis=1),传入的参数指定了某一列名,所以会在横向上遍历每行,去掉列名对应位置的数据。

你可能感兴趣的:(数据蛙第九期就业班 2020/7/23)