网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL语言

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为大家收集整理了SQL语言提供大家参考,希望对大家有所帮助!


    对表名列名大小写不敏感,对内容则大小写敏感
    每句以分号结束,可以分多行写
    -----------------------------------------------
    建立数据库:
    mssql语法:
    createschemaauthorization创建者名//建立数据库,标识创建者名
    db2、xdb、dbaseiv语法:
    createdatabase数据库名;//建立数据库,标识数据库名
    -----------------------------------------------
    表操作:
    *****基本表的建立*****:
    createtable学生表(char(6)notnullunique,//非空且取值唯一
    char(6)unique,
    成绩float,
    导师编号char(6),//假设有一个导师编号为主码的导师表
    primarykey(),//以为这个表的主码
    foreignkey(导师编号)references导师表);//把导师表的主码作为这个表的外码
    *****修改基本表结构*****:
    增加一个属性列:新增的属性列值都为空
    altertable学生表
    add年龄int;
    改变列的数据类型:原有数据可能破坏
    altertable学生表
    modifyint;
    altertable学生表
    modifychar(6);
    取消列的完整性约束:
    altertable学生表
    dropunique();//变成可以同名
    不允许删除任何属性列
    如果一定要去掉某属性列,只能其它属性列复制到一个新表中,然后删除原表,再将新表重命名为原表名。
    *****删除基本表*****:数据、索引和视图都自动删除
    droptable表名;
    *****拷贝基本表*****:
    (1)首先用create要建立一个新表
    (2)选择旧表中的属性列中的数据到新表属性列中:新旧属性列必须一一对应,列名可以不同,但列类型一定要相同
    insertinto新表(列1,列2,列3)
    select,,导师编号
    from学生表
    --------------------------------------------------
    数据类型:括号中参数可以省略
    bit整数型,小等于8位时1字节,以此类推。TRUE转换为1,FALSE转换为0,可取值为NULL
    tinyint整数型,1字节,0~255
    smallint整数型,2字节,-32768~32767
    int整数型,4字节,-2147483648~2147483647,常用
    bigint整数型,8字节,-9223372036854775808~9223372036854775807,不会自动转化为此类型
    float(28)浮点型,最大53缺省24。1~24时,4字节,精度7,25~53时,8字节,精度15
    real浮点型,4字节,等价于float(24)
    decimal(12.9)小数型,前面是总位数,最大38缺省18,后面是小数位数,小于总位数。存储字节随总位数多少而变
    numeric(12,9)数字型,等价于decimal
    char(n)固定长度字符型,n最大8000,n字节,用于列数据项的大小一致
    varchar(n)可变长度字符型,n最大8000,实际长度+2字节,用于列数据项
    的大小差异相当大
    varchar(max)可变长度字符型,最多输入2147483647字节,实际长度+2字节,用于列数据项大小相差很大,且可能超过8000字节
    nchar(n)固定长度unicode字符型,n最大4000,n*2字节,用于列数据项的大小可能相同
    nvarchar(n)可变长度unicode字符型,n最大4000,实际长度*2+2字节,用于列数据项的大小可能差异很大
    nvarchar(max)可变长度unicode字符型,最多输入2147483647字节,实际长度*2+2字节,用于列数据项大小相差很大,且可能超过8000字节
    binary(n)固定长度二进制型,n最大8000,n字节,用于列数据项的大小一致
    varbinary(n)可变长度二进制型,n最大8000,实际长度+2字节,用于列数据项的大小差异相当大
    varbinary(max)可变长度二进制型,最多占2147483647字节,实际长度+2字节,实际长度+2字节,用于列数据条目超出8,000字节时
    money货币型,8字节,精确到小数点后4位
    smallmoney货币型,4字节,精确到小数点后4位
    datetime日期型,4字节,1753年1月1日~9999年12月31日,精确到3.33毫秒
    smalldatetime日期型,2字节,1900年1月1日~2079年06月06日,精确到1分钟
    cursor指针型
    timestamp计数器型,8字节,含timestamp列的记录行执行插入、更新时,该计数器值就会增加。一个表只能有一个timestamp列,不能作为主键
    sql_variantsql变量型,8016字节,可以存储除varchar(max)、varbinary(max)、nvarchar(max)、xml、timestamp、sql_variant、用户定义类型以外的各种数据类型。
    uniqueidentifierID序列号型,16字节,可以存放6F9619FF-8B86-D011-B42D-00C04FC964FF格式。数据可以进行比较运算=、<>、<、>、<=、>=和是否为空运算ISNULL、ISNOTNULL
    table用于临时存储一组行以进行后续处理
    xmlxml型,用于存储xml实例,大小不超过2G
    text将淘汰,转为varchar(max)
    image将淘汰,转为varbinary(max)
    ntext将淘汰,转为nvarchar(max)
    ------------------------------------------------------
    数据操作:
    *****查询数据*****:
    一、查询全部列的全部记录:
    select*
    from学生表;
    select*
    fromaaa.dbf;//如果指定了数据库别名就可以
    二、查询部分列的全部记录:
    select,
    from学生表;
    表达式的列:
    select,2006-年龄//当前年份-年龄=出生年份,“2006-年龄”成为查询结果的列名
    from学生表;
    三、查询符合条件的部分记录,在最后加上语句
    where条件表达式
    
    (1)普通表达式:=<><=>=!=!
    where='001'
    (2)逻辑表达式:orandnot
    可
    以组合用,默认优先级从左到右,用括号改变优先级
    where='001'or'002'//或,条件在同一列。理解为并选,用in更为方便
    where='001'or='某某'//或,条件在不同列
    where成绩>80and导师编号='005'//且,一定在不同列
    wherenot'103'//非,理解为排除
    (3)特殊表达式:between-andlikeinisnullexists
    where年龄between50and55//范围内
    wherelike'高%'//字符串匹配,可以使用通配符。%表示零或多个字符,_表示任何一个字符,汉字要两个
    wherein('001','002','004')//同一列中并选,比用or直观
    where成绩isnull//为空
    where成绩exists//有值。是isnull的反意
    (4)not表达式:可以与以上各种表达式配合,代表相反
    如:not    四、特殊结果显示要求:不能使用tet、ntext、image类型
    (1)分组要求,在最后加一行
    groupby列名//列名一定要在前面的select中要显式列出,用*也不行
    having列名1>10//配合groupby使用,再对分组的结果再进行筛选。列名2要在select中
    (2)排序要求,一定加一行在最后,不论是升还是降,首先列出空值项。不能放在嵌套查询的子查询中
    orderby列名1//默认按升序排列
    orderby列名1,列名2desc//先按列名1升序排列,遇到相同时按列名2降序排列
    computesum(列名3)by列名1//配合orderby使用,再对排序结果进行函数计算。列名3要在select中
    (3)消除某列中重复的结果
    selectdistinct导师编号
    from学生表
    五、数值函数,在select后面加代码,如要在where中使用,要用嵌套
    (1)计数器
    selectcount(distinct导师编号)//有几个导师
    from学生表
    (2)最大和最小
    selectmax(成绩)成绩//后一个“成绩”指定了查询结果时显示的列名。如果省略,系统会自动给出“max(成绩)”。以下类同
    from学生表
    selectmin(成绩)
    from学生表
    (3)平均值
    selectavg(成绩)
    from学生表
    (4)求和
    selectsum(成绩)
    from学生表
    六、嵌套查询:
    (1)子查询单值返回:
    例:查询专业代号为'000101'的学生成绩
    select,,成绩
    from学生表
    where专业=
     (select专业
     from课程表
     where专业代号='000101');
    例:查询总分排在第一名后面的学生
    select,,总分
    from学生表
    where总分     (select总分
     from成绩表
     where名次=1);
    (2)子查询多值返回:
    例:查询英语大于98的学生的总分
    select,,总分
    from学生表
    where总分in
     (select总分
     from成绩表
     where英语>98);
    例:查询比英
    语考98的同学总分还要高的学生的总分
    select,,总分
    from学生表
    where总分>all//all代表子查询会返回多个值
     (select总分
     from成绩表
     where英语=98);
    (3)子查询返回true或false:如果子查询非空,返回true。子查询为空,返回false
    例:如果有学生的英语高于98,则查询这些学生的总分
    select,,总分
    from学生表
    where总分exists
     (select总分
     from成绩表
     where英语>98);
    七、连接多个表查询:多为有主码和外码关系的表
    (1)等值连接:一般连接两张表
    select学生,导师,//列名只在一张表中有的,直接写列名。
    from学生表,导师表
    where学生表.导师编号=导师表.导师编号;//两个列不一定要相同,但一定要有可比性。一般为主码和外码的关系,后面还可以有逻辑达表式和特殊表达式
    特别注意:
    select学生表.,导师表.,//如果两个表中有相同的列名,要用表名前缀。
    select学生表.*,导师表.,//学生表.*,表示列出学生表中的所有列
    (2)自身连接:一个表与自己进行连接,要为一个表取两个别名
    select别名1.课名,别名2.预修课名
    from选课表别名1,选课表别名2
    where别名1.预修课名=别名2.课名;
    (3)外连接:可以把不符合where条件的记录也都输出来,只是进行where判断的数据为空输出。加一个*号
    select学生表.*,选课表.课名
    from学生表,选课表;
    where学生表.已选课程=选课表.课名(*);//有些学生可能还没有选课,但也可以输出学生的信息,只是“课名”值为空
    (4)复合条件连接:where中有多个条件限制,可以自身连接和两表连接,连接两张以上的表时常用
    select学生表.,导师表.
    from学生表,导师表;
    where学生表.导师编号=导师表.导师编号//基本连接
    and学生表.年龄<25;//其它限制
    and导师表.年龄>50;//其它限制
    八、集合查询:只在两个查询块之间加一行就可以了
    并操作union
    交操作intersect
    差操作minus
    例:查询总分高于98,或年龄小于18岁的学生信息
    select*
    from学生表
    where总分>98
    union
    select*
    from学生表
    where年龄<18;
    *****向表写入数据*****:
    如果数据是变量,那么单引号不要
    第一种:添加整条记录
    insert
    into学生表
    values('1002122','高高仔','男',23,'计算机应用');//没有条件语句,要和表一一对应,logical、datetime、char要加单引号
    第二种:添加记录中的个别属性
    insert
    into学生表(,,专业)
    values('1002122','高高仔','计算机应用');//指定数据与表的对应
    第三种:从表中选出符合条件的记录,插
    入到另一个表中
    insert
    into三好生表
    values(,,专业)
     select,,专业
     from学生表
     where平均分>95;
    *****删除数据*****:
    (1)删除一个记录
    delete//一定是删除整行记录,所以没有列名
    from学生表
    where='001021';
    (2)删除全部记录
    delete
    from学生表;
    *****修改数据*****:
    (1)单项简单修改:
    update学生表
    set='高高仔'
    where='001'
    (2)多项条件修改:
    update学生表
    set='高高仔',成绩=100,平均分=平均分+1
    where='001'and年龄<30
    *****提交和撤消表格*****:
    commit表名//存储表格
    rollback//撤消commit后的内容
    -----------------------------------------------
    索引:
    用指针指向对应的数据,就像书的目录一样指向页数,能加快查询、有序输出和避免重复
    一个表可以建立一个或多个索引,建立后就不用管它了,系统会自动选择合适的索引,用户不必也不能选择索引。
    如果一个表的数据需要频繁增删,索引会频繁更新,所以索引要少一点。
    createindex索引名
    on表名(列名);//默认下是升序
    createindex索引名
    on表名(列名1asc,列名2desc);//列名1升序,列名2降序
    建立唯一索引:一个索引值只对应一个记录
    createuniqueindex索引名
    on表名(列名);
    删除索引:
    dropindex索引名;//不必指明是哪一个表的索引
    --------------------------------------------------
    视图:
    是一种虚表,不实际存在,不占空间。基本表的数据发生变化,视图中查询的数据也随之改变。
    目的是在查询时隐蔽表中保密数据。
    可以避免误删除,所以视图对数据的增加、删除和修改有限制。
    建立视图:放在数据字典中。建好后可以像基本表一样查询,数据库系统会自动把对视图的查询转化为对基本表的查询
    (1)简单的单表视图:
    createview学生表视图//一般视图的列名省略,默认为select中和列名。
    as//以下为子查询
    select,,专业
    from学生表
    where年龄<22;//后面不允许含有orderby和distinct语句
    (2)指定视图列名的多表视图:
    createview学生表视图(,,出生年份)//自定义更合适视图列名、多表中有同名列、函数和列表达式,要与select一一对应地把视图列名写出。
    as
    select学生id,学生表.,2006-年龄
    from学生表,导师表
    where学生表.导师编号=导师表.导师编号
    and专业='计算机';
    (3)大多数据库操作系统不允许对视图表进行insert、delete、update操作。个别可以的话,必须在建立视图的最后一行加上:
    withcheckoption
    删除视图:如果此视图为父视图,那子视图也要
    一一手动删除,不然操作子视图会出错
    dropview学生视图表;
    -----------------------------------------------------
    备份和恢复:
    BACKUPDATABASE数据库名TODISK='路径和文件名'WITHinit//备份数据库到文件。init指完全备份
    RESTOREDATABASE数据库名FROMDISK='路径和文件名'WITHnorecovery//从文件中恢复数据库。norecovery指完全恢复
    -----------------------------------------------------
    授权和收回权限:
    接受权限的用户可以是一个或多个,也可以是全体用户public
    常见的权限:
    数据库:createtab
    (建立基本表,属主拥有对该表的一切操作权)
    属性列:select,insert,update,delete,allprivileges
    (查询)(查入)(修改)(删除)(前四种的总和)
    视图:select,insert,update,delete,allprivileges
    (查询)(查入)(修改)(删除)(前四种的总和)
    基本表:select,insert,update,delete,alter,index,allprivileges
    (查询)(查入)(修改)(删除)(改表)(索引)(前六种的总和)
    授权:
    例:给gaogaozai对学生表的select权限,且gaogaozai还可以把权限传播给别人
    grantselect
    ontable学生表
    togaogaozai;
    withgrantoption
    例:给gaogaozai和linlin对两张表所有权限,不能再传播权限
    grantallprivileges
    ontable学生表,导师表
    togaogaozai,linlin;
    例:给所有人对学生表insert权限,不能再传播权限
    grantinsert
    ontable学生表
    topublic;
    收回权限:
    例:收回gaogaozai对学生表中列的update权限
    revokeupdate()//省略(),则表示对所有列
    ontable学生表
    fromgaogaozai;
    
    
  • 上一篇资讯: SQL语言中的保留字
  • 下一篇资讯: SQL语法说明
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师