今天周一,吃过早饭后开始学习。首先开始牛客网的sql练习题。中等的开始练习。加油!!!
各种连接的说明 左 右 内 全 就跟交集并集那种差不多
创建表时的代码语句
CREATE TABLE actor (
actor_id SMALLINT ( 5 ) NOT NULL COMMENT '主键id',
first_name VARCHAR ( 45 ) NOT NULL COMMENT '名字',
last_name VARCHAR ( 45 ) NOT NULL COMMENT '姓氏',
last_update date NOT NULL COMMENT '日期',
PRIMARY KEY ( actor_id )
)
批量插入数据
# mysql中常用的三种插入数据的语句:
# insert into表示插入数据,数据库会检查主键,如果出现重复会报错;
# replace into表示插入替换数据,需求表中有PrimaryKey,
# 或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;
# insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据;
insert ignore into actor values("3","ED","CHASE","2006-02-15 12:34:33");
创建表
- 常规创建
create table if not exists 目标表 - 复制表格
create 目标表 like 来源表 - 将table1的部分拿来创建table2
create table if not exists actor_name
(
first_name varchar(45) not null,
last_name varchar(45) not null
)
select first_name,last_name
from actor
自己先不看创建表的语句,优先关注语法的查询。
有意思的一道题,查找字符串中逗号出现的次数。
select id,length(string)-length(replace(string,",","")) from strings;
字符串的函数 ,right,left 可以返回字符串中某位置的字符 ,左就是从左边开始,右就是从右边开始。
使用方法为 left(列名,数字),表示从第几个开始。
聚合函数group_concat(X,Y),其中X是要连接的字段,Y是连接时用的符号,可省略,默认为逗号。
此函数必须与GROUP BY配合使用。此题以dept_no作为分组,将每个分组中不同的emp_no用逗号连接起来(即可省略Y)。
答案:
SELECT dept_no,group_concat(emp_no) employees
FROM dept_emp GROUP BY dept_no
Sql 语句中 IN 和 EXISTS 的区别及应用_jcpp9527的博客-CSDN博客_exists语句
注意where子句常见错误之一:
where子句中不能使用聚合函数,聚合函数可以在select,having,order by之后出现。
where指定分组之前数据行的条件,having子句用来指定分组之后条件。
开始->from子句->where子句->group by子句->having子句->select子句->最终结果
MySQL DATE_FORMAT() 函数 | 菜鸟教程 (runoob.com)
中等难度的题目做完了,感觉偏重于窗口函数以及嵌套的查询。
round(数值,数字) 是数字保留几位小数的函数。
floor 函数的应用