sql练习

将 Excel 拼接为 SQL 脚本

ε祈祈猫儿з 提交于 2020-04-06 18:00:03
好像半年前,我就有写过将 Excel 数据, 逐条 或 批量 插入 mysql 数据库, 那时候正在建库嘛, 想着弄个脚本来批量刷新和处理. 工具当时用的 pandas, 这个, 强的一批的工具, 无敌强哦!. 批量导入用 DataFrame.to_sql() 一下子搞定, 课选择是 insert 还是 replace, 确实蛮方便的, 然后逐条就是 用 自己拼接 sql 的方式来一条条导入. Excel 批量导入Mysql(创建表-追加数据): https://www.cnblogs.com/chenjieyouge/p/11811784.html Excel 逐条导入Mysql(数据更新): https://www.cnblogs.com/chenjieyouge/p/11812126.html 这都是有控制权的方式下. 但现在我业务中, 我 没有执行查询权限 的时候, 我总不可能给相关的同事去发代码吧, 因此, 我通常的方式是将数据 拼接为一个 sql 脚本, 给相应同事去执行. 需求 将一个 Excel 文件拼接为 sql 脚本 (insert) 进数据库. 思路 就是获取表格的每行, 每列的值, 然后 insert into 表 values (值1, 值2, .....); 存为一个 .sql 的文件, 然后执行这个脚本即可. 不多哔哔, 直接贴上核心代码哦. 栗子

sql 强化练习 (七)

拟墨画扇 提交于 2020-04-05 20:21:22
继续 sql 练习, 不能停下来的哦, 通过这一系列的搬砖操作, 相信在日常业务的sql 应该是能达到相对清楚地写出来的, 尤其是我做数据分析这块, 感觉真的每天都要写才行, 之前都是用 Python 来轻松搞定, 但仔细一想, sql 才是最通用的哦, sql 熟练了, 我感觉, 数据分析的基础工作就已经完成一半了, 剩下的指标计算, 这些不就是简单的 加减乘除而已, 分分钟脚本批量处理它. 表关系 需求 查询 和 0001 号同学, 所学课程 完全相同的 其他同学的学号. 分析 先查出 0001 这个兄弟, 的所有课程 id; 然后查出 not in 这些 课程 id 的这些 学号; 还要完全相同, 则, group by s_id 后, 选课的数量还必须一致哦. 从 3 中 排除掉 2 中的 id 剩下的就是满足条件的啦 -- 1. 先看看 0001 这个兄弟选了哪些课程 select c_id from score where s_id = '0001'; +------+ | c_id | +------+ | 0001 | | 0002 | | 0003 | +------+ 3 rows in set (0.01 sec) 都给选上了. 即下一步, 要找的学生, 必须都同时选了 1,2,3号课程, 注意不能多哦 , 要完全相同. -- 2. 反向来看, 没有跟

存储过程系列之调试存储过程 SQL Server 2005

主宰稳场 提交于 2020-03-21 14:27:33
在数据库中直接调试 在数据库中直接调试是调试SQL Server 2005的 存储 过程的最简单的方法。 在Visual Stuido的IDE中你可以选择单步执行存储过程,然后就可以一条语句一条语句地单步执行了,同时你也可以检查和修改存储过程内的T-SQL变量和参数。本文结尾处提供下载的压缩包中包括一个SQL Server 2005 Express版本的Northwind数据库。我在其中添加了一个名为“DoThings”的存储过程,它有一个参数@CategoryID。这是一个没什么实用价值的存储过程,但是它有很多的T-SQL语句和变量,另外还有一个参数,这将使我们能更好地练习存储过程的调试。 在 服务器 资源管理器中右键单击“DoThings”存储过程,然后选择单步执行存储过程的选项。 (注意:SQL Server调试只有Team Systems和Professional版本的Visual Studio才支持。) 调试器启动并且执行存储过程。因为存储过程“DoThings”需要一个传入值给@CategoryID,所以会弹出一个对话框让我们提供该值。输入1后单击OK。 首先会执行第一条语句。你可以选择逐语句或逐过程进行调试(快捷键分别为F11和F10),也可以在监视窗口中添加参数和变量。 存储 过程调试期间的截屏如下图所示。左侧的黄色箭头指的是当前执行的语句。监视窗口中显示的是

SQL语句行列转换(附带数据库、表、视图操作)

人走茶凉 提交于 2020-03-20 06:52:57
本来只是想解决怎么把数据的行和列进行转换的,但最近觉得一些数据库SQL语句的操作,很久没用了,有点陌生。所以也就随笔记录一些简单但很基本的操作。 我的数据库是MSSQL2005. 第一部分主要的操作包含:数据库的创建、删除,表的增、删、改,表中数据的增、删、改、查,视图的操作。 1 --查询数据库是否存在 2 if exists ( select * from sysdatabases where [name]='TestDB') 3 print 'Yes, the DB exists' 4 else 5 print 'No, need a new one?' 6 7 --新建一个数据库 8 create database TestDB on 9 ( 10 name = 'TestData', 11 filename = 'G:\DBS\KeyTest.mdf', 12 size = 3, 13 filegrowth = 2 14 ) 15 log on 16 ( 17 name = 'TestLog', 18 filename = 'G:\DBS\KeyTest.ldf', 19 size = 3, 20 filegrowth = 10 21 ) 22 23 --drop database TestDB 24 25 use TestDB 26 go 27 28 --新建一个表

SQL中group by的用法

五迷三道 提交于 2020-03-19 12:45:33
练习练习,加深印象。 给出链接: http://www.cnblogs.com/rainman/archive/2013/05/01/3053703.html “Group By”:根据by指定的规则对数据进行分组,将一个“数据集”划分成 若干个 “小区域”,然后针对若干个“小区域”进行数据处理。 先给出一个自己练习的小例子: 试了几个,这个可以比较好地实现: 今天(2014-09-19)看了一下,上面的语句不能那样写,那样写会把别人的数据删掉,应该是一个select的查询语句。 比较简单: select * from #Stu where ID IN (select min(ID) from #Stu group by Name) 就可以了 现在按照上面链接中的步骤练习一下: 和order by一起用: 关于和Group by与select指定的字段限制,请仔细看链接的文章。 Where和Having的区别: Where: 分组前 过滤数据,不能包含聚合函数。 Having: 分组后 过滤数据(过滤出特定的组),经常包含聚合函数。 区别还是很明显的。 如果在group by后面使用where的话,会出现下面的错误: 有待总结。 来源: https://www.cnblogs.com/hshuai/p/3607087.html

sql实战练习

杀马特。学长 韩版系。学妹 提交于 2020-03-19 05:55:34
作者:mmggqq 链接:https://zhuanlan.zhihu.com/p/32137597 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 学生表 Student create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10)); insert into Student values('01' , '赵雷' , '1990-01-01' , '男'); insert into Student values('02' , '钱电' , '1990-12-21' , '男'); insert into Student values('03' , '孙风' , '1990-05-20' , '男'); insert into Student values('04' , '李云' , '1990-08-06' , '男'); insert into Student values('05' , '周梅' , '1991-12-01' , '女'); insert into Student values('06' , '吴兰' , '1992-03-01' , '女'); insert into Student values('07' ,

SQL 练习题50道

最后都变了- 提交于 2020-03-17 18:51:38
首先是建立练习使用各种表格(这里使用的是SQL server建立的): use school; -- 创建学生表 create table Student( Sno varchar(20), Sname varchar(20) not null, Ssex varchar(20) not null, Sbirthday datetime, Class varchar(20) ); -- 创建教师表 create table Teacher( Tno varchar(20), Tname varchar(20) not null, Tsex varchar(20) not null, Tbrithday datetime, Prof varchar(20), Depart varchar(20) not null ); -- 创建课程表 create table Course( Cno varchar(20), Cname varchar(20) not null, Tno varchar(20) not null, ); -- 创建成绩表 create table Score( Sno varchar(20) not null, Cno varchar(20) not null, -- 成绩 Degree Decimal ); --添加约束 --为学生表添加约束

SQL Server附加数据库出现错误5123的正确解决方法

ε祈祈猫儿з 提交于 2020-03-14 02:20:26
因为自己有一本基于SQL Server 2005的数据库教程,里边使用的 示例数据库 是AdventureWorks for SQL Server 2005,而我的机子上装的是SQL Server 2008,示例数据库是AdventureWorks for SQL Server 2008。起初我以为示例数据库AdventureWorks for SQL Server 200 5 与AdventureWorks for SQL Server 200 8 数据库结构应该差不多,可是在练习的过程中,我发现两个数据库中很多表的结构还是有很多不一样的地方。于是决定到微软下载中心将示例数据库AdventureWorks for SQL Server 2005下过来,附加到SQL Server 2008上,以便顺利进行练习。我以SQL Server 2008的超级管理员账户“ sa ”连接登录到实例SQLSERVER2008: 在附加示例数据库AdventureWorks for SQL Server 2005时,弹出了下图 这个错误: 仔细看了一下主要信息“ 尝试打开或创建物理文件......时,CREATE FILE遇到操作系统错误 5(拒绝访问。) ” ,一看就知道应当是对要附加的数据文件的操作权限不够。 按一般的思维习惯,我们会对操作权限不够的文件授予足够的操作权限。比如,有网友说“

牛客sql编程练习题目总结-01

帅比萌擦擦* 提交于 2020-03-10 17:07:10
查找最晚入职员工的所有信息 CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`)); LIMIT m,n : 表示从第m+1条开始,取n条数据; LIMIT n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写。 本题limit 0,1 表示从第(0+1)条数据开始,取一条数据,即取出最晚入职员工。 select * from employees where hire_date = (select max(hire_date) from employees) 来源: https://www.cnblogs.com/xlrjgzs/p/12456337.html

SQL练习1-CREAT/DROP/ALTER SQL与T-SQL之间的不同:

南笙酒味 提交于 2020-03-08 09:52:58
练习主要内容: 数据库系统概论(第五版)例3.1-例3.12 在进行练习之前先【新建查询】 【新建查询】以后输入命令【CREATE DATABASE SCHOOL】再点击【分析】(工具栏的对勾)【执行】,刷新以后可以看见创建的数据库 SCHOOL 接着【创建对象】WANG 按照上面的图片所示,即可创建用户 接着需要修改【可执行数据库】,将数据库改成刚刚创建的SCHOOL 然后我们就可以开始进行练习: 模式的定义和删除 在SQL中,模式定义句: CREATE SCHEMA<模式名>AUTHORIZATION <用户名> 如果没有指定<模式名>,那么<模式名>隐含为<用户名> 【例3.1】 为用户WANG定义一个学生-课程模式S-T CREATE SCHEMA"S-T" AUTHORIZATION WANG; 【例3.2】 CREATE SCHEMA AUTHORIZATION WANG; SQL server中。默认的用户dbo,在没有创建模式的情况下,默认的模式名为dbo,所以表名为dbo.*。 【例3.3】 为用户WANG 创建TEST,并且在其中定义TAB1. CREATE SCHEMA TEST AUTHORIZATION WANG CREATE TABLE TAB1( COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC