--创建数据库

USE yuju

CREATE database YuJu

on primary

(

name='YuJu',

filename='B:\ceshi数据库\YuJu.mdf',

maxsize=1024mb,

filegrowth=10%

)

log on

(

name='YuJu_log',

filename='B:\ceshi数据库\YuJu.ldf',

size=10mb,

maxsize=1024mb,

filegrowth=10mb

)

--

DROP database YuJu

--

CREATE table Teacher(

TId int identity(1,1) primary key,

TName nvarchar(10),

TAge int

)

----

SELECT * FROM Teacher

DELETE FROM Teacher

--

INSERT INTO Teacher(TName,TAge) VALUES('王书峰',44)

----插入自增列

set IDENTITY_INSERT Teacher on

INSERT INTO Teacher(TId,TName,TAge) VALUES(2,'王书峰',44)

SET IDENTITY_INSERT Teacher off

--同时插入多行(union会自动除去重复行)union all不会

INSERT INTO Teacher

SELECT 'a',22 UNION

SELECT 'b',33 UNION

SELECT 'a',22 UNION

SELECT 'b',33 UNION

SELECT 'c',44

--union all

INSERT INTO Teacher

SELECT 'a',22 UNION ALL

SELECT 'b',33 UNION ALL

SELECT 'a',22 UNION ALL

SELECT 'b',33 UNION ALL

SELECT 'c',44

-----复制到新的表

SELECT * into guo FROM Teacher

---修改表列:

ALTER table Teacher alter column TName varchar(50)

--添加非空约束:

ALTER table Teacher alter column TName varchar(50) not null

---

ALTER table Teacher drop column TName

---增加一列

ALTER table Teacher add Sex nvarchar(10) not null

----加N,保证编辑器编辑不会放生乱码;

INSERT INTO Teacher VALUES(N'王书峰',44)

----sql逻辑运算符高低:not>and>or,c#也一样||的优先级最低;

a>10 and a<15 or a='' and(not(a=34))

----truncate 性能快的多,原因是不记录到日志中去。

---添加外键:

ALTER table Teacher add constraint pk_Teacher primary key(TId)

---添加唯一约束:

ALTER table Teacher add constraint uq_Teacher_Id unique(TId)

--默认约束:

ALTER table Teacher add constraint df_Teacher_TName default('男') for TName

--检查约束:

ALTER table Teacher add constraint ck_Teacher_TName check(TName like'%hh%')

--添加外键:

ALTER table tt add constraint fk_Teacher_tt foreign key(TTId) references Teacher(TId)

--删除外键

ALTER table  tt drop constraint fk_Teacher_tt

--删除多个键名

ALTER table  tt drop constraint fk_Teacher_tt,ck_Teacher_TName

--添加多个键名:

ALTER table Teacher

add constraint name1 unique(TId),

add constraint name12 check(TId>=0)

--若想修改键的话,先删除原来的键再添加新的键

--添加级联:

ALTER table tt add constraint fk_Teacher_tt foreign key(TTId) references Teacher(TId) on delete cascade

--添加非空约束:

ALTER table Teacher alter column TName varchar(50) not null

--重命名的两中方式;

SELECT TId as 'T','TT'=TId from Teacher

--长度为3;

select LEN('郭泽峰')

----索引:

--查看索引信息

sp_helpindex emp

--创建索引

create index idxempid on emp(id)

--创建非聚集索引

create nonclustered index idxempid on emp(id)

--创建具体索引

create clustered index idxempid on emp(id)--cluster代表聚集

--删除索引

drop index emp.idxmpid

--按书籍编号查询,创建聚集索引

create clustered index idxsjid on 书籍(书籍编号)

--查询索引信息

sp_helpindex 书籍

--删除索引

drop index 书籍.idxsjid

--使用全文索引

--查询跟windows相关的书

Select * from 书籍where 书籍名称like '%windows%'

--查询SQL SERVER 是否安装全文索引,-安装,-没安装

select fulltextserviceproperty ('isfulltextinstalled')

--查看数据库是否能定义全文索引,1-有,0-没有

select databaseproperty('练习','isfulltExtenabled')

--启动数据库全文索引功能

exec sp_fulltext_database 'enable'

--删除全文索引

drop fulltext index on 书籍

--删除全文目录

drop fulltext catalog ft

--创建全文目录

create fulltext catalog ft as default

--创建全文索引

create fulltext index on 书籍(书籍名称)key index pk_书籍--全文索引的关键词有:contains  ,  freetext

----

--和[]和正则表达式中的一样,只要包含a或b;

like '%[ab]%'   like '%x[^ab]y%'

--转义的话,sql中使用中括号

like '%[%]%'

--数据空中的null表示unknow,where a=null或a<>null;是不正确的;用is null,is not null

--null参与任何运算 结果都是null;

--数据库必须是大写的NULL,null当成了字符串;

--如果字段为NULL值得话,就替换成‘未填写’

SELECT ISNULL(TName,'未填写')

--排序中NUll被认为是最小的;

--orderby后面可以跟一个表达式;

order BY (f+f)/2

--order by 放于最后面,执行顺序的话,也是最后执行,所以后面跟的内容没太多限制,

--where 放于group by前面;先筛选后汇总

SELECT TID,COUNT(TID) from Teacher where TID>0 GROUP BY TID

----having是对于组进行筛选,比如每组人数<=10的除去;

SELECT TID,COUNT(TID) as allTea from Teacher HAVING COUNT(TID)>10

--但不能为having allTea>10,因为执行having时,as allTea还没

--执行

----以前在这里吃了不少亏,走了许多弯路,只知道用hvaing

SELECT TID,COUNT(TID) from Teacher where TName LIKE '%gg%' GROUP BY TID

---返回多个结果集,第二个结果集是两个汇总的;

USE pubs

SELECT type, price, advance

FROM titles

ORDER BY type

COMPUTE SUM(price), SUM(advance)

-----------------------------------------------------

2、 日期时间函数

select dateAdd(day, 3, getDate());--加天

select dateAdd(year, 3, getDate());--加年

select dateAdd(hour, 3, getDate());--加小时

--返回跨两个指定日期的日期边界数和时间边界数

select dateDiff(day, '2011-06-20', getDate());

--相差秒数

select dateDiff(second, '2011-06-22 11:00:00', getDate());

--相差小时数

select dateDiff(hour, '2011-06-22 10:00:00', getDate());

select dateName(month, getDate());--当前月份

select dateName(minute, getDate());--当前分钟

select dateName(weekday, getDate());--当前星期

select datePart(month, getDate());--当前月份

select datePart(weekday, getDate());--当前星期

select datePart(second, getDate());--当前秒数

select day(getDate());--返回当前日期天数

select day('2011-06-30');--返回当前日期天数

select month(getDate());--返回当前日期月份

select month('2011-11-10');

select year(getDate());--返回当前日期年份

select year('2010-11-10');

select getDate();--当前系统日期

select getUTCDate();--utc日期

-----数据库元数据语句;

------------------------------------------返回列的名字:表名:Teacher;2指的是第二列;

select col_name(object_id('Teacher'), 2)

----返回列的长度:

select col_length('Teacher', col_name(object_id('Teacher'), 1))

-----返回列在在表中多的索引值(从0开始)

select columnProperty(object_id('Teacher'), 'TId', 'ColumnId')

---

select replace('abcedef', 'e', 'E');--替换字符串

---

select replace('abcedef', 'e', 'E');--替换字符串

select stuff('hello world', 3, 4, 'ABC');--指定位置替换字符串 [3:第三个,4:长度]

select replicate('abc#', 3);--重复字符串

select subString('abc', 1, 1), subString('abc', 1, 2), subString('hello Wrold', 7, 5);--截取字符串

select len('abc');--返回长度

select reverse('sqlServer');--反转字符串

select left('leftString', 4);--取左边字符串

select left('leftString', 7);

select right('leftString', 6);--取右边字符串

select right('leftString', 3);

select lower('aBc'), lower('ABC');--小写

select upper('aBc'), upper('abc');--大写

--去掉左边空格

select ltrim(' abc'), ltrim('# abc#'), ltrim('abc' );

--去掉右边空格

select rtrim(' abc '), rtrim('# abc# '), rtrim('abc');

==================================================================

SELECT YEAR('2012-1-1')

SELECT DATEPART(YEAR,'2012-1-1')

------------------------------------------------------------------

语句顺序:

from>where>group by>having>select>order by;

------------建立索引必然会排序,更新索引,因为只有排序才能实现快速的查找;使用各种算法;

视图中不可以使用order by,除非使用top; 排序顺序后用top就不报错了;

-----索引视图(在视图上创建唯一聚集索引)就会保存数据,而不引用表中的数据;

begin transaction

DECLARE @num int

SET @num=0

SELECT 1

set @num=@num+@@error

SELECT 2

set @num=@num+@@error

if @num<>0

begin

rollback transaction

end

else

commit transaction

-------------------------------

比如insert语句,默认是自动提交事务,没插入一条自动开启事务,自动提交

当然,可以改为手动事务,

begin tran

insert ...

rollback:这样就回滚了;

-------------------------------

存储过程优点:

1.执行速度更快;一次编译;

2.允许模块化程序设计,类似方法的复用;

3.提高系统安全性,防止sql注入;

4.减少网络流量;

----

EXEC sp_databases :查看所有数据库的信息;

EXEC sys.sp_helpdb 'PM' :查看指定数据库的信息;

exec sp_renamedb 'PM','guo':给数据库重命名;

----查看数据库有多少张表和视图:

USE EF

EXEC sys.sp_tables

----查看表的列

USE PM

EXEC sys.sp_columns 'AChengBenGuiJi'

--sp_开头是系统的存储过程;

--触发器是表,所以比如同时删除多行时,只执行一次触发器;

游标不建议使用,性能非常的低下;

sql常用语句汇总的更多相关文章

  1. 【数据库】 SQL 常用语句

    [数据库] SQL 常用语句 1.批量导入 INSERT INTO Table2(field1,field2,...) SELECT value1,value2,... FROMTable1 要求目标 ...

  2. 【数据库】 SQL 常用语句之系统语法

    [数据库] SQL 常用语句之系统语法 1. 获取取数据库服务器上所有数据库的名字 SELECT name FROM master.dbo.sysdatabases 2. 获取取数据库服务器上所有非系 ...

  3. MySQL增删改查的常用语句汇总

    MySQL增删改查的常用语句汇总 以下是总结的mysql的常用语句,欢迎指正和补充~ 一.创建库,删除库,使用库 1.创建数据库:create database 库名; 2.删除数据库:drop da ...

  4. sql 常用语法汇总

    Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控 ...

  5. SQL常用语句之数据库的创建、删除以及属性的修改-篇幅1

    本篇文章主要总结了SQL Server 语句的使用和一些基础知识,因为目前我也正在学习,所以总结一下. 要使用数据库语句,首先就要知道数据库对象的结构: 通常情况下,如果不会引起混淆,可以直接使用对象 ...

  6. SQL常用语句整理

    有次笔试最后一页的三个数据库连接查询,没有写出来,被考官暗讽了下.现在想来,实习初,确实很LOW.现公司刚入职的时候,负责过ETL方面,所以和数据库打了不少交道,五十行的联合查询.上百行的存储过程很常 ...

  7. SQL常用语句,随时用随时更新

    更多详细说明文档查询 http://www.postgres.cn/docs/9.5/infoschema-columns.html 1.1通过表名查询表的属性 SELECT * FROM sys.s ...

  8. SQL常用语句(二)

    --语 句 功 能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据 --数 ...

  9. ORACLE数据库 常用命令和Sql常用语句

    ORACLE 账号相关 如何获取表及权限 1.COPY表空间backup scottexp登录管理员账号system2.创建用户 create user han identified(认证) by m ...

随机推荐

  1. Facebook 网页应用图文设置教程

    最近在弄一个项目,需要使用Facebook进行登陆并且获取用户Facebook相关的数据.网上查找有关Facebook应用设置教程,中文资料中,要么介绍的是N版之前的API,要么是App端的教程.Fa ...

  2. shell 监控局域网的主机是否up(转)

    #!/bin/bash for ((i=30;i<60;i++)) ;do ping -c 3 172.31.0.$i>/dev/null #ping -c 172.31.0.30 ~17 ...

  3. Java存储区域——JVM札记&lt;一个&gt;

    Java当虚拟机数据区域 执行数据区主要包括:方法区.堆.VM栈.本地方法栈.程序计数器. 当中方法区和栈是线程共享的区域,另外三块区域是每一个线程私有的区域.各个数据区的功能简单说明例如以下: 程序 ...

  4. SAP RFC 函数来创建 Java呼叫 学习总结 一步一步的插图

    前言 该公司很快就接到了一个项目,SAP有接口.让我们做老大SAP.首先SAP联系.但发展从来没有打过.本周集中在这一个研究. 各种碰壁,SAP该系统让我怎么说? 算了.说多了都是泪,以下附上本周学习 ...

  5. asp.net学习之再论sqlDataSource

    原文:asp.net学习之再论sqlDataSource 本节从上一节没有阐述的几个方面,再讨论一下SqlDataSource的用法及注意的事项.     上一节的链接地址如下:http://www. ...

  6. 十天学Linux内核之第三天---内存管理方式

    原文:十天学Linux内核之第三天---内存管理方式 昨天分析的进程的代码让自己还在头昏目眩,脑子中这几天都是关于Linux内核的,对于自己出现的一些问题我会继续改正,希望和大家好好分享,共同进步.今 ...

  7. 我国常用的坐标系统WKID列表[转]

    原文链接:http://blog.sina.com.cn/s/blog_62f9ffcd0102uw8x.html Geographic Coordinate System 地理坐标 4214  GC ...

  8. View中选择的数据行中的部分数据传入到Controller中

    将View中选择的数据行中的部分数据传入到Controller中   ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NE ...

  9. C++ Primer 学习笔记_56_ 类和数据抽象 --消息处理演示示例

    拷贝控制 --消息处理演示样例 说明: 有些类为了做一些工作须要对复制进行控制. 为了给出这种样例,我们将概略定义两个类,这两个类可用于邮件处理应用程序.Message类和 Folder类分别表示电子 ...

  10. Chapter 2 User Authentication, Authorization, and Security(3):保server避免暴力袭击

    原版的:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题文件夹:http://blog.csdn.net/dba_huangzj ...