sql server 笔记

用SQL语句建立数据库:

create database hfitu
on
(
 name='hfitudata1',
 filename='c:/data/it1.mdf',
 size=1,
 maxsize=5,
 filegrowth=1
)log on
(
 name='hfitudate11',
 filename='c:/data/it11.ldf',
 size=1,
 maxsize=5,
 filegrowth=5
)

查看:
sp_helpdb it


用SQL语句建立数据库(2)
create database it
on
(
 name='it1',
 filename='c:/data/it1.mdb',
 size=1,
 maxsize=5,
 filegrowth=1
),
(
 name='it2',
 filename='c:/data/it2.mdb',
 size=1,
 maxsize=5,
 filegrowth=50%
)log on
(
 name='it11',
 filename='c:/data/it11.ldb',
 size=1,
 maxsize=5,
 filegrowth=120%
)


修改数据库:
1) 添加数据文件
alter database it
add file
(
 name='wxbing',
 filename='c:/data/wxbing.mdb',
 size=2,
 maxsize=10,
 filegrowth=50%
)
sp_helpdb it

2)添加日志文件
alter database hfitu
add log file
(
 name='itu',
 filename='c:/data/itu1.ldb',
 size=2,
 maxsize=15,
 filegrowth=120%

)
sp_helpdb it


3)文件删除 
alter database hfitu
remove file itu

4) 文件属性设置
alter database it
modify file
(
 name='wxbing',
 size=5,
 maxsize=5,
 filegrowth=1
)

5) 数据库名修改
sp_renamedb it,itu

删除数据库

use itu

drop database hfitu

sp_  存储过程

 

 

 



数据类型:

1)整型数据类型:  bit(1/0)   int   smallint   tinyint(0-255)   bigint
2)浮点型(实型):  real       float
3)字符型:        char(n)    varchar(n)       text
4)二进制型:      binary     varbinary        image
5)时间型:        datetime   smalldatetime
6)货币型:        money    

自定义数据类型:

sp_addtype age(自定义数据类型名),'varchr(n)'(数据类型),'not null'(是否为空值)

注:在"企业管理器"中查看自定义数据类型必须显示所有系统数据库和系统对象.

 

变量:

定义变量:   declare @变量名 数据类型 ,@变量名 数据类型  ....

赋值:
1)set @变量名=值   2) select @变量名=值
注:set 不可在一行中赋多个变量,而select可以.

输出(打印)变量名:
1)print @变量名    2)select @变量名
注:print 不可在一行中输出多个变量的值,而select可以.


例:(1) declare @it varchar(10),@ed char(10)
       set @it='sje'
       set @ed='hfit'
       print @it
       print @ed

   (2) declare @age  tinyint,@name varchar(10)
       select @age=12,@name='wxb'
       select @age,@name

 

 

 


给变量赋值后输出时字段命名:
1、 select @变量 as 字段名
2、 select @变量 字段名
3、 select 字段名=@变量

eg、
declare @myname varchar(10),@myage tinyint,@myaddr varchar(20)
select @myname='wxb',@myage=20,@myaddr='ahlj'
select @myname  as name,@myage as age,@myaddr as address

全局变量:是由系统给定的,不能由用户创建变量
一般用@@开头
eg.@@error 报告上次SQL 操作时是否错误 如果正确返回为0 如果错误则返回为非0的数(也就是错误编号)

@@rowcount  影响行数 

select @@rowcount 用来表达操作的行数

 


创建表(用T-SQL语句创建)

create table 表名
(
 字段名1 类型  是否为空值,字段名2 类型 是否为空值

)

修改表

利用企业管理器来修改:右击-设计表
添加字段:
     alter  table 表名
     add 字段名称 类型
删除字段:
     alter  table 表名
     drop colunm 字段名
修改字段:
     alter  table 表名
     alter colunm 字段名 类型  是否为空值

注:如果表中有主键字段,必须先删除主键才能修改表中的字段

表名修改:  sp_rename 旧表名,新表名

字段名修改:sp_rename '表名.字段名' ,新字段名

向表中添加记

insert [into] 表名 (字段列表) values (值)

注:如果要某表所有字段列表赋值,那么内容字段列表可以省略
    表中所有的not null的字段必须为其赋值.
    为表中的所有的字段赋值,可以依次写出所有所有字段,也可以省略不写.
eg.   insert into 表名  values(........)
insert into wxb values ('wdh' ,'男',19)

 

 


查看表中的字段:   sp_help 表名

查询表中的记录:     select * from 表名 (查询表中所有的字段)
查询表中指定的记录: select 字段名1,字段名2....from 表名 where 条件
指定条件查询:      select 字段名 from 表名 where 条件

修改表中的记录:  update 表名 set 字段=值,字段2=值2...where 条件  
                update 字段初值为0的 字段=字段+值不行;
删除记录:       delete [from] 表名  where 条件

删除表:  drop table 表名1,表名2...

数据库的附加和分离:
附加:数据文件载入到企业管理器中.
右击数据库->所有任务->附加数据库

用SQL语句:

sp_attach_db @dbname='数据库名',
@filenameN='路径.mdf',
@filenameN='路径.ldf'
N最大为16

 

分离:把数据库文件从企业管理器中分离出来.
右击数据库->所有任务->分离数据库

用SQL语句:

sp_detach_db '数据库名'

 

 

标识符: (企业管理器) 右击表--设计表--光标定位到要定义的字段,
        条件:
 1、该列的数据类型必须为整型
 2、该列的值不允许为空
注意: 标识符的列是不可编辑,且一个表中只允许有一个标识符。


SQL: 创建表的同时, create table 表名
      (
                       字段名 类型 identity(n,m)
                     )  
      创建表后:     1.删除原列 2.添加此列为标识符
                  
                   alter table 表名
     drop column 字段名
               
                   alter table 表名
                   add 字段名 类型 identity(n,m)

在SQL 中的注释用"--"

公式:   (企业管理器)右击表--设计表--公式
       

         --创建带有公式和默认值的表
          create table 销售表2
          (
  单价 int not null,成本 int not null,销售量 int not null,销售金额 as 销售量*单价,赢利 as 销售量*单价-销售量*成本,销售时间 datetime default getdate()
)
select * from 销售表2


默认值: 用户输入的仍然有效
        (企业管理器) 右击表--设计表--默认值
      

        在建表后:添加字段时:
        alter table table_name
        add
        constraint df_name default 值 for 字段
     
        在创建表时:

        create table table_name
        (
          字段名 类型  default 值
         )

函数:
数学函数:

abs()           求一个数的绝对值
ceiling(num) 返回大于或等于给的数的最小整数
floor(num) 返回小于或等于给的数的最大整数  
power(n,m) 求一个数的指数 
round(n,m) 求一个数的精确度,m为小数部分且按四舍五入的方法
square(num) 求一个数的平方
sqrt(num) 求一个数的平方根


字符串函数:
char(num)          把一个数转换为字符
ascii('')    把一个字符转换为数字
charindex('','')   第一个字符串在不在第二字符串中0为不在,非0为不在
left('',num)       从左边第一个字符开始截取num个字符
right('',num)      从右边第一个字符开始截取num个字符


在网页上应用查询:select * from itnews
                where charindex('放假',title)<>0

 

 


 

len(string) e.g select * from news where len(title)=4

ltrim() rtrim() 分别删除左右边的空格

substring(字符串,起始点,长度)

upper ('英文字符') 转换为大写
lower ('英文字符') 转换为小写

日期函数:

getdate()   当前系统时间
year(date)  month(date)  day(date)
时间因子:也就是时间单位
dateadd(时间因子,数字,日期)
datediff(时间因子,小日期,大日期)

datepart(时间因子,日期)


转换函数:
cast(被转换类型 as 要转换到的类型)

convert(要转换的类型,被转换的类型)

系统函数:
current_user as 返回当前用户名
system_user  as 返回当前登录名
host_name()  as 返回当前服务器名
dataleng()   as 字节长度


3.7  数据完整性

实体完整性:      避免数据冗余
值域完整性:      值的范围
参照完整性:      避免数据不合理
用户自定义完整性:


 

实现数据完整性
约束/规则/默认

约束(五大约束)
1、主键 (primary key)
2、外键(foreign key)
3、唯一 (unique)
4、检查 (check)
5、默认 (default)

pk:设计表/选择字段/点击钥匙图标

用SQL语句创建:
建表时:
 
create table table_name
(
 字段 类型 是否为空 primary key,
)

建表后(表中必须有这个字段的存在,不能同时添加字段):

alter table table_name
add
constraint pk_name primary key(字段)

注:一个表只能有一个主键

PK的作用:
1、值的唯一性
2、该字段必须为 not null
3、添加值时不能为空
4、系统会自动为该字段添加索引(index)
5、一个表中只能有一个主键(多列组合主键)

用SQL语句创建多列组合主键
alter table table_name
add
constraint 名称 primary key (字段1,字段2,...)
 

unique 数据唯一:
可在表中创建多个
可以为空值(只能有一个空值)
用SQL语句:
 
constraint 名称 unique (字段)


外键(foreign key)

创建外键的条件:
 被参照列必须设置为主键或unique
 两个字段必须在数据类型和长度保持一致
在要设外键(foreign key)的表中设定关系
用SQL语句创建:
alter table 外键表
add
constraint 名称 foreign key(字段) references 主键表(字段)
e.g:
alter table 销售表
add
constraint fk_sp foreign key(产品编号) references 产品表(产品编号)


检查约束(check)
在企业管理器中:
右击表/设计表/右击/check约束

用SQL语句:
alter table table_name
add
constraint 名称 check(条件)

e.g:
alter table wxb
add
constraint ck_ce check(id between 0 and 10)

 

默认值: 用户输入的仍然有效
        (企业管理器) 右击表--设计表--默认值
      

        在建表后:添加字段时:
        alter table table_name
        add
        constraint df_name default 值 for 字段
     
        在创建表时:

        create table table_name
        (
          字段名 类型  default 值
         )

规则(rule):值域完整性
在功能上和check约束一样
表删除,约束随之走  (约束)
表删除,规则仍然在  (规则)

@变量名 关系式(@变量名 between 0 and 100)

用SQL创建规则:

create rule rule_name
as
规则表达式

 
规则绑定:
sp_bindrule 规则名,'表名.字段'

解除绑定:
sp_unbindrule '表名.字段'
注:一个字段只能有一个规则(后来者居上)

删除规则:
drop rule 规则名

注:如果规则正在使用无法删除的

查看规则源代码:  sp_helptext 规则名

查看规则创建时间:sp_help 规则名

默认:

与规则一样

第十三节课:  2009-6-5

like用法:
e.g:
alter table table_name
add
constraint ck_stu check(学号 like 'STU[0-9][0-9][0-9][0-9][0-9][0-9]')

% 包含零个或更多字符的任意字符串。
WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名。

_(下划线) 任何单个字符。
WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。

[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。
WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。

[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。
WHERE au_lname LIKE 'de[^l]%' 将查找以 de 开始且其后的字母不为 l 的所有作者的姓氏。


distinct 除去重复的记录

IS NULL 用来查找 NULL 值。

top 子句
select top number [percent] column_name(s) from table_name


 

% 表示任意个任意字符串
_ 表示一个任意字符串

exists 检查某个内容是否存在

在排序查询中,空值最小
注:排序只是对查询结果进行输出的!并没有改变记录在表中的真实位置!!!!


第十五节课:  2009-6-10

select count(*) from 学生表

注:有空值的情况下不统计在内。
    非分组字段绝不能出现在查询中。

having 分组查询中的条件

group by 分组


连接查询:

笛卡尔积的出现:通过两张表的公共字段连接   公共字段连接匹配

e.g: select * from 表1,表2
      where 表1.字段=表2.字段

连接查询也就是多表连接查询:有两张表,三表,四表查询.

 

 

 

别名: select * from 表1 别名1,表2 别名2

注:有了别名就要用。

嵌套查询:一个条件需要另一个查询的结果给出。另一个查询用“()”
          子查询含多个查询结果用“in”
          使用“in”都可以

合并查询:将查询多个结果进行合并,得到一个结果,自动除掉重复记录。

第一个结果    类型统一  union


保存查询结果: 
  
into 表    保存到永久的表中
into #表   保存到临时表(当服务停止以后此表消失)
此表结果只能保存变量


e.g:
declare @age int
select @age=年龄 from 表  
select @age


Go 表示上一程序结果
e.g:
declare @age int
set @age=(
 select .....
)


空复本:
让查询结果为空保存到另一张表中,发布到WEB上
工具-->向导-->管理-->web助手向导

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值