张磊(Avraber)

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1) use
--use切换数据库的当前使用状态
在不适用use时,系统默认的是master数据库,要切换到自己的数据库
use  数据库名;


(2) go
--go表示将前面的SQL打一个包,一起执行
--go不属于T-SQL,它不是SQL语句的一部分
--go属于sqlcmd控制台命令


(3) create
<1>--创建数据库
--create database 数据库名
create database MyDatabase
go    --创建数据库后边要带一个go,那样系统里面才能有数据库,然后才能执行下面的操作
<2>--创建数据库并指定路径,大小等
create database 数据库名
on
(
    name='数据库逻辑名', --既数据库的名字
    filename='文件名.mdf', --既创建的路径。
    size=大小, --单位可以是M
    filegrowth=增长, --M为单位,或%为单位
    maxsize...  --指定文件可增大到的最大大小
)
log on
(
    name='数据库逻辑名_log',
    filename='文件名.ldf', --log database file
    size=大小, --单位可以是M
    filegrowth=增长, --M为单位,或%为单位
    maxsize...--指定文件可增大到的最大大小
)

create database MyDataBase
on
(
    name = 'MyDataBase',
    filename= 'G:\db\MyDataBase.mdf'
)
log on
(
    name = 'MyDataBase_log',
    filename='G:\db\MyDataBase.ldf'
)

<3>--建表
--create table 表名
--(
--    字段名 类型名,
--    字段名 类型名
--)


(4)drop
<1>--删除数据库drop database 数据库名

 

(5)db_id
--检查数据库是否存在
--db_id('数据库名')
if (DB_ID('MyDataBase')) is not null
    drop database MyDatabase;

   
(6)OBJECT_ID
--检查表是否存在的方法
--if (OBJECT_ID('表名', 'U')) is null
--create table 表名
--(
--    id int
--)

(7)--增insert into 表名(字段名) values(值);
insert into
    tblClass(classId, className, classDescription)
values        (1,       'DotNet基础', '基础的课程');


(8)--删除数据
--delete from 表名 where 条件
delete from tblClass

(9)--修改数据
--update 表名 set 字段名 = 值 where 条件

update tblClass set className = 'DotNet高级';

(10)--查询数据
select * from tblClass
--将字段一个个列出来,不要使用*,这是一个不太好的习惯
--表名,建议使用"架构名.表名"描述(Schame)

(11)--清除表数据
--truncate table dbo.tblStudent

(11)--添加列的别名
1.列 as 别名    (列可以使自己定义的'  ')
ClassName  as  教室名字,
2.列 (空格) 别名
ClassName 教室名字,
3.别名=列
教室名字=ClassName,

(12)--排序,使用 order by 字段名
 
  select * from 表名 order by EmpAge,  默认升序
 
  --在后面标注ASC和DESC表示 升序和降序
  select * from 表面 order by EmpAge desc
 
(13)--TOP  紧跟select 假如要选出3个人 select top 3
  假如只要前三个人
  select top(3)* from 表面 order by EmpAge desc,
  取出前3%
  top(3) percent
 
(14)--Distinct 去除重复的数据

select distinct* from 表名
  这里的*不能使用,因为重复数据的id不同,所有要使用各个字段名。
 
(15)--group by
  group by 字段名
  group by 中有的字段才能出现在Select
 
  group by 对数据进行分组,但是应注意分组的数据才允许select检索
  group by 应写在from后面,但写在order by 前面.
(16)--  between and
   表示条件范围
  EmpAge between 18 and 23
 
(17) --in
   字段 in(数值)
  EmpAge in(17,18,21)
 
  Emp Age in(18,21)
  or
  EmpAge between 5  and 16
 
(18)--模糊查询
  _单个字符
  % 多个字符
  使用like
 
(19)--转义
  T-SQL转义用[]
  在方括号中,[^]也表示否定,就是不出现这个元素。、
  name like '[^赵]%'
  name not like '赵%'
 
(20)-- SQL逻辑
  在SQL中,使用三值逻辑(true,false,unknow)
  SQL中<> 不等于,在SQLServer 中允许!=
 
(21)--SQL 执行顺序
 
from -> whre ->group by-> select-> having
 
(22)--空值处理
查询所有生日为null的姓名
-> select Fname from T_Student Fbirthday is null
-> 判断null只能使用is或is not
is null和is not null
-> 函数 isnull(字段名, 替换值)
查询时专门为空值的字段显示处理
select isnull(字段,123) from 表名
-> 空字符串与null含义不同,空字符串依旧有内容
处理空字符可以使用len()函数和is null

(23)--having语句
-> having 是group by的条件对分组后的数据进行筛选(与where类似,都是筛选,只不过having是用来筛选分组后的组的。)
-> 在where中不能使用聚合函数,必须使用having,having要位于group by之后,
-> 查询班级人数超过三个人的班级
select FClassId,count(FName) from T_Student group by FClassId having count(FName)>3
-> 注意having中不能使用未参与分组的列,having不能替代where。作用不一样,having是对组进行过滤。

(24)--联合结果集
-> union就是将多个结果集合并成一个结果集
-> 查询语句1 union 查询语句2
-> union会自动合并重复的数据
-> union all会保留重复数据
一般都是使用union all,效率会高点
-> 联合需要注意类型一致
cast()函数可以实现数据的类型转换
cast(1234 as varchar(10))

posted on 2012-07-12 18:39  张磊(Avraber)  阅读(184)  评论(0编辑  收藏  举报