
SQL
景上
领悟
展开
-
ERROR 1067 (42000): Invalid default value for 'add_time'
这个问题在这篇文章里有解决方法:(http://blog.youkuaiyun.com/xionglang7/article/details/44499307)创建都不行,所以猜测应该是系统中某个参数的设置问题。看来关于date和time相关的参数没有什么异常。 联想到限制能限制的sql的只有sql_mode。果然:NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数限制时间不能为0. roo转载 2017-06-20 18:07:35 · 6553 阅读 · 0 评论 -
SQL SERVER 2012 左外关联 left outer join
学生表student和班级表class:查询所有学生的姓名和其所在的班级:select * from student,class where student.classid=class.classid通过上面的查询语句,发现学生dd没有显示,此时可以使用左外关联查询:select * from student as s left outer join class as c on s.classid=原创 2016-06-27 14:30:51 · 973 阅读 · 0 评论 -
SQL SERVER 删除前先判断指定的表或者存储过程是否存在
1、创建存储过程:CREATE PROCEDURE proc_pr ---将create修改成alter可以修改存储过程;ASBEGIN IF EXISTS(SELECT * FROM sysobjects WHERE TYPE='U' AND NAME='te') BEGIN PRINT '存在要删除的表te'; DROP TABLE te; PRINT原创 2016-06-05 19:59:56 · 7867 阅读 · 0 评论 -
SQL SERVER 动态查询
DECLARE @id INT,@sql VARCHAR(3333);--声明两个变量;SELECT @id=3; --给变量@id赋值;SELECT @sql='SELECT f_id,f_name FROM fruits WHERE f_id= 'EXEC(@sql + @id);---等同于“SELECT f_id,f_name FROM fru原创 2016-05-23 21:56:38 · 495 阅读 · 0 评论 -
SQL SERVER 排序函数ROW_NUMBER、RANK、DENSE_RANK、NTILE
1、ROW_NUMBER()函数:根据f_id升序排序(ASC)后的记录,为每条记录增添递增的顺序数值序号(1、2、3……),即使f_id的值相同也递增;SELECT ROW_NUMBER() OVER (ORDER BY f_name ASC) AS ROWID,f_name,f_id FROM fruits;SELECT ROW_NUMBER() OVER (ORDER BY CASE WHE原创 2016-05-23 21:48:18 · 645 阅读 · 0 评论 -
SQL SERVER 自连接、外连接
在数据库test2中新建表fruits、suppliers,并插入几组数据:USE test2GOBEGIN TRY DROP TABLE fruits END TRY BEGIN CATCH END CATCH;BEGIN TRY DROP TABLE suppliers END TRY BEGIN CATCH END CATCH;CREATE TABLE fruits( f_id原创 2016-05-23 21:06:10 · 734 阅读 · 0 评论 -
SQL SERVER 建表table之前,检查是否有同名的表存在
在数据库test2中新建表FRUITS、SUPPLIERS,在新建之前,如果已经有同名的表存在则将其删除;USE test2GOBEGIN TRY DROP TABLE FRUITS END TRY BEGIN CATCH END CATCH;BEGIN TRY DROP TABLE SUPPLIERS END TRY BEGIN CATCH END CATCH;CREATE TABLE F原创 2016-05-23 20:11:45 · 3094 阅读 · 0 评论 -
SQL SERVER 自定义函数
自定义方法:CREATE FUNCTION myFunction(@x INT) RETURNS INT --修改函数时,可以将create修改为alterASBEGIN DECLARE @y INT; SET @y=2*@x; RETURN @yEND调用方法:SELECT dbo.myFunction(2) AS 结果;结果 4原创 2016-06-05 18:30:04 · 367 阅读 · 0 评论 -
SQL SERVER 用户名、密码登入判断
1、创建users表:CREATE TABLE users(id INT PRIMARY KEY not null IDENTITY,name VARCHAR(22),pwd VARCHAR(33))2、插入几条数据:INSERT INTO users VALUES('a','aaaaa'),('b','bbbbb'),('c','ccccc');3、创建存储过程:CREATE PROCE原创 2016-06-05 16:20:32 · 5569 阅读 · 0 评论 -
SQL SERVER 求阶乘之和
求阶乘之和:CREATE PROCEDURE proc_jc@num INTASBEGIN DECLARE @cj INT,@sum INT,@i INT; SELECT @cj=1,@sum=0,@i=1; WHILE @i<=@num BEGIN SET @cj=@cj*@i; SET @sum=@sum+@cj; SET @i原创 2016-06-05 10:26:59 · 5371 阅读 · 0 评论 -
SQL SERVER 存储过程 获取三个数中的最大值
获取三个数中的最大值:CREATE PROCEDURE proc_max@a INT,@b INT,@c INTASBEGIN DECLARE @max INT; IF @a>@b SET @max=@a; ELSE SET @max=@b; IF @c>@max SET @max=@c; PRINT '三个数中最原创 2016-06-05 10:10:10 · 10746 阅读 · 0 评论 -
SQL Server 2012 Merge关键字
SQL Server中的Merge关键字简介 Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进转载 2016-06-27 17:08:36 · 940 阅读 · 0 评论 -
SQL SERVER 利用字符串函数输出菱形图案
declare @count int;set @count=1;while @count<6begin print space(5-@count)+replicate('#',@count*2-1); set @count=@count+1;endwhile @count>0begin print space(7-@count)+replicate('#',@count*2-原创 2016-06-06 20:52:08 · 1575 阅读 · 0 评论 -
SQL SERVER 2012实现数据的完整性
ALTER TABLE student --指定表student的列id为主键ADD CONSTRAINT PK_id --主键的名称;PRIMARY KEY CLUSTERED (id) --(id不为空)指明clustered关键字时,插入的数据按id大小排序,否则(或者是NONCLUSTERED)按录入顺序排序;ALTER TABLE student DROP CONSTR原创 2016-07-10 21:56:59 · 2519 阅读 · 0 评论 -
NetBeans 的UTF-8乱码问题
NetBeans 的UTF-8乱码问题 1.找到你的Netbeans安装目录下的etc文件夹下的netbeans.conf.文件,如d:/Program Files/NetBeans 6.0 M9/etc/netbeans.conf; 2.用NetBeans打开netbeans.conf ; 3.找到netbeans_default_options这一句; 4.在最后面加上一个空格,再加入-原创 2017-06-20 16:55:44 · 1109 阅读 · 0 评论 -
实用SQL语句大全
一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server — 创建 备份数据的 device USE master EXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_1.转载 2016-09-20 21:26:53 · 543 阅读 · 0 评论 -
SQL SERVER 2012 显示指定范围的数据
按流程单号升序排序后,从第11条数据开始截取,截取10条数据;select * from ofc order by 流程单号 offset 11 row fetch next 10 rows only原创 2016-06-21 13:28:44 · 459 阅读 · 0 评论 -
sql server 取每一个学生多个科目当中分数最高的记录……
同表当中,取每一个学生多个科目当中分数最高的记录(name,sub,scores)WITH tmp AS(SELECT stuid,sub,scores,ROW_NUMBER() OVER (PARTITION BY stuid ORDER BY scores DESC) as num FROM score )SELECT * FROM tmp WHERE num<=1同表当中,取每一个科原创 2016-07-17 21:57:15 · 5897 阅读 · 0 评论 -
程序员必备SQL语句优化技巧
程序员必备SQL语句优化技巧 2016-06-15 程序员内参 1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id f转载 2016-06-19 21:46:09 · 512 阅读 · 0 评论 -
SQL SERVER 2012 数据汇总,年份在左边一列,月份在顶部一行
报表数据汇总,年份在左边一列,月份在顶部一行SELECT Privotorders.* FROM (SELECT YEAR(OrderDate) AS OrderYear, FORMAT(OrderDate,'MMMM','en-US') AS OrderMonth,ExtendedAmount FROM FactInternetSales) AS Privotorders PIVOT原创 2016-07-16 13:01:53 · 1068 阅读 · 0 评论 -
sql Server 将金额转换成分、角、元、十……
将金额转换成分、角、元、十……字段类型 UPDATE person SET 分=ISNULL(substring(cast(金额 AS VARCHAR),LEN(金额),1),''''), 角=ISNULL(substring(cast(金额 AS VARCHAR),LEN(金额)-1,1),''''), 元=ISNULL(su原创 2016-07-04 21:00:18 · 2703 阅读 · 0 评论 -
sql server 删除重复的数据
1–删除name,sex重复的数据,只留下一条数据;select * into #lin1 from student --先将student的数据插入临时表#lin1中;select min(id) as iidd into #lin2 from student group by name,sex --根据name,sex分组,并获取每组中最小的id;select * from stud原创 2016-07-11 20:40:09 · 607 阅读 · 0 评论 -
SQL SERVER 字符串函数
1、ASCII()函数:返回字符串表达式中最左边字符的ASCII代码值;SELECT ASCII('S'),ASCII('s'),ASCII('SQL'),ASCII(1),ASCII(123),ASCII('1')2、CHAR()函数:将整数类型的ASCII值转换为相对应的字符,该整数介于0—255之间,否则返回NULL;SELECT CHAR(0),CHAR(115),CHAR(300);3、L原创 2016-05-21 12:08:53 · 546 阅读 · 0 评论 -
文章标题
自定义排序: 若sex为空,则将数据排在最后面;select * from student order by case ISNULL(SEX,'') when '' then 2 else 1 end原创 2016-07-11 11:21:47 · 282 阅读 · 0 评论 -
SQL SERVER 存储过程 显示26个小写字母及其对应的ASCII码值
显示26个小写字母及其对应的ASCII码值CREATE PROCEDURE proc_sqlASBEGIN DECLARE @i INT; SET @i=0; WHILE @i<26 BEGIN PRINT CHAR(ASCII('a')+@I)+'的ASCII码值是'+CAST(ASCII('a')+@i AS VARCHAR(50)); SET @i=@原创 2016-06-05 09:44:45 · 3883 阅读 · 1 评论 -
sql server 修改字段名,查看指定表是否存在
1、将fruits表下字段f_id修改为字段id:exec sp_rename 'fruits.[f_id]','id','column';2、查看表fruits是否存在:select count(*) from sysobjects where type='U' and name='fruits';原创 2016-06-04 20:44:41 · 310 阅读 · 0 评论 -
sql server 修改表名
1、sql server 修改表名:exec sp_rename 'fruits', 'fruit';2、mysql修改表名:alter table fruitsrename to fruit;原创 2016-06-04 20:28:53 · 5667 阅读 · 0 评论 -
SQL 自定义函数FUNCTION
自定义函数1、标量函数:CREATE FUNCTION GetNameById2(@js_ID INT)RETURNS VARCHAR(32) ---------------------定义返回的数据类型;ASBEGIN DECLARE @js_name VARCHAR(32); --------声明一个局部变量; SELECT @js_name=(SELECT f_name FR原创 2016-05-28 08:48:39 · 660 阅读 · 0 评论 -
SQL 创建存储过程PROCEDURE
1、创建存储过程:USE test2GOCREATE PROCEDURE FruitProce -----查看表fruits的存储过程;AS SELECT * FROM fruits;GO--USE test2--GOCREATE PROCEDURE CountProce -------获取表fruits的记录数;AS SELECT COUNT(*) FROM fruits;原创 2016-05-28 07:53:55 · 873 阅读 · 0 评论 -
SQL 重命名表、字段、存储过程名sp_rename
EXEC sp_rename 'CountProce','CountProce1'; ------重命名存储过程名;EXEC sp_rename 'fruits.f_name','f_names','COLUMN';--重命名字段名;EXEC sp_rename 'suppliers','supplier'; -----------重命名表名;原创 2016-05-28 08:13:40 · 7662 阅读 · 0 评论 -
SQL 游标cursor的运用
游标的运用 1、使用游标变量:USE test2GODECLARE @VarCursor cursor; ------声明一个游标变量;DECLARE cursor_fruit CURSOR FOR ---声明游标;SELECT f_name,f_price FROM fruits;--给游标赋值;OPEN cursor_fruit; ----------------打开游标;S原创 2016-05-27 22:25:13 · 687 阅读 · 0 评论 -
SQL 游标cursor
游标的概念:游标是一种处理数据的方法,它可以指向表中的单一记录,比where语句更加灵活高效,主要用于存储过程、触发器和Transact-SQL脚本中,提供在结果集中 向前或向后浏览数据的功能;游标的优点: 1、对结果集中的每一行记录执行相同或不同的操作,而非对整个集合执行同一个操作; 2、可以对游标位置在表中所在的行,进行删除和更新的操作; 3、游标作为数据库管理系统和应原创 2016-05-27 20:28:11 · 407 阅读 · 0 评论 -
SQL SERVER 查询表的字段名、数据类型和最大长度
查询表的字段名、数据类型和最大长度: USE test2 --数据库test2,表fruits; GO SELECT syscolumns.name AS 字段名,systypes.name AS 数据类型,syscolumns.length AS 长度 FROM syscolumns INNER JOIN systypes ON systypes.xtype=syscolumns.xt原创 2016-05-27 19:40:07 · 12313 阅读 · 0 评论 -
SQL SERVER 表和字段的创建、删除
1–在数据库test2中创建表person;USE test2GOCREATE TABLE person( id INT PRIMARY KEY, --数据表主键 FirstName VARCHAR(50) NOT NULL UNIQUE, --不为空,唯一性约束 LastName VARCHAR(100), Birthday DATET原创 2016-05-13 13:41:58 · 372 阅读 · 0 评论 -
SQL SERVER 使用存储过程创建、删除用户定义数据类型
–使用存储过程创建用户定义数据类型 sp_addtype SchoolAddress,’varchar(256)’, ‘not null’–使用存储过程sp_droptype来删除用户定义数据类型 sp_droptype aaa (数据库正在使用的用户定义数据类型不能删除)原创 2016-05-13 11:17:04 · 1556 阅读 · 0 评论 -
sql server 需要命名的对象
sql server中的所有对象基本都需要命名(行不是真正的对象):Stored procedures(存储过程) Tables(表) Columns(列) Views(视图) Rules(规则) Constraints(约束) Defaults(默认) indexes(索引) filegroups(文件组) triggers(触发器) databases(数据库) serve原创 2016-05-12 20:57:50 · 449 阅读 · 0 评论 -
SQL SERVER getdate获取系统当前时间
使用convert函数对数据类型进行转换:原创 2016-05-12 20:11:47 · 1548 阅读 · 0 评论 -
SQL SERVER 全局变量
全局变量 全局变量是由服务器级定义,而不是由用户的程序定义,并且不能修改。其作用范围是任何程序均可以随时调用,引用全局变量时必须以标记符“@@”开头。在程序中,我们可以通过全局变量来测试系统的设定值或者是T_SQL命令执行后的状态值,SQL Server 2012中包含的全局变量: 1、@@CONNECTION:无论连接是成功还是失败,都会返回SQL SERVER自上次启动以来尝试的连接数;转载 2016-05-18 22:47:01 · 4285 阅读 · 0 评论 -
SQL SERVER 局部变量
局部变量: 以“@”开头的标识符表示变量(局部变量),该变量必须先用DECLARE命令声明后才能使用:DECLARE @js_age int;DECLARE @name varchar(32), @address varchar(64);使用DECLARE命令并创建局部变量后,初始值为NULL,可以使用SELECT或SET命令这只局部变量的值, 示例1:声明、赋值、输出:DECLARE @js原创 2016-05-18 22:46:10 · 6409 阅读 · 0 评论 -
SQL 分组排序group by
分组排序group by原创 2016-06-01 00:12:37 · 483 阅读 · 0 评论