随笔分类 - SQL语句
摘要:1. date和datetime类型的区别 date是SQL Server 2008新引进的数据类型。它表示一个日期,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间。 dateTime 日期和时间部分,可以表示的日期范围从公元1753年1月1日
阅读全文
摘要:1. 概述 在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性。 sqlserver: oracle: mysql: 注意:SQL Server中没有concat函数(SQL Server 2012已新增concat函数)。
阅读全文
摘要:1.简介不相关子查询:子查询的查询条件不依赖于父查询的称为不相关子查询。相关子查询:子查询的查询条件依赖于外层父查询的某个属性值的称为相关子查询,带EXISTS 的子查询就是相关子查询EXISTS表示存在量词:带有EXISTS的子查询不返回任何记录的数据,只返回逻辑值“True”或“False”2....
阅读全文
摘要:1. 概述触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。 所以触发器可以用来实现对表实施复杂的完整性约束。2. 触发器的分类SQL Server2000提供了两种触发器:“Instead of” 和“After” 触发器。一个表或视图的每一...
阅读全文
摘要:表结构功能用表B的数据(mc列)更新表A的mc列SQL Serverupdate A SET A.mc = b.mc FROM A ,B WHERE A.bmbh = B.bmbh and A.xmbh = B.xmbh;Accessupdate A, B set A.mc = B.mc where A.bmbh = B.bmbh and A.xmbh = B.xmbh;或update A INNER JOIN B ON A.bmbh = B.bmbh AND A.xmbh = B.xmbh SET A.mc = B.mc;
阅读全文
摘要:以下所有例子均Studnet表为例:1. len():计算字符串长度len()用来计算字符串的长度,每个中文汉字或英文字母都为一个长度select sname, len(sname) from student2. lower()、upper():字符串转换为大、小写lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写select lower('I AM A STUDENT !')select upper('i am a student !')3. ltrim()、rtrim():截去字符串左、右侧空格ltrim():用来将一个字
阅读全文
摘要:1、概述名词笛卡尔积、主键、外键数据完整性实体完整性:主属性不能为空值,例如选课表中学号和课程号不能为空参照完整性:表中的外键取值为空或参照表中的主键用户定义完整性:取值范围或非空限制,例如:性别(男女),年龄(0-130) 表连接自然连接:与等值连接(a.id=b.id)相比,连接后的表只有一列id,而不是两列(a.id和b.id)。半连接:与等值连接(a.id=b.id)相比,连接后的表只有A表的列,被B表“多次匹配”列会显示为一行。左外连接:left join右外连接:right join全外连接:full join全内连接:inner joinSQL语言的构成DDL语言:数据定义,定.
阅读全文
摘要:在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。 表A: 表B: 1.作用于单列 select distinct name from A 执行后结果如下: 2.作用于多列 示例2.1 select dis
阅读全文
摘要:示例昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据 :类别名称AAA企业1AAA企业2AAA企业3BBB企业4BBB企业5我想把这个表变成如下格式:类别名称AAA企业1,企业2,企业3BBB企业...
阅读全文
摘要:1、概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。 2、原始表 3、简单Group By 示例1 select 类别, sum(数量) as 数量之和 from A gr
阅读全文
摘要:1、表结构表A 表B2、Left Join示例:2.1Select * From A left join B on A.aid = B.bid;left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。 换句话说,左表A的记录将会全部表示出来,而右表B只会显示符合搜索条件的记录(例子中为: A.aid = B.bid),B表记录不足的地方均为NULL.A表所有记录都会显示,A表中没有被匹配的行(如aid=5、6的行)相应内容则为NULL。返回的记录数一定大于A表的记录数,如A表中aid=7行被B表匹配了3次(...
阅读全文
摘要:存储过程 1、存储过程是事先编好的、存储在数据库中的程序,这些程序用来完成对数据库的指定操作。 2、系统存储过程: SQL Server本身提供了一些存储过程,用于管理有关数据库和用户的信息。 用户存储过程: 用户也可以编写自己的存储过程,并把它存放在数据库中,供客户端调用。 3、这样安排的主要目的就是要充分发挥数据库服务器的功能,尽量减少网络上的堵塞。 4、系统存储过程 概念: 它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。 系统存储过程可以在任意一个数据库中执行。创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。 .
阅读全文
摘要:自定义函数 内联表值函数:返回值为可更新表。函数内包含单个select语句且该语句可更新,则返回的表也可以更新。 多语句表值函数:返回值为不可更新表。函数内包含多个select语句且该语句可更新,则返回的表不可更新。 标量函数:返回值为标量值。 自定义函数由一个或者多个T-SQL语句构成的子程序,用于封装用户代码 定义格式: CREATE FUNCTION 函数名(参数列表) RETURNS数据类型---定义返回值类型 AS BEGIN 变量函数 create function max2( @par1 real , @par2 real) returns real as begin decla
阅读全文
摘要:一、T-SQL基础 1、注释 一种是ANSI标准的注释符 "--”,它用于单行注释;另一种是与C语言相同的程序注释符号,即"/* */”。 2、变量 Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。 局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。 局部变量被引用时要在其名称前加上标志“@”,而且必须先用DECLARE命令定义后才可以使用。 定义格式:declare @local_variable data_type 例如: declare @sage int,@sname char(10)
阅读全文
摘要:一、定义基本表 CREATE TABLE 格式: CREATE TABLE 表名 (列名类型(长度) [NOT NULL] [DEFAULT {常量|系统变量|NULL}] [列约束],……) [PRIMARY KEY (列名,…)] [FOREIGN KEY (列名,…) REFERENCES 表名(列名,…)] [CHECK 条件];create table person( Pno char(6) not null primary key, Pname varchar(10) not null, Sex char(2) not null, Birthday datetime not nu.
阅读全文
摘要:一、插入操作 INSERT 1、插入单个元组 格式:INSERT INTO 表名[(列名,…)] VALUES (列值,…); INSERT INTO student VALUES('2003001' ,'Rain Man',18,'男','电商','管理学院','徐州') INSERT INTO SC (Sno,Cno) VALUES ('2003001' , 'C003'); 2、插入子查询的结果: 格式:INSERT INTO 表名[(列名,…)] (子查询);
阅读全文
摘要:一、视图的概念视图是一个虚表;数据库中只存放视图的定义;视图对应的数据仍存放在原来的表中;随着表中数据的变化,视图的数据随之改变。对视图的查询与基本表一样;对视图的更新将受到一定的限制。二、视图分类1.行列子集视图:从单个基本表导出,保留基本表的码,但去掉其它的某些列和部分行的视图。2.表达式视图:带虚拟列的视图。3.分组视图:子查询目标表带有组函数或子查询带有GROUP BY子句的视图。三、定义与修改视图 建立视图,其一般格式为: CREATE VIEW [([,]...)] AS [WITH CHECK OPTION] 其中子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDE.
阅读全文
摘要:SQL的集合操作 属性个数必须一致 对应的类型必须一致 属性名无关 最终结果集采用第一个结果的属性名 缺省为自动去除重复元组 除非显式说明ALL Order By放在整个语句的最后 并:查询计算机系的学生或者年龄不大于19岁的学生,并按年龄倒排序。 SELECT * FROM student WHERE Sdept=‘CS’ UNION SELECT * FROM student WHERE AGE<=19 ORDER BY AGE DESC 交:查询计算机系的学生并且年龄不大于岁19的学生,并按年龄倒排序。 (SELECT * FROM student WHERE Sdept=‘CS’
阅读全文
摘要:连接查询 多表连接查询、单表连接查询(自连接)、外连接查询、复合条件连接查询. 示例数据表: 学生信息表Student; 课程信息表Course; 选课情况表SC,教师信息表teacher 1--- 单表连接(自连接) 用表别名把一个表定义为两个不同的表进行连接。 2--- 左连接、右连接、全外连接 求各部门名及职工名,要求输出无职工的部门(职工以空值出现) SELECT DNAME,TNAME FROM department D,teacher T WHERE D.DNO = T.DNO(*);(有*则,别表示该列可以为空 Left join ) 求各部门名及职工名,要求输出无职工的部门..
阅读全文
摘要:一、查询语句格式 SELECT [ALL|DISTINCT] [表名.]{*|列名|表达式[AS 新列名]} [INTO :主变量[,:主变量]…] FROM表名[表别名], … [WHERE条件表达式|子查询] [GROUPBY 列名, … [HAVING分组表达式]] [{UNION|INTERSECT |EXCEPT}SELECT…FROM…] [ORDER BY 列名|列序号[ASC|DESC], …];二、单表查询 Where 子句——运算符 比较:、>=、=、、not + ~ 确定范围: BetweenAandB、Not Between A and B 确定集合:IN、NOT
阅读全文