数据库操作

来源:互联网 发布:em算法实例 编辑:程序博客网 时间:2024/04/30 12:13

09.09.11 数据库操作  

关于数据库操作,本人在下一篇文章,有各位大哥挺我,我怕谁!!呵呵呵~~~~~~~

sql语言
一:基本概念
A   1   数据库:数据和数据库对象的集合。每一条数据具有相同格式。
   
2   表:数据库的对象之一,包含所有数据库的数据,一个数据库由多个表构成,每个表中存储具有共同属性的数据,表于标之间存在关联。
   
3   记录:数据库划分的单元,即表中的行。
   
  字段:一条记录被划分为几个字段,每一个字段保存一种特定的数据。
完整性概念
A   实体完整性
        
行的完整性(primary unique identity
  
1 primary 主键约束
     在一个表中可以有一列或多列的组合,其值唯一地标识表中的一行
    
1.1一个表中只能有一个primary key约束
     1.2
pk不能取空
    
1.3如何pk是由多列组成,则某一列可以重复,但所有列的组合不能重复。
         
创建pk方法
    
利用sql语句创建pk
    
在创建表时
       create table
表名
       (
        
列名 列类型 [constraint 约束名] primary key
         --
如果是多列 在最后加 [constraint 约束名] primary key(列名1,列名2)
       )    
     
创建完表以后创建pk
       alter table
表名
         add [constraint
约束名] primary key(列名1,列名2)
      
删除pk
       alter table
表名
         drop constraint
约束名  
   
2 unique 唯一约束
      
使用创建方法和pk相似,不允许表中对应字段存在重复值。
      
两者的区别如下
      
1) 一个表只能创建一个pk约束,但一个表可以根据需要对不同的列创建若干个unique约束
      
2)pk字段不允许为null unique允许为空
      
3)一般创建pk约束时,系统自动产生簇索引,unique约束自动产非簇索引
   
3 identity标识列 一个表中只能有一个标识列
      
据类型必须是 intbigintsmallinttinyint decimal 数据类型,或者小数位数为 0 numeric 数据类型
      identity(
初始值,增量)
B    域完整性(列完整性)
列完整性,指定列输入的有效性。(check约束,default约束)
1 check 检查约束
    建立约束:
   
1通过企业管理器创建与删除check约束
   
2语法:[constraint 约束名] check(逻辑表达式)
    create table t
    (
      
学分 tinyint check(学分>=0 and 学分<=10),
      
性别 char(2) constraint t_xb check(性别='' or 性别='')
    )
   
3建完表以后增加约束
      alter table
表名
      add constraint
约束名 check(表达式)
   
4利用sql语句删除约束
     alter table
表名
     drop constraint
约束名
2 default 默认值约束
    
建立默认值约束
    
语法:[constraint 约束名] default(表达式)

     学分 tinyint check(学分>=0 and 学分<=10) constraint df default 0
    
删除默认值约束
    
语法:
        alter table
表名
          drop constraint
约束名
C    参照完整性
        禁止在从表中插入包含主表中不存在的关键字的数据行
     
2   禁止会导致从表中的响应值孤立的主表中的外关键字值改变
     
3   禁止删除在从表中的由对应记录的主表记录
对两个相关联的表(主表与从表)进行数据插入和删除时,通过参照完整性保证他们之间数据的一致性
   
利用foreign key定义从表的外键,pkunique约束定义主表的主键或唯一键(不允许为空),可以实现
   
主从表的参照完整性
    1 利用企业管理器定义参照关系
   
2 利用sql语句建立关系
     
在创建表同时
       create table
表名
       (
        
列名 列数据类型 [foreign key]
         references
主表名(对应的主键列名)
       )
      
通过修改表增加外键约束
        alter table
表名
         add constraint
约束名
         foreign key (
列名)
         references
主表名(对应的主键列名)
   
3 利用sql删除约束
        alter table
表名
          drop constraint
约束名
D    用户定义的完整性

   数据类型
A   整数类型:int/intger smallint tinyint    bigint
             
B   浮点数据类型 real    float    decimal   numeric
C   二进制数据类型 binary   varbinary
D   逻辑数据类型    bit
E   字符数据类型    char:10个字节,固定长度2个字节存一个汉字,取值1-8000
                    nchar
:一个字节存一个汉字,取值1-4000  
                    varchar
10个字节,不固定长度,动态分配,1-8000
                    nvarchar
:一个字节存一个汉字,动态分配,1-4000
F   文本和图形数据类型
    text   ntext   image
G   时间日期数据类型
        1   datetime/smaldatetime:
时间日期的结合体
H   货币数据类型
        1    money/mallmoney
I   用户自定义数据类型
       
语法:
sp_addtype
数据类型,数据名称,约束
例:use master
exec sp_addtype birthday,datetime,'null/not null'
    SQL语言
   
A   数据定义语言
          1   create:
创建
              1创建数据库和表:
               
例:
                --
创建数据库
                create database --
关键词
                student--
库名
                 on--
库文件
                 (name='stu',filename='f:/f/stu_dat.mdf')
                  log on--
日志文件
                 (name='stulog',filename='f:/f/stu_log.ldf')
              --
创建表
                  create table --
关键词
                  stu--
表名
                  (stuno varchar(10),stuname varchar(10),stuage int,stusex char)--
表内的每一个字段
        2   alter

           
1修改数据库
              alter database--
关键词
               student--
库名
                  add--
添加文件
                  remove--
删除文件
                  modify--
更改文件
            
2修改表
               add/drop/
                
       
3   drop:删除
              drop database student
stu--数据库名
              drop database stu,stu--
表名
              drop database student.dbo.stu--
删除别的库内的表
     B    
数据操纵语言

          1   
插入数据:insert into
               values:
               
使用:
                   use student
                   insert into values('1001','
张三','1988-11-15')
         2     select
查询子句
              
例:
                use student
                insert into
                 select --
查询
                 top 5 --
5
                 stuno,stuname,stusex,stutime--
查询的列
          3    
更新数据
              
例:
update --
关键词
                     student--
表名
                      set --
每一项关键词
                      stuname='
周学良'stuage='21'--每一项
                      where--
条件关键词
                      stuno='5158'--
条件构成
           
注意:这是更新单条数据;更新多条数据:例:把每个人的成绩都加10
                  
那么每一项就为:score=score+10
         4    
删除数据
              1例:
delete from
                  student--
表名
                  where stuno='5158'--
删除条件
                
2删除全部记录:truncate student
         5    
查询数据
              1选择列
                  
例:use student
                        Select stuno,stuname,stuage
             
2 使用‘*’查询所用列
                    
例:use student—库名
                           Select*from stu—
表名
              
3选择行            
                   
where子句
               
例:
                      Use student
                     Select stuno,stuname from stu
                          Where stuno>’20’ and stuno<’30’
                  
          
使用distinct 消除重复
                   select distinct sno from score
             
使用 in    条件为。。。
             
例:select degree from score
where cno in('3-245')
         6   
查询结果排序
              1使用order
select*from score
order by—
关键词
degree—
degree排序
desc
升序/asc降序
                
2使用top 查询前n行或前n%行的数据
                         select top 4 degree,sno,cno from score
order by degree desc
7
聚合函数
使用group by分组
例:
select degree
from score
group by degree
order by degree desc
注意:分组条件用having而不用here
例:   查询‘3-105’号课程的平均分。228
SELECT cno,AVG(DEGREE)AS
平均分
FROM [score]
GROUP BY cno
HAVING Cno='3-105'
   
1avg—平均函数
           select avg(degree),sno,cno
from score
group by sno,cno,degree
order by degree desc—
degree降序排列
2sum—求和函数
3max—求最大
4min—求最小
5count—返回组中项目的数量
   
例:select count(sno) from score
       
运行结果:12
例:去掉重复的
select count(distinct sno) from score
  
运行结果:6

C     
数据控制语言
                    1   grant语句
                         作用:授予允许用户操作数据库的语句权限和对象权限
                  
例:给用户maryjohn授予建库和建表的权限
                       Crant create database,crease table to mary,john
                   2     deny
            
作用:安全系统中创建的一项,已拒绝给当前数据库内的安全账户授予权限并防止安全账户通过其组或角色成员资格继承权限。
           
例:对多用户拒绝多个语句权限,用户不能使用create database create table语句,除非给他们显示授予权限
Deny create database,create table to mary,john,[hygj]
3 revok
作用:用以删除以前在当前数据库内的用户上授予和拒绝的权限
                  
                     
                              

 

 

 

原创粉丝点击