zoukankan      html  css  js  c++  java
  • 【12】简单SQL语句

    --------------------------------------------
    -- SQL语句
    --------------------------------------------
    -- 数据定义语言(DDL)
    -- 数据操作语言(DML)
    -- 数据控制语言(DCL)
    
    
    -- 简单的增删改查(CRUD)
    -- 增加数据
    -- insert into 表名(字段名, 字段名, ...) values(值1, 值2, ...);
    insert into ConstraintExercise.StuInfo2
        (stuId, stuName, stuAge, stuSex, courseId) 
    values
        -- (1, N'赵晓虎', 30, 'm', null);
        (1, N'赵晓虎', 30, 'm', NULL);
    -- 查询数据(简写)
    -- select 字段1, 字段2, ... from 表名;
    select * from ConstraintExercise.StuInfo2;
    
    
    insert into [ConstraintExercise].[StuInfo2]
        (stuId, stuName, stuAge, stuSex, courseId)
    values
        (2, '牛亮亮', 35, 'f', NULL);
    
    -- 修改数据
    -- update 表名 set 字段=值,字段=值,... where 条件;
    update ConstraintExercise.StuInfo2 set stuSex='m' where stuId=2;
    update ConstraintExercise.StuInfo2 set stuName='牛亮亮' where stuId=2;
    
    update ConstraintExercise.StuInfo2 set stuName=N'NULL';
    update ConstraintExercise.StuInfo2 set stuName=NULL;
    
    alter table ConstraintExercise.StuInfo2
    drop constraint UQ_StuInfo2_stuName;
    
    -- 删除数据
    -- delete from 表 where 条件;
    delete from ConstraintExercise.StuInfo2;
    
    
    -- 二进制截断
    insert into ConstraintExercise.StuInfo2(stuId, stuName) values(3, N'0123456789');
    
    select * from  ConstraintExercise.StuInfo2
    
    -- 删除
    -- delete from 表 where 。。。
    -- 删除数据库对象
    --drop table 表
    --drop database 数据库
    --drop view 视图
    --drop schema 架构
    
    -------------------------------------------
    -- 查询
    -------------------------------------------
    -- 查询的基本结构(烂熟)
    -- 查询的详细步骤(烂熟)
    -- 案例(举一反三)
    
    -- 标准的SQL语句
    
    select top | distinct
        字段
        , 表达式
        , 函数
        , 标量子查询
        , 常量
    from
        数据源
    where
        基本筛选
    group by
        分组字段
    having
        二次筛选
    order by
        排序字段依据;
    
    -- SQL语句的执行顺序
    -- 
    -- 获得数据源(from)
    -- 进行第一次筛选(where)
    -- 对筛选得到的结果进行分组(group by)
    -- 可以对分组后的结果进行再删选一次(having)
    -- 对所有数据进行整理(select)
    -- 对结果进行排序(order by)
    
    
    -- 添加一个分数表
    go
        create schema Exercise authorization dbo;
    go
    create table Exercise.ScoreTbl
    (
        scoreId        int identity(1,1) not null primary key,
        stuId        int not null,
        scoreNum     int check(scoreNum>=0 and scoreNum<=100),
        scoreLast    int check(scoreLast>=0 and scoreLast<=100),
        
        -- foreign key(stuId) references Exercise.StudentTbl(stuId)
    );
    
    -- 添加分数数据 2008+
    insert into Exercise.ScoreTbl(stuId, scoreNum, scoreLast)
    values(1,60,55),(2,75,40),(3,95,85),(5,86,75),(6,90,95);
    
    insert into Exercise.ScoreTbl(stuId, scoreNum, scoreLast)
    values(7, 45, 99)
    
    select * from Exercise.ScoreTbl;
    
    select
        *
        , scoreNum * .3 + scoreLast * .7
    from
        Exercise.ScoreTbl
    where
        scoreNum * .3 + scoreLast * .7 >= 60
        and
        scoreNum < 60;
    
    -- 找姓牛的人
    -- 单字符匹配    _
    -- 多字符匹配    %
    -- stuName like '牛%'
    
    -- 引用对象的方式可以是
    -- 服务器.数据库.架构.表
    select * from TestDataBase..Student;
    select * from TestDataBase..Course;
    select * from TestDataBase..Score;
    
    -- 叫纪明X
    select * from TestDataBase..Student where stuName like '纪明%';
    
    insert into TestDataBase..Student
    (stuName, stuSex, stuBirthdate, stuStudydate, stuAddress, stuEmail, stuPhone, classId)
    values
    ('纪明闪闪', 'm', '1990-1-1 00:00:00', '2014-7-7 17:04:52.123', N'上帝细节128号', 'jmss@jmss.com', '12345678909', 2);
    
    -----------------------
    -- [] [a-z] [^a-z]
    -- stuName like '杨[中重]科'
    -- 如果要匹配 asp_net
    -- bookName like 'asp[_]net'
    
    -- stuName like '%虎%'
    
    -- age 在 19 到 26 岁
    -- datediff(year, 开始的时间, 结束的时间)
    select datediff(YEAR, stuBirthdate, CURRENT_TIMESTAMP),* from TestDataBase..Student
    where
        stuSex = 'f'
        and
        -- datediff(YEAR, stuBirthdate, CURRENT_TIMESTAMP) between 19 and 26;
        datediff(YEAR, stuBirthdate, CURRENT_TIMESTAMP) in (19,26,23)
    
    
    
    -------------------------
    -- 空值处理
    -------------------------
    select * from ConstraintExercise.StuInfo2;
    
    select * from ConstraintExercise.StuInfo2 where stuAge <> null;
    -- SQL Server 采用三值逻辑 真 假 不知道
    
    -- 判断为空使用 is null 或 is not null  再或 not(... is null)
    
    select * from ConstraintExercise.StuInfo2 where stuAge is not null;
    
    -- isnull(字段, 数据)
    select *, isnull(stuAge, -1) from ConstraintExercise.StuInfo2;
  • 相关阅读:
    HTML5 拖放(Drag 和 Drop)详解与实例
    JS中的六大数据类型
    关于创建本地docker仓库
    关于使用国内dock仓库,网易、DaoCloud
    关于Docker开通远程访问端口2375
    多个消费者监听同一个队列
    SQLite -附加数据库
    解密JDK8 枚举
    LoraLU
    深入理解display属性
  • 原文地址:https://www.cnblogs.com/lolitagis02/p/8159225.html
Copyright © 2011-2022 走看看