您的位置:新葡亰496net > 网络数据库 > 新葡亰496net用SQL语句建库建表建约束,用代码创

新葡亰496net用SQL语句建库建表建约束,用代码创

发布时间:2019-06-21 13:01编辑:网络数据库浏览(94)

    1、数据库简介
    -》解决的问题:持久化存储,优化读写,保证数据的有效性
    -》关系型数据库:
    基于E-R模型(数据关系模型)
    使用sql语言进行操作
    -》分类:文档型sqlite,服务型
    -》数据库设计
    三范式:列不可拆分,唯一标识,引用主键
    关系及存储:
    1对1:1个对象A对应着1个对象B,1个对象B对应着1个对象A
    关系可以存入A或B对象中(例如:国家规定的夫妻关系)
    1对多:1个对象A对应着n个对象B,1个对象B对应着1个对象A
    关系存入B对象中(学生和班级,一个班级可以有多个学生,但一个学生只许有一个班级)
    多对多:1个对象A对应着n个对象B,1个对象B对应着m个对象A
    关系存入新建的一个关系表中(学生和选课, 1个学生可以有多门选课,一门选课可以有多个学生)

    来源:

    一 :创建数据库

    创建数据库,创建表,设置主键
    数据库的分离和附加
    MS SQLServer的每个数据库包含:
    1个主数据文件(.mdf)必须。
    1个事务日志文件(.ldf)必须。
    新葡亰496net用SQL语句建库建表建约束,用代码创设和删除数据库和表。可以包含:
    任意多个次要数据文件(.ndf)
    多个事务日志文件
    文件组:可将多个数据文件逻辑的分到一组,方便日后管理维护(备份、将表建在指定的文件组上等等。)

    SQLServer数据库的基础知识的回顾:

    2、登录方式
    -》开启服务
    -》登录方式及设置
    -》添加用户名
    -》连接局域网中的数据库:启用TCP/IP协议

    1、数据库简介

    创建一个数据文件和一个日志文件(MySchool)

    --1.创建一个数据库(直接创建一个数据库,没有设置任何特殊选项,都是使用默认的。)

      1)主数据文件:*.mdf

    3、界面操作
    -》数据库:创建,删除,分离,附加,生成脚本(架构,数据)
    -》表:创建、修改、删除
    字段类型介绍:int,bit,datetime,decimal(5,2),char/varchar/nvarchar
    字符串类型n的区别:有n表示unicode编码,每个字符占一个字节;
    没有n表示非unicode编码,英文或数字占一个字节,中文占两个字节
    字符串类型var的区别:有var表示可变长度
    没有var表示不可变长度,如果长度不够,会在末尾补空格
    如果选择int值时,可以设置标识:此列的值为系统帮助维护,更轻松的实现唯一标识
    -》约束:实现数据的有效性检查
    主键,非空,惟一,默认,检查,外键
    -》示例:
    班级表ClassInfo(编号cId,名称cTitle nvarchar(10))
    学生表(编号,姓名,性别,出生日期,电话,邮箱,班级)

    -》解决的问题:持久化存储,优化读写,保证数据的有效性
    -》关系型数据库:
    基于E-R模型(数据关系模型)
    使用sql语言进行操作
    -》分类:文档型sqlite,服务型
    -》数据库设计
    三范式:列不可拆分,唯一标识,引用主键
    关系及存储:
    1对1:1个对象A对应着1个对象B,1个对象B对应着1个对象A
    关系可以存入A或B对象中(例如:国家规定的夫妻关系)
    1对多:1个对象A对应着n个对象B,1个对象B对应着1个对象A
    关系存入B对象中(学生和班级,一个班级可以有多个学生,但一个学生只许有一个班级)
    多对多:1个对象A对应着n个对象B,1个对象B对应着m个对象A
    关系存入新建的一个关系表中(学生和选课, 1个学生可以有多门选课,一门选课可以有多个学生)

    create database MySchool
    on primary      --默认属于primary主文件组,可省略
    (
    --数据文件的具体描述

    create database MyDatabase2;

          2)次要数据文件:*.ndf

    4、脚本操作
    -》不区分大小写,字符串使用单引号,末尾不需要加分号
    -》按照功能分类:
    DDL:数据定义语言,用于进行各种数据库对象的创建,主要操作包括create、alter、drop
    DML:数据管理语言,用于对表数据的添加、修改、删除、查询,主键操作包括insert、update、delete、select
    DCL:数据控制语言,用于进行权限分配等
    -》注释:--单行注释,/**/多行注释
    -》数据库:创建、删除
    可以通过查看master数据库中的sysdatabases表,来了解当前存在的数据库
    create database 数据库名
    on primary
    (
    name='stuDB_data', -- 主数据文件的逻辑名称
    filename='D:stuDB_data.mdf', -- 主数据文件的物理名称
    size=5mb, --主数据文件的初始大小
    maxsize=100mb, -- 主数据文件增长的最大值
    filegrowth=15%--主数据文件的增长率
    )
    log on
    (
    name='stuDB_log',
    filename='D:stuDB_log.ldf',
    size=2mb,
    filegrowth=1mb
    )

    2、登录方式
    -》开启服务
    -》登录方式及设置
    -》添加用户名
    -》连接局域网中的数据库:启用TCP/IP协议

    name = 'MySchool_data'    --主数据库文件的逻辑名称
    filename = 'D:projectMySchool_data.mdf', --主数据库文件的物理名称
    size = 5MB,     --主数据库文件的初始大小
    maxsize = 100MB,     --主数据库文件增长的最大值
    filegrowth = 15%     --主数据文件的增长率

    --2.删除数据库

      3)日志文件:*.ldf

    3、界面操作
    -》数据库:创建,删除,分离,附加,生成脚本(架构,数据)
    -》表:创建、修改、删除
    字段类型介绍:int,bit,datetime,decimal(5,2),char/varchar/nvarchar
    字符串类型n的区别:有n表示unicode编码,每个字符占一个字节;
    没有n表示非unicode编码,英文或数字占一个字节,中文占两个字节
    字符串类型var的区别:有var表示可变长度
    没有var表示不可变长度,如果长度不够,会在末尾补空格
    如果选择int值时,可以设置标识:此列的值为系统帮助维护,更轻松的实现唯一标识
    -》约束:实现数据的有效性检查
    主键,非空,惟一,默认,检查,外键
    -》示例:
    班级表ClassInfo(编号cId,名称cTitle nvarchar(10))
    学生表(编号,姓名,性别,出生日期,电话,邮箱,班级)

    )
    log on
    (
    --日志文件的具体描述,各参数含义同上

    drop database MyDatabase2;

      每个数据库至少要包含两个文件:一个数据文件和一个日志文件

    4、脚本操作
    -》不区分大小写,字符串使用单引号,末尾不需要加分号
    -》按照功能分类:
    DDL:数据定义语言,用于进行各种数据库对象的创建,主要操作包括create、alter、drop
    DML:数据管理语言,用于对表数据的添加、修改、删除、查询,主键操作包括insert、update、delete、select
    DCL:数据控制语言,用于进行权限分配等
    -》注释:--单行注释,/**/多行注释
    -》数据库:创建、删除
    可以通过查看master数据库中的sysdatabases表,来了解当前存在的数据库
    create database 数据库名
    on primary
    (
    name='stuDB_data',  -- 主数据文件的逻辑名称
    filename='D:stuDB_data.mdf', -- 主数据文件的物理名称
    size=5mb, --主数据文件的初始大小
    maxsize=100mb, -- 主数据文件增长的最大值
    filegrowth=15%--主数据文件的增长率
    )
    log on
    (
    name='stuDB_log',
    filename='D:stuDB_log.ldf',
    size=2mb,
    filegrowth=1mb
    )
    -》使用数据库:use 数据库名
    -》表:创建、修改、删除
    通过select * from sysobjects  where xtype='U'可以查看所有存在的表
    多个列间使用逗号分隔
    主键:primary key
    非空:not null
    惟一:unique
    默认:default()
    检查:check()
    外键:foreign key(列名) references 表名(列名)

    name = 'MySchool_log',    --主数据库文件的逻辑名称
    filename = 'D:projectMySchool_data.ldf', --主数据库文件的物理名称
    size=2MB,     --主数据库文件的初始大小
    filegrowth = 1MB    --主数据文件的增长速度

    --msSqlServer不区分大小写

     如何查看SQL Server的帮助==================快捷键F1

    5、表数据的操作
    -》简单查询:select * from 表名
    -》增加数据:insert into 表名(列名) values(值)
    说明1:要求值的列名与值要位置对应
    说明2:如果所有更都插入值,可以省略列名部分
    扩展:一次性增加多行,可以直接在values后面拼接多个数据,之间用逗号分隔
    -》修改数据:update 表名 set 列名1=值1,列名2=值2... where ...
    -》删除数据:delete from 表名 where ...
    清空:truncate table 表名
    说明:from关键字可以省略不写
    通常实现:逻辑删除,物理删除
    -》常用辅助命令及快捷键
    set statistics time on/off:在消息栏显示详细执行时间
    ctrl e执行
    ctrl r隐藏消息栏
    ctrl l计划任务,对sql语句进行分析

    )
    go

    DROP DATABASE MYSECONDDATABASE2;

     

    -》作业:科目表(编号,标题)
    成绩表(编号,学生编号,科目编号,分数)
    向表中插入一些示例数据

     

    --3.创建数据库的时候设置一些参数选项

    一、创建文件夹 

    创建多个数据文件和多个日志文件(employees)
    create database employees
    on primary
    (
    --主数据库文件的具体描述
    name='employee1',
    filename='D:projectemployee1.mdf',
    size=10,
    filegrowth=10%
    ),
    (
    --次要数据库文件的具体描述
    name='employee2',
    filename='D:projectemployee2.mdf',
    size=20,
    maxsize=100,
    filegrowth=1
    )          
    log on
    (
    --日志文件1的具体描述
    name='employeelog1',
    filename='D:projectemployee1_log.ldf',
    size=10,
    maxsize=50,
    filegrowth=1
    ),
    (
    --日志文件2的描述
    name='employeelog2',
    filename='D:projectempolyee2_log.ldf',
    size=10,
    maxsize=50,
    filegrowth=1
    )
    go

    create database MyDatabase2

    exec sp_configure 'show advanced options',1

     

    on primary --配置主数据文件的选项

    go

     

    (

    reconfigure

    二:删除数据库
    usr master
    if exists(select * from sysdatabases where name='....')
    drop database ......

    name='MyDatabase2', --主数据文件的逻辑名称

    go

     

    filename='F:DATABASE1MyDatabase2.mdf', --主数据文件的实际保存路径

    exec sp_configure 'xp_cmdshell',1

     

    size=5MB, --主文件的初始大小

    go

    三:创建和删除表

    maxsize=150MB, --最大容量

    reconfigure

    use MySchool    --在Myschool中创建表
    go

    filegrowth=20% --以20%扩容

    go

    create table Student
    (
    StudentNo int not null.   --学号,int 类型,不允许为空
    LoginPwd nvarchar(50) not null,  --密码 nvarchar类型,不允许为空
    StudentName nvarchar(50) not null, --名字,nvarchar类型,步允许为空
    Sex bit not null,   --性别,取值0或1
    Email nvarchar(20)   --邮箱,可为空
    )
    go

    )

    exec xp_cmdshell 'mkdir E:新建文件'

    删除表
    use MySchool
    go
    if exists(select * from sysobjects where naem='Student')
    drop table Student
      
                                                                                                                                                                                                                                                                                                                                                                                                      
    四:创建和删除约束
    主键约束(Primary Key Constraint)
    非空约束(Not Null)
    唯一约束(Unique Constaraint)
    检查约束(Check Constaraint)
    默认约束(Default Constaraint)
    外建约束(Foreign Key Constarint):用于在两表之间建立关系,需要指定引用主表的哪一列

    log on --配置日志文件的选项

    go

    alter table 表名
    add constraint 约束名  约束类型  具体的约束说明

    (

     

    例:
    --添加主键约束
    alter table Student
    add constraint PK_StudentNo Primary Key(StudentNo)

    name='MyDatabase2_log', --日志文件的逻辑名称

    二、创建数据库

    --添加唯一约束
    alter table student
    add constraint UQ_IdentityCard unique(IdentityCard)

    filename=' F:DATABASE1MyDatabase2_log.ldf', --日志文件的实际保存路径

    1.例子: 

    --添加默认约束
    alter table Student
    add constraint DF_Address default('地址不详') for address

    size=5mb, --日志文件的初始大小

     --判断,如果有这个数据库则进行删除

    --添加检查约束
    alter table Student
    add constraint CK_BornDate checke(BornDate>='1980-01-01')

    filegrowth=5mb --超过默认值后自动再扩容5mb

    if exists(select * from sysdatabases where name='MySchool')

    --添加外键约束(Result是从表,Student是主表)
    alter table Result
    add constraint FK_StudentNo
    foreign key(StudentNo) references Student(StudentNo)
    go

    )

    begin

    删除约束
    alter table 表名
    drop constraint 约束名

    --在数据库中创建一个表

    drop database MySchool

    例:删除学生表中的默认约束
    alter tablte Student
    drop constraint DF_Address

    use MyDatabase2 --将代码环境切换到MyDatabase2下

    end 

    怎样向已存在数据的表中添加约束
    alter table Employee with nocheck ( whit nocheck不向已存在的数据约束)
    add constraint

    create table Departments ---创建表,设置表中列

     --创建数据库

    向已存在的数据表中插入一列
    alter table 表名
    add 列名 数据类型  null

    (

    create database MySchool

     

    AutoID int identity(1,1) primary key, --自增 主键

    on primary

     

    DepartmentName nvarchar(50) not null -- 可变长度,每个字符占用两个字节 最多50个字节

    (

    在数据库中用SQL语句创建文件夹(例:在E盘创建一个project文件夹)

    )

    --数据文件的具体描述

    exec sp_configure 'show advanced option',1

    --通过代码,删除MyDatabase2 数据库下的某些表

     name='MySchool_data',                 --主数据文件的逻辑名称 必须写

    go

    use MyDatabase2

     filename='E:MySchool_data.mdf',   --主数据文件的物理名称 必须写

    reconfigure

    drop table Departments

     size=5mb,                                 --主数据文件的初始大小

    go

    ---创建一个员工表
    --<员工表>:员工Id,身份证号,姓名,性别,入职日期,年龄,地址,电话,所属部门、Email
    create table Employees
    (
    EmpID int identity(1,1) primary key,
    EmpIDCard varchar(18) not null,
    EmpName nvarchar(50) null,
    EmpGender bit not null,
    EmpJoinDate datetime,
    EmpAge int,
    EmpAddress nvarchar(300),
    EmpPhone varchar(100),
    DeptID int not null,
    EmpEmail varchar(100)
    )

      maxsize=100mb,                      --主数据文件增长的最大值

    exec sp_configure 'xp_cmdshell',1

    drop table Employees

      filegrowth=15%                       --主数据文件的增长率

    go

    )

    reconfigure

    log on

    go

     (

    exec xp_cmdshell 'mkdir D:project'

    --日志文件的具体描述,各参数含义同上

     

    name='MySchool_log',

     filename='E:MySchool_log.ldf',

     size=2mb,

    filegrowth=1mb

     )

     go

    三、创建表

     2 use MySchool --将当前数据库设置为MySchool,以便在MySchool里创建表

     3 go

     4 --判断是否存在表,存在则删除

     5 if exists (select * from sysobjects where name='Student')

     6 drop table Student

     7---创建Student表

     8 create table Student   

     9 (

    10  StudentNo int identity(1,1)  primary key not null,  --学号 自增 主键,非空

    11  loginpwd nvarchar(20) not null,

    12  StudentName nvarchar(20) not null,

    13  Sex bit default'女' not null,      --性别,取值0,1

    14  GradeId int not null,

    15  Phone nvarchar(50) null,

    16  Address nvarchar(100) null,

    17  BornDate datetime not null,

    18  Email nvarchar(20) null,

    19  IdentityCard varchar(18) not null

    20  )

    21 go

    四、创建约束

     

    语法:

     

     1 alter table 表名

     

    2 add constraint 约束名 约束类型 具体的约束说明 

     

     

    例子:

     

    1、添加默认约束(默认'地址不详')

     

    1 alter table Student

     

    2 add constraint df_address default('地址不详') for address

     

     

    2、添加检查约束(要求出生在1996年10月26日)

     

    1 alter table Student

     

    2 add constraint ck_BornDate check (BornDate >='1996-10-26')

     

     

    3、添加唯一约束(身份证全世界只有一个)

     

     1 alter table Student

     

    2 add constraint uq_IdentityCard unique (IdentityCard) 

     

     

     

    4、添加主键约束

     

     1 alter table Student

     

    2 add constraint pk_StudentNo primary key(StudentNo) 

     

     

    5、添加外键约束(主表 Student 和从表 REsult建立关系,关联列StudentNo)

     

    1 alter table Result

     

    2 add constraint fk_StudentNo

    3     foreign key(StudentNo) references Student (StudentNo)

     

    五、sql操作数据库数据的实现(增、删、查、改)

     

    (一)插入数据

     

    语法:

     

            insert  into  目标表(新表)

     

            select '列名' union

     

    eg

     

            insert  into  card(ID,password)

     

            select  ‘0023-ABC’,‘ABC’  union

     

    (二)增加数据

     

    语法:

     

        insert   into   表名

     

        values (‘   ’,‘     ’)

     

    eg

     

        insert  into  card

     

        values (‘0023-ABC’,‘ABC’)

     

    (三)修改数据

     

    语法:

     

         update   表名     set    行名

     

         where     列名

     

    eg

     

        update   card    set     password=‘pwd’

     

        where ID=‘0023-ABE’

     

    (四)删除数据

     

    语法:

     

         delete   from   表名

     

         where   行名

     

    eg

     

        delete   from   card

     

        where   ID=‘0023-ABE’

     

    (五)查看数据

     

    语法:

     

         select  *   from   表名  

     

    eg

     

        select  *   from  student

     

    本文由新葡亰496net发布于网络数据库,转载请注明出处:新葡亰496net用SQL语句建库建表建约束,用代码创

    关键词: