sql语言

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记

跟風遠走 提交于 2020-01-25 14:43:26
一、SQL Server体系结构 1.1 数据库的物理布局 数据库在物理上由数据文件和事务日志文件组成,每个数据库必须至少有一个数据文件和一个日志文件。 (1)数据文件用于保存数据库对象数据。数据库必须至少有一个主文件组(Primary),而用户定义的文件组则是可选的。Primary文件组包括 主数据文件(.mdf),以及数据库的系统目录(catalog)。可以选择性地为Primary增加多个辅助数据文件(.ndf)。用户定义的文件组只能包含辅助数据文件。 (2)日志文件则用于保存SQL Server为了维护事务而需要的信息。虽然SQL Server可以同时写多个数据文件,但同一时刻只能以顺序方式写一个日志文件。 .mdf、.ldf和.ndf .mdf代表Master Data File,.ldf代表Log Data File,而.ndf代表Not Master Data File(非主数据文件) 1.2 架构(Schema)和对象  一个数据库包含多个架构,而每个架构又包括多个对象。可以将架构看作是各种对象的 容器 ,这些对象可以是表(table)、视图(view)、存储过程(stored procedure)等等。  此外,架构也是一个命名空间,用作对象名称的前缀。例如,架设在架构Sales中有一个Orders表,架构限定的对象名称是Sales.Orders

mybatis 第一个项目

谁说我不能喝 提交于 2020-01-25 01:21:01
首先先了解一下mybatis的概念和架构 概念 先了解ORM(Object/Relational Mapping),即对象关系映射,它用来完成面向对象编程语言到关系数据库的映射。简单来说ORM的作用就是将持久化对象的增删改查操作转换成对关系数据库的操作。 ORM的基本映射关系: 数据表映射 数据表的行(一行单表一个数据)映射对象(实例) 数据表的列(字段)映射对象的属性 mybatis本来是apache的开源项目ibatis,后来移植到google code,并更名为现在的名字mybatis。 mybatis的优点: 支持定制化SQL,存储过程,以及高级映射。 避免JDBC代码,以及配置。 对结果集进行封装。 可以使用注解,将接口和java中的pojo映射成数据库中的记录。 mybatis的思想:将程序中大量的sql语句抽离出来,在配置文件中配置,以实现sql的灵活。 mybatis并不是一个完成的ORM框架,他可以通过编写sql,使得访问数据库更加灵活。准确的说是半自动化的ORM框架,是一种sql mapping框架。 架构 mybatis的架构分为三层: 接口层:提供给开发人员的API接口,通过这些API来操作数据库。 数据处理层:完成一次数据库请求,只要的流程是sql查找、sql解析、sql执行,以及对结果集的处理。 基础支撑层:负责最底层的东西,也是公用的东西,包括连接管理

函数之sql语句

女生的网名这么多〃 提交于 2020-01-25 01:11:17
1 函数 1.1 函数 函数一般是在数据上执行的,它给数据的转换和处理提供了方便。只是将取出的数据进行处理,不会改变数据库中的值。 函数 根据处理的数据分为单行函数和聚合函数( 组 函数) 组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的 having 子句 单行函数对单个数值进行操作,并返回一个值。 dual 是 一个系统表。注意 用于 测试。 1.2 字符 相关 -- dual用于测试 select * from dual; -- 1.字符串连接 select concat('aa','12') from dual; select 'aa'||'12' from dual; -- 2.首字母大写 select initcap('abc') from dual; --- 把大写转化小写 select lower('ABc') from dual; select upper('abc') from dual; -- 把所有员工的姓名小写输出 select lower(e.ename),e.empno from emp e -- 3.填充字符lpad/rpad select lpad('sxt',5,'*') from dual; select rpad('sxt',5,'*') from dual; -- 4.去掉空白字符

HTML5 Web SQL

岁酱吖の 提交于 2020-01-24 22:52:03
最早的在客户端存储数据用的是cookie,cookie主要是用来保存用户的状态,并不适合用于保存客户端的本地数据。有以下几个原因:每次请求服务器的时候都会增加不必要的流量消耗,因为每次请求服务器都会将cookie发送至服务器;cookie存储数据的规则,并不那么好用,结构不也够清晰;cookie的存储容量极小,每个cookie的长度不能超过4kb,超过的话会截掉超出大小的最早存储的数据。 后来又出现了localStorage和sessionStorage。localStorage:永久存储,无论多久再进入页面都能获取到存储的数据;sessionStorage:临时存储,当关闭页面的时候会自动清除保存的数据。实际开发中这两个用的最多,但是存储结构依然不够清晰,查询本地存储的数据依然过于简单。 HTML5中新增了Web Sql本地数据库技术。Web Sql数据库API实际上不是HTML5规范的组成部分,它是一个独立的规范,可以使用与sql语言基本一致的语法做到数据库的增删改查。 Safari, Chrome 和 Opera 浏览器支持Web Sql。 判断浏览器是否支持Web SQL: if (window.openDatabase) { // 操作 web SQL } else { alert('当前浏览器不支持 webSQL !!!'); } 打开数据库: openDatabase

SQL语句构建器类

放肆的年华 提交于 2020-01-24 20:43:45
问题 Java程序员面对的最痛苦的事情之一就是在Java代码中嵌入SQL语句。这么来做通常是由于SQL语句需要动态来生成-否则可以将它们放到外部文件或者存储过程中。正如你已经看到的那样,MyBatis在它的XML映射特性中有一个强大的动态SQL生成方案。但有时在Java代码内部创建SQL语句也是必要的。此时,MyBatis有另外一个特性可以帮到你,在减少典型的加号,引号,新行,格式化问题和嵌入条件来处理多余的逗号或 AND 连接词之前。事实上,在Java代码中来动态生成SQL代码就是一场噩梦。例如: String sql = "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FULL_NAME, " "P.LAST_NAME,P.CREATED_ON, P.UPDATED_ON " + "FROM PERSON P, ACCOUNT A " + "INNER JOIN DEPARTMENT D on D.ID = P.DEPARTMENT_ID " + "INNER JOIN COMPANY C on D.COMPANY_ID = C.ID " + "WHERE (P.ID = A.ID AND P.FIRST_NAME like ?) " + "OR (P.LAST_NAME like ?) " + "GROUP BY P.ID " +

SQL SERVER 数据库设计与实现 1

旧城冷巷雨未停 提交于 2020-01-24 15:30:45
   第一章(数据库的设计) 一、数据   数据是对客观的一种描述,数据是指描述事物的符号记录 二、数据库管理系统   数据库管理系统是数据库系统的核心,是为数据库的建立、使用和维护而配置的软件 三、数据的冗余   同一数据反复存放   问题:浪费存储空间、更新数据容易出错。 四、数据不一致性    数据不一致性是指同一数据在不同的地方有不同的取值 五、数据库(DataBase)    指长期存储在计算机内有组织、可共享的数据集合。 数据库的系统模型   一、层次型数据库   二、网状型数据库   三、关系型数据库     1、关系名 通常说的表名     2、元组 在数据库中经常被称为记录      3、属性 在数据库中经常被称为字段     4、域 属性的取值范围,数据库中某一列的取值限制     5、键 由一个或多个列组成     6、关系模式 只对关系的描述   四、面向对象型数据库 数据库概念模型   一、信息实体的概念     1、实体 用长方形表示 一般是名词     2、属性 用椭圆表示 一般是名词     3、关系 用菱形表示 一般是动词     4、键(Key) 主键、外键     5、实体型(Entity Type)        具有相同属性的实体必然具有共同的特征和性质     6、实体集(Entity Set)        同类型实体的集合   二

SQL Server 2008 geometry 数据类型

风格不统一 提交于 2020-01-24 08:31:16
摘自SQL Server 2008帮助 平面空间数据类型 geometry 是作为 SQL Server 中的公共语言进行时 (CLR) 数据类型实现的。此类型表示欧几里得(平面)坐标系中的数据。 注册 geometry 类型 geometry 类型已进行预定义,并可在每个数据库中使用。您可以创建 geometry 类型的表列并对 geometry 数据进行操作,就像使用其他 CLR 类型一样。 示例 以下两个示例显示了如何添加和查询几何图形数据。第一个示例创建了带有标识列和 geometry 列 GeomCol1 的表。第三列将 geometry 列呈现为其开放地理空间联盟 (OGC) 熟知文本 (WKT) 表示形式,并使用 STAsText() 方法。接下来将插入两行:一行包含 geometry 类型的 LineString 实例,一行包含 Polygon 实例。 ALTER PROCEDURE [dbo].[Spatialpro] AS BEGIN if object_id('dbo.test','u') is null CREATE TABLE test(id INT IDENTITY(1,1),Geocol1 geometry,Geocol2 as Geocol1.STAsText()); insert into test(Geocol1)values(geometry:

oracle中处理日期大全

限于喜欢 提交于 2020-01-24 08:15:14
oracle自带的函数很多很好用。   24小时格式下时间范围为: 0:00:00 - 23:59:59....   12小时格式下时间范围为: 1:00:00 - 12:59:59 ....   1.日期和字符转换函数用法(to_date,to_char)   2.select to_char( to_date(222,'J'),'Jsp') from dual   显示Two Hundred Twenty-Two   3.求某天是星期几 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; 星期一 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; monday   设置日期语言 ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';   也可以这样 TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')   4.两个日期间的天数 select floor(sysdate - to_date('20020405','yyyymmdd'

通过url后面的参数进行sql注入

£可爱£侵袭症+ 提交于 2020-01-23 16:15:42
通过url后面的参数进行sql注入,也是攻击者经常使用 伎俩,主要是利用了程序员使用了root帐户连接数据库和动态拼接sql指令的弊端。 看下面的例子 如果程序使用以下的代码实现上面的功能,无疑给攻击者开放了大门。 连接数据库:conn.php <?php $mysqli = new mysqli('localhost','root','root','demo'); if($mysqli->connect_errno){ printf("连接数据库失败: %s\n", $mysqli->connect_error); exit(); } $mysqli->query('set names utf8'); 连接数据库千万不要使用root帐户,或者使用一个超级权限的帐户,去连接数据库。 上面代码已经给攻击者预留了可乘之机 显示学生列表 student.php <?php include 'conn.php'; $condition = ''; if(isset($_GET['no'])){ $no = $_GET['no']; if(!empty($no)){ $condition = "where no = $no"; } } $sql = "select no,name,sex from student $condition"; //echo $sql; //die;

SQL Server 2005中使用DDL触发器监控数据库变化

。_饼干妹妹 提交于 2020-01-23 13:18:35
添加,删除或修改数据库的对象,一旦误操作,可能会导致大麻烦,需要一个数据库管理员或开发人员对相关可能受影响的实体进行代码的重写。   为了在数据库结构发生变动而出现问题时,能够跟踪问题,定位问题的根源,我们可以利用DDL触发器来记录类似“用户建立表”这种变化的操作,这样可以大大减轻跟踪和定位数据库模式的变化的繁琐程度。    1、DDL触发器介绍   DDL 触发器是一种特殊的触发器,它在响应数据定义语言 (DDL) 语句时触发。它们可以用于在数据库中执行管理任务,例如,审核以及规范数据库操作。   使用 DDL 触发器,可以达到以下几种目的:    要防止对数据库架构进行某些更改。   希望数据库中发生某种情况以响应数据库架构中的更改。   要记录数据库架构中的更改或事件。   与标准的DML触发器一样,DDL 触发器在响应事件时执行存储过程。 但与标准的DML触发器不同的是,它们并不在响应对表或视图的 UPDATE、INSERT 或 DELETE 语句时执行存储过程。 它们主要在响应数据定义语言 (DDL) 语句执行存储过程。 这些语句包括 CREATE、ALTER、DROP、GRANT、DENY、REVOKE 和 UPDATE STATISTICS 等语句。 执行 DDL 式操作的系统存储过程也可以激发 DDL 触发器。    2、如何使用DDL触发器   第一步