美文网首页
T-SQL语句

T-SQL语句

作者: 璎珞纨澜 | 来源:发表于2019-10-12 14:49 被阅读0次

    数据库常用术语

    • 关系:关系即二维表,每一个关系有一个关系名,就是表名。
    • 记录:表中的行
    • 域:即取值范围
    • 关联:不同数据表之间的数据彼此联系的方式
    • 关键字:属性或属性的组合,可以用于唯一标识一条记录。
    • 外部关键字:如果表中的一个字段,不是本表中的关键字,而是其他表中的关键字,称之为外部关键字。
    • 数据冗余:数据库表中的重复数据。
    • 数据完整性:指数据的一致性。
    • 数据库操作异常:
      • 插入异常
      • 更新异常
      • 删除异常
        插入、更新、删除操作导致当两个关联的表产生矛盾则会产生异常。
    • SQL 与 T-SQL的区别:
      • SQL:关系型数据库的标准语言,区别与高级语言sql语言只是数据库能够识别的一些指令。
      • T-SQL:在标准sql的基础上加强,除了标准sql所支持的命令外还对于sql进行了补充,提供了类似高级语言的基本功能:变量申明、流程控制、功能函数等。
    • T-SQL包括以下内容:
      • DQL(Data QueryLanguage) 数据查询语言:用来查询数据库中的数据。
      • DML(Data Manipulation Language) 数据操纵语言:用来插入、删除、修改数据库中的数据。
      • DCL (Data Control Language) 数据控制语言:用来控制数据库的存取许可、存取权限等。
      • DDL(Data Definition Language) 数据库定义语言:用来定义数据库、数据库对象和定义其列,大部分以create开头。
      • 说明、类型函数、其他命令等等。。

    T-SQL创建数据库

    create database testdb1
    on
    (
      name=testdb,
      filename='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb.mdf',
      size=6,
      maxsize=12,
      filegrowth=10%
    )
    log on
    (
      name=testdb_log,
      filename='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_log.ldf',
      size=1,
      maxsize=8,
      filegrowth=10%
    )
    
    • 创建数据库需要定义数据库文件名,数据库文件存放位置,初始值,最大值,增量值。
    • 创建数据库需要定义数据库日志文件名,数据库日志文件文件存放位置,初始值,最大值,增量值。

    T-SQL创建和删除表

    1. 创建表

    创建职工表:

    use testdb
    create table Employee
    (
        EmpId int,
        EmpName text,
        EmpAge int,
        EmpPay money,
        EmpJob text,
        EmpAddress text
    )
    

    创建教师表:

    use testdb
    create table Teacher
    (
        教师编号 int,
        教师姓名 text,
        教师职称 text,
        教师工资 money
    )
    

    创建学生表:

    use testdb
    create table 学生表
    (
        学生编号 int,
        学生姓名 varchar(50),
        学生年龄 int,
        家庭住址 text
    )
    
    1. 删除表
    use testdb
    drop table 学生表
    

    T-SQL修改数据库与数据表

    1. 为数据库增加数据文件和事物日志文件
    alter database testdb
    add file
    (
        name=testdb2,
        filename='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb2.mdf',
        size=6
    )
    
    alter database testdb
    add log file
    (
        name=testdb2_log,
        filename='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb2_log.ldf',
        filegrowth=10%
    )
    
    1. 删除数据库文件和事物日志文件

    把刚才增加的两个文件删除:

    alter database testdb
    remove file testdb2
    
    alter database testdb
    remove file testdb2_log
    
    1. 修改数据库名称
    exec sp_rename "学生表","Student"
    
    1. 为表增加字段或者删除字段
    • 添加字段
    use testdb
    alter table Teacher
    add 家庭住址 text
    alter table Teacher
    add email varchar(50) default 'xxx@qq.com'
    

    添加字段步骤:
    (1)打开testdb数据库
    (2)获取修改Teacher表的权限
    (3)增加字段

    • 删除字段
    use testdb
    alter table Teacher
    drop column 家庭住址
    
    删除有约束的字段会执行报错

    email字段有默认值的约束,所以需要先删除约束才能删除该字段。

    use testdb
    alter table Teacher
    drop constraint [DF__Teacher__email__4AB81AF0]
    alter table Teacher
    drop column email
    
    1. 修改字段属性
    use testdb
    alter table Teacher
    alter column 教师职称 varchar(60)
    

    T-SQL 插入表

    use testdb
    insert into Teacher(教师编号,教师姓名,教师职称,教师工资) values(1,'王老师','高级教师','5000')
    insert into Teacher(教师编号,教师姓名,教师职称,教师工资) values(2,'刘老师','高级教师','5000')
    insert into Teacher(教师编号,教师姓名,教师职称,教师工资) values(3,'江老师','中级教师','3000')
    insert into Teacher(教师编号,教师姓名,教师职称,教师工资) values(4,'李老师','中级教师','3200')
    insert into Teacher(教师编号,教师姓名,教师职称,教师工资) values(5,'黄老师','高级教师','4000')
    

    列属性如果不允许为null值,插入的时候必须有值,否则会报错无法插入。

    T-SQL 查询表

    1. select * from dbo.Teacher
      * 是通配符,代表查询所有字段。

    2. select 教师编号,教师职称 from dbo.Teacher
      只查询教师编号和教师职称字段,不同字段的名称用逗号隔开。

    3. 按照某个字段的范围查询


      查询教师工资低于4000的记录
    4. 按照某几个字段逻辑运算结果查询
      (1)条件与
      select * from dbo.xxx where 条件1 and 条件2 and 条件3 and...
      (2)条件或
      select * from dbo.xxx where 条件1 or 条件2 or 条件3 or...
      (3)条件非
      select * from dbo.xxx where !条件1
      select * from dbo.xxx where not 条件1
      例如:select * from dbo.Teacher where not 教师工资>4000
      也等效于select * from dbo.Teacher where 教师工资!>4000
      其实,我们可以在where子句中使用多个条件语句进行运算得到查询条件,且其规则遵循运算符优先级:
      (1)括号
      (2)Not(非)、正号、负号
      (3)乘、除
      (4)加、减
      (5)比较运算符
      (6)And
      (7)Or

    5. 使用 in 查询多个状态值
      查询教师编号为2、3、4的记录:
      select * from dbo.Teacher where 教师编号 in (2,3,4)
      查询教师姓名不为刘老师、李老师、黄老师的记录:
      select * from dbo.Teacher where CONVERT(VARCHAR(4000),教师姓名) not in('刘老师','李老师','黄老师')
      注意:查询中文时,要将text(ntext)数据转换varchar(nvarchar),否则会报错 The data types text and varchar are incompatible in the equal to operator.

    6. 查询记录的某个字段是否为空值
      select * from dbo.XXX where 字段 is null
      select * from dbo.XXX where 字段 is not null

    T-SQL 更新表

    将所有的中级教师升级为高级教师,工资加1000元:

    use testdb
    update Teacher set 教师职称='高级教师',教师工资=教师工资+1000 where 教师职称='中级教师'
    

    33

    T-SQL 删除表

    1. 删除表中的所有记录
    use testdb
    delete from Teacher
    
    1. 按照条件删除表中记录
    use testdb
    delete from Teacher where 教师工资<4000
    

    2-22

    相关文章

      网友评论

          本文标题:T-SQL语句

          本文链接:https://www.haomeiwen.com/subject/owrqmctx.html