sql语句总结

标签: sql 语句 | 发表时间:2011-08-12 19:08 | 作者:caishuhua226 zhaoloving
出处:http://www.cnblogs.com/

1、创建数据库语句(以部门表(department)和员工表(employee)位例)

  create database MyCompany

  on

  (

name='MyCompany_data',

filename='c:\database\MyCompany_data.mdf',

size=5mb,

filegrowth=10%,

maxsize=100mb

  )

  log on

  (

name='MyCompany_log',

filename='c:\database\MyCompany_log.ldf',

size=1mb,

filegrowth=1mb,

maxsize=10mb

  )

2、创建表语句

create table department

(

dId int identity(1,1) primary key,

dName nvarchar(10) not null

)

go


--员工表 employee


create table employee

(

eId int identity(1,1) primary key,

eName nvarchar(10),

eSex nchar(1),

eAge int,

eSalary money,

eDepId int,

eIntime datetime

)

go

3、创建主键约束 

  alter table [表名] add 

    constraint [键名] Primary key [主键名称]

4、创建唯一约束

  alter table [表名] add

     constraint [键名] unique(唯一键名称)

5、创建默认约束

  alter table [表名] add

     constraint [键名] default(默认值) for [设为默认值的字段]

6、创建检查约束

  alter table [表名] check(要检查的条件)

7、创建外键约束

  alter table [表名] add

  constraint [外键名称(自己起的)] foreign key(表中的外键名称) references [与外键相关联的表名][相应表中的主键]

8、级联删除

  alter table [表名] add

  constraint [外键名称(自己起的)] foreign key(表中的外键名称) references [与外键相关联的表名][相应表中的主键] on delete cascade

删除的时候先删除字表中的数据,再删除父表中的数据

9、在表中插入数据

  insert into [表名](字段名称)values(对应字段的值)

10、删除数据

  delete from table where(条件)

    truncate table [表名]

  delete与truncate的区别:truncate删除数据的时候把自增长列的值还原成种子

  delete删除了数据如果再向表中插入数据,有自增长列的值的种子还会自增

  删除表 drop table [表名]

  删除数据库 drop database [数据库名]

11、修改数据

  update table set [要修改的数据] where 条件

12、查询数据

  最简单的查询:selcet [字段] from [表名]

  sql中最难的要属数据查询了,增删改相对来说都比较简单。

  --修改列名

select sName as '姓名',sAge as '年龄',sSex as '性别' from Student

select sName '姓名',sAge '年龄',sSex '性别' from Student

select '姓名'=sName,'年龄'=sAge from Student


--带条件查询

select sName as '姓名',sAge as '年龄',sSex as '性别' from Student

where sAge > 20

select 1+1 as 'mm'

select GETDATE() 'time'


--top

select top 3 * from Student


--百分之几

select top 3 percent sName,sAge,sBirthday from Student

--distinct

select * from Student

select distinct * from Student

select distinct sName from Student

select distinct sName,sNo from Student

select distinct sName,sSex from Student


--聚合函数

select * from Score

select COUNT(*) from Student

select MAX(english) from Score

select Min(english) from Score

select SUM(english)/COUNT(*) from Score


--avg没有统计null的值

select AVG(english) from score

select MAX(sbirthday),MIN(sbirthday) from Student


--对列计算

select sName,sAge + 5 as 'sAge',sSex from Student

select english*2,studentid from Score

--带条件查询

select studentId,english from Score where english<60

select * from Student where sAge >=20 and sAge <= 30

--Between…and …在之间


--查询年龄在20-30岁之间的男学生

select * from Student where sAge between 20 and 22 and sSex = '男'


--查询成绩在80-90分之间的所有学生

select * from Score where english between 80 and 90

select * from Student where sBirthday between '1988-1-1' and '1989-12-31' 


--in

select * from Student where sClassId = 1 or sClassId=2 or sClassId=3 or sClassId = 4

select * from Student where sClassId in (1,2,3,4)


--模糊查询  like

select * from Student where LEFT(sName,1) = '张'

select * from Student where sName like '张%'

select * from Student where  sName like '%侯%'

select * from Student where sName like '张__'

select * from Student where sName like '%[飞羽]%'--[0-9]  [a-z]  [123]


--null

select 1 + null

select * from Score where english is null

select * from Score where english is not null

--order by


--出现在select语句的最后

select * from Student order by sAge asc

select * from Student order by sAge desc

select top 5 * from Student order by sAge desc

select * from Score order by english asc,math asc

select * from Score where english >= 60 and math >= 60

order by english asc,math asc


--分组  group by

--select之后的列,必须出现在聚合函数或者group by子句中

select sClassId,COUNT(sId),MAX(sAge) from Student group by sClassId

select sSex,COUNT(*) from Student group by sSex

--having 对分组过后的数据进行筛选

select sClassId,COUNT(*) from Student group by sClassId having COUNT(*) > 3

13、数据库中常用的函数

  getdate();count(),avg(),max(),min(),sum()

14、函数总结

    1、ISNULL(expression,value)     如果expression不为null返回expression表达式的值,否则返回value的值

2、字符串函数

LEN() :计算字符串长度

LOWER() 、UPPER () :转小写、大写

LTRIM():字符串左侧的空格去掉 

RTRIM () :字符串右侧的空格去掉 

LTRIM(RTRIM('         bb        '))

LEFT()、RIGHT()  截取取字符串

SUBSTRING(string,start_position,length)

参数string为主字符串,start_position为子字符串在主字符串中的起始位置(从1开始),length为子字符串的最大长度。SELECT  SUBSTRING('abcdef111',2,3) 

REPLACE(string,oldstr,newstr)

3、日期函数

GETDATE() :取得当前日期时间 

DATEADD (datepart , number, date ),计算增加以后的日期。参数date为待计算的日期;参数number为增量;参数datepart为计量单位,可选值见备注。DATEADD(DAY, 3,date)为计算日期date的3天后的日期,而DATEADD(MONTH ,-8,date)为计算日期date的8个月之前的日期 

DATEDIFF ( datepart , startdate , enddate ) :计算两个日期之间的差额。 datepart 为计量单位,可取值参考DateAdd。

DATEPART (datepart,date):返回一个日期的特定部分 整数

DATENAME(datepart,date):返回日期中指定部分 字符串

YEAR() MONTH() DAY()

4、类型转换函数

CAST ( expression AS data_type)

case(score as varchar(10))

CONVERT ( data_type, expression[,style])

取日期部分

2012-12-21

1、CONVERT(varchar(100),getdate(),23)

2、CONVERT(varchar(10),getdate(),21)


嵌套查询(子查询)

子查询返回的值不止一个。

--当子查询跟随在 =、!=、<、<=、>、>= 之后,或 子查询用作表达式时,这种情况是不允许的。

在子查询中,一搬我们会使用in 代替 =使用

select employee_id,employee_name

from employee

where department_id in

(select department_id 

from department where department_name='销售部')

连接查询

内连接  inner join...on...

查询满足on后面条件的数据

外连接

左连接

left join...on...

先查出左表中的所有数据

再使用on后面的条件对数据过滤

右连接

right join...on...

先查出右表中的所有数据

再使用on后面的条件对数据过滤

(*)交叉连接 

cross join 没有on

第一个表的每一行和后面表的每一行进行连接

没有条件。是其它连接的基础

  



 



  

作者: caishuhua226 发表于 2011-08-12 19:08 原文链接

评论: 0 查看评论 发表评论


最新新闻:
· MySpace主页昨晚现杂乱信息 疑似遭黑客攻破(2011-08-12 17:32)
· 郭台铭:富士康将携手日企对抗三星(2011-08-12 17:12)
· Zynga可支配资金达10亿美元 或进行重大收购(2011-08-12 17:02)
· 消息称豆瓣网获5000万美元融资 官方不予置评(2011-08-12 17:02)
· 传土豆IPO已获全额认购 下周三上市(2011-08-12 16:42)

编辑推荐:为什么要关闭数据库连接,可以不关闭吗?

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [sql 语句] 推荐:

sql语句总结

- zhaoloving - 博客园-首页原创精华区
1、创建数据库语句(以部门表(department)和员工表(employee)位例). --员工表 employee.   alter table [表名] add .     constraint [键名] Primary key [主键名称].   alter table [表名] add.      constraint [键名] unique(唯一键名称).

SQL语句大全

- - SQL - 编程语言 - ITeye博客
原文地址:http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html. 3、说明:备份sql server. --- 创建 备份数据的 device. A:create table tab_new like tab_old (使用旧表创建新表).

sql经典语句

- - 数据库 - ITeye博客
3、说明:备份sql server. --- 创建 备份数据的 device. table tab_new like tab_old (使用旧表创建新表). DB2中列加上后数据类型也不能改变,唯一能改变的是增加. 注:索引是不可更改的,想更改必须删除重新建. 10、说明:几个简单的基本的sql语句.

sql语句优化

- - 数据库 - ITeye博客
性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好. 对复杂的SQL语句,要设法对之进行简化. 1)不要有超过5个以上的表连接(JOIN). 2)考虑使用临时表或表变量存放中间结果.

Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?

- - 程序猿DD
昨天在群里看到有小伙伴问,Java里如何解析SQL语句然后格式化SQL,是否有现成​类库可以使用. 之前TJ没有做过这类需求,所以去研究了一下,并找到了一个不过的解决方案,今天推荐给大家,如果您正要做类似内容,那就拿来试试,如果暂时没需求,就先了解收藏(技多不压身). JSqlParser是一个用Java编写的SQL解析器,可以将SQL语句解析为Java对象,从而使开发人员能够轻松地分析、修改和重构SQL查询.

SQL查询语句(oralce)(1)

- - ITeye博客
  主要用于创建删除数据库对象和维护数据对象的属性. 主要有三个主命令:CREATE .DROP. SQL>CREATE TABLE 表1 AS SELECT * FROM 表2;. SQL>DROP TABLE 表名;. SQL>--添加.修改.删除字段. SQL> ALTER TABLE 表名 ADD/MODIFY(字段 类型);.

(转)经典sql查询语句大全

- - SQL - 编程语言 - ITeye博客
3、说明:备份sql server. --- 创建 备份数据的 device. A:create table tab_new like tab_old (使用旧表创建新表). DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度. 7、说明:添加主键: Alter table tabname add primary key(col).

P6SPY 2.0 发布,SQL 语句拦截

- - 开源中国社区最新新闻
8年过去了,P6SPY 发布了全新稳定版本 2.0 ,P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架. 通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析. 下载地址: https://github.com/p6spy/p6spy/wiki/Download.

如何写出高性能SQL语句

- - Oracle - 数据库 - ITeye博客
优化SQL查询:如何写出高性能SQL语句. 1、首先要搞明白什么叫执行计划. 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生欀如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用“全表扫描”方式.

如何使用动态SQL语句?

- - CSDN博客数据库推荐文章
这里只介绍动态SQL的使用. 关于动态SQL语句的语法,参见: http://blog.csdn.net/chiclewu/article/details/16097133. 1.什么是时候需要使用动态SQL. 例如,SELECT语句包含的标识符(如表名)在编译时是未知的,或者WHERE子句的条件数量在编译时是未知.