sql常用语句汇总
--创建数据库
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常用语句汇总的更多相关文章
- 【数据库】 SQL 常用语句
[数据库] SQL 常用语句 1.批量导入 INSERT INTO Table2(field1,field2,...) SELECT value1,value2,... FROMTable1 要求目标 ...
- 【数据库】 SQL 常用语句之系统语法
[数据库] SQL 常用语句之系统语法 1. 获取取数据库服务器上所有数据库的名字 SELECT name FROM master.dbo.sysdatabases 2. 获取取数据库服务器上所有非系 ...
- MySQL增删改查的常用语句汇总
MySQL增删改查的常用语句汇总 以下是总结的mysql的常用语句,欢迎指正和补充~ 一.创建库,删除库,使用库 1.创建数据库:create database 库名; 2.删除数据库:drop da ...
- sql 常用语法汇总
Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控 ...
- SQL常用语句之数据库的创建、删除以及属性的修改-篇幅1
本篇文章主要总结了SQL Server 语句的使用和一些基础知识,因为目前我也正在学习,所以总结一下. 要使用数据库语句,首先就要知道数据库对象的结构: 通常情况下,如果不会引起混淆,可以直接使用对象 ...
- SQL常用语句整理
有次笔试最后一页的三个数据库连接查询,没有写出来,被考官暗讽了下.现在想来,实习初,确实很LOW.现公司刚入职的时候,负责过ETL方面,所以和数据库打了不少交道,五十行的联合查询.上百行的存储过程很常 ...
- SQL常用语句,随时用随时更新
更多详细说明文档查询 http://www.postgres.cn/docs/9.5/infoschema-columns.html 1.1通过表名查询表的属性 SELECT * FROM sys.s ...
- SQL常用语句(二)
--语 句 功 能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据 --数 ...
- ORACLE数据库 常用命令和Sql常用语句
ORACLE 账号相关 如何获取表及权限 1.COPY表空间backup scottexp登录管理员账号system2.创建用户 create user han identified(认证) by m ...
随机推荐
- C#开发人员能够可视化操作windows服务
使用C#开发自己的定义windows服务是一个很简单的事.因此,当.我们需要发展自己windows它的服务.这是当我们需要有定期的计算机或运行某些程序的时候,我们开发.在这里,我有WCF监听案例,因为 ...
- iOS ... NS_REQUIRES_NIL_TERMINATION
看到官方的一个样例不错,这里留记. #import <Cocoa/Cocoa.h> @interface NSMutableArray (variadicMethodExample) - ...
- poj 2449 Remmarguts' Date 【SPFA+Astar】【古典】
称号:poj 2449 Remmarguts' Date 意甲冠军:给定一个图,乞讨k短路. 算法:SPFA求最短路 + AStar 以下引用大牛的分析: 首先,为了说话方便,列出一些术语: 在启示式 ...
- PHP课程十大 PHP图像处理功能和实现的验证码
假如你喜欢这个博客,访问这个博客地址:http://blog.csdn.net/junzaivip 总结: gd绘图库: 数学函数 PHP图片处理函数 图片处理函数使用场景 1.验证码 2.缩放 3. ...
- hdu 2191 (多重背包+二进制优化)
Problem Description 急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品, ...
- jQuery中的 return false, e.preventDefault(), e.stopPropagation()的区别
e.stopPropagation()阻止事件冒泡 <html><head> <title></title> <script sr ...
- Android 自己的自动化测试(5)<robotium>
大约Android自己的自动化测试UI测试,前出台Android 自己主动化測试(4)<uiautomator>, 在android原生的单元測试框架上,利用uiautomator.jar ...
- 【Socket计划】使用C++实现Server结束Client结束
我是在Visual Stdio 2013两人的建立project.编译如下两个人main文件,然后测试 服务器:Server.cpp #include <WINSOCK2.H> #incl ...
- android之【本地通知Notification】
public class NotificationTest extends Activity { static final int NOTIFICATION_ID = 0x1123; @Overrid ...
- 【百度地图API】如何制作班级地理通讯录?LBS通讯录
原文:[百度地图API]如何制作班级地理通讯录?LBS通讯录 摘要:班级通讯录必备的功能,比如人员列表,人员地理位置标注,展示复杂信息窗口,公交和驾车等.一般班级人员都不会超过300个,因为可以高效地 ...