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

4SQL持之以恒

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

【网学网提醒】:本文主要为网学会员提供4SQL持之以恒,希望对需要4SQL持之以恒网友有所帮助,学习一下!


    SQLServer2008序列号:
    Developer:PTTFM-X467G-P7RH2-3Q6CG-4DMYB
    Enterprise:JD8Y6-HQG69-P9H84-XDTPG-34MBB
    --------------------------------------------------------
    数据库概述
    DBMS数据库管理系统(对数据库进行管理的系统)
    不同品牌的DBMS有自己不同的特点:MYSQL(速度非常快,对数据的保存不怎么好)、MSSQLServer(跟.NET结合非常好,酷毙了)、DB2、Oracle(这两个比较大的数据库)、Access(能把他当文件来用,不需要服务器就可以)、Sybase等。
    差别对开发者而言微乎其微,一通全通,大同小异。
    SQL(查询语句)<>SQLServer<>MSSQLServer.三者是不一样的。
    除了Access、SQLServerCE等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。学习、开发是连接本机的数据库,上线运行时是数据库运行在单独的服务器。
    --------------------------------------------------------
    数据库中的概念
    Catalog(分类)(又叫数据库Database,表空间TableSpace)
    不同类的数据应该放到不同的数据库中
    便于对各个Catalog进行个性化管理
    避免命名冲突
    安全性高
    Table(表):不同类型的资料放到不同的个子中,将这种区域叫做表。不同的表根据放的数据不同进行空间的优化,找起来也方便。
    列(Column)、字段(Field)
    主键(PrimaryKey)
    主键是数据行的唯一标识。不会重复的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键。
    主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键,比如身份证号,银行账号等;逻辑主键使用没有业务意义的字段做主键。因为很难保证业务主键不会重复,因此推荐使用逻辑主键。完全给程序看的,业务人员不会看的!
    标间关联、外键(ForeignKey)可以避免出现字段的重复。
    SQLServer的管理--安装SQLServer和SQLServerManagementstudio
    --------------------------------------------------------
    SQLServer服务器名称:.:表示本机
    先建数据库,在建表
    新建,修改等
    数据类型:
    bit布尔类型,trueorfalse数据库中值为0和1
    char(10)字符类型是个字符
    datetime日期
    int整数(32位)bigint大整数(64位)
    nvarchar(50)长度为50的字符串,可能含有非ASCII码的信息,可能含有中文等文字
    nvarchar(MAX)无限大的字符串
    varchar(50)纯英文信息
    char(n)不足长度n用空格填充
    --------------------------------------------------------
    SQL语句入门
    SQL语句就是和DBMS交谈的专用语言,不同的DBMS都认识SQL语法。
    SQL语句中字符串用单引号。
    SQL语句是大小写不敏感的,不敏感指的是是SQL关键字,字符串值还是大小写敏感的。
    创建表、删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署、数据导入中用的很多
    表->右击->新建查询输入SQL语言进行操作
    SQL语句主要分为DDL(数据定义语言)和DML(数据操作语言)两类。createtable、droptable等属于DDL,select、insert等属于DML。
    主键的设置
    在表上右击->修改表,打开表名的修改。
    把id做主键的名字,所有主键名字都用id。主键不能重复
     SQLServer中两种常用的主键数据类型:int+标识列(又称自动增长字段);uniqueidentifier(又称Guid、UUID)
    字符串也可以设置主键,但是最大字符不能设置主键。
    列属性->标识规范->是->自动增长字段
    表中只能有一个标志列,一般将主键设置为标识字段
     用标识列实现的字段自增可以避免并发等问题,不要开发人员控制自增。用标识列的字段在INSERT的时候不用指定主键的值。将字段的“是标识列”设置为是,一个表只能有一个标识列。
     Guid算法是一种可以产生唯一标识的高效算法。它使用网卡MAC、地址、纳秒级时间、芯片ID码等算出来的,保证每次生成的GUID永远不会重复,无论是同一个计算机还是不同的计算机。
    SQLServer中生成的GUID的函数newid(),.net中生成的Guid方法:Guid.NewGuid(),返回是Guid类型。
    int自增长字段的优点:占用空间小、无需开发人员干预、易读;
     缺点:效率低,数据导入导出的时候很痛苦。
    Guid的优点:效率高、数据导入导出方便;
     缺点:占用空间太大、不易读。
    业界主流倾向于是用Guid。
    --------------------------------------------------------
    数据插入
    insertintoPerson3(Name.Age)values('lily',30);
    或者
    insertintoPerson3values('lily',38);
    选中执行的时候就执行选中的部分,不选择的话就执行全部语句。
    Guid插入:
    insertintoPerson4(id,name,age)values(newid(),'lily',38);
    列属性默认值的绑定,可以不用写函数,自动生成一些字段。
    如果Guid字段的默认值设定为newid()就会自动生成。很少这么干。
    --------------------------------------------------------
    数据更新
    更新一个列:UPDATEperson1setage=30;
    更新多个列:UPDATEperson1setage=30,name='lucy';
    有约束的更新:
    UPDATEperson1setNickName=N'青年人'
    whereage>=20;
    --------------------------------------------------------
    数据删除
    删除表中的全部数据:
    DELETEFROMPerson.
    Delete只是删除数据,表还在,和DropTable不同。
    Delete也可以带where子句来删除一部分数据:
    deletefromPersonWHEREAge>20;
    --------------------------------------------------------
    数据检索
    简单的数据检索:
    select*FROMPerson
    *表示所有的字段
    select字段名1,字段名2FROMPerson
    有约束的检索:
    select*FROMPers
    on
    whereAge<20
    给列起别名:
    selectNameas,Ageas年龄FROMPerson
    whereAge<20
    也可以用select执行与表不相关的数据。
    select1+1as列1,getdate()as日期,newid()as编号
    --------------------------------------------------------
    数据汇总
    SQL聚合函数:MAX、MIN、AVG、SUM、COUNT。
    SELECTNameas,Ageas年龄,Salary+10000as月薪,
    detdate()as当前时间FROMPerson;
    selectcount(*)fromPerson;
    selectmax(salary)fromPerson;
    ...
    对数据进行统计的函数叫做聚合函数。
    --------------------------------------------------------
    数据排序(orderby)
    select*fromPerson
    orderbyAge,salaryASC;//按照年龄进行排序
    首先按照年龄排列,如果年龄相同,则按照工资进行升序排列
    ASC代表升序
    DESC代表降序
    orderby子句要放到where子句之后(注意顺序)
    select*fromPerson
    whereAge>20
    orderbyAge,salaryASC;
    --------------------------------------------------------
    通配符过滤(模式匹配)模糊查找
    通配符过滤使用LIKE
    单字通配符为半角下划线“_”,他匹配单个字符。例如:以任意字符开头,剩余部分为‘erry’:
    select*fromPerson
    whereNameLIKE‘_erry’;
    多字通配符为半角百分号‘%’,他匹配任意次数(0个或多个)出现的任意字符。
    --------------------------------------------------------
    空值处理
    数据库中,一个值如果没有指定值,那么值就为NULL,这个null与c#中的null不同,数据库中的null表示“不知道”,而不是表示没有。因此selectnull+1结果还是null,因为不知道的结果还是不知道。
    查询是,无论是等于null还是不等于null,都是一条数据都没有
    要查询时:
    select*fromPerson
    whereNameisnull;//如果用等号,就什么都不显示
    可以显示要查询的数据。
    --------------------------------------------------------
    多值匹配
    select*fromPerson
    whereAge=23orAge=25orAge=28;
    或者
    select*fromPerson
    whereAgein(23,25,28);
    select*fromPerson
    whereAge>20andAge<30;
    或者
    select*fromPerson
    whereAgebetween20and30;
    --------------------------------------------------------
    数据分组
    selectAge,count(*)FROMPerson
    GRUOPBYAge;
    //根据年龄相同的数据进行分组,数各组中数据的个数
    没有出现在GRUOPBY子句中的列是不放到select语句后的列名列表里的(聚合函数除外)
    GRUOPBY子句必须放到where语句之后
    --------------------------------------------------------
    Having语句
    在where中不能使用聚合函数
    必须使用Having,Having要位于GRUOPBY之后
    selectAge,count(*)FROMPerson
    GRUOPBYAge
    HavingCount(*)>1;
    Having是对分组后信息的过滤,能用的列和select中能用的列是一样的。所以不能用Having来代替where;
    -----------
    ---------------------------------------------
    限制结果集的函数
    selecttop3*fromPerson
    wherenumbernotin(selecttop5numberfromPerson
    orderbysalaryDESC)
    orderbySalaryDESC
    //检索按照工资降序排列的前三人的信息
    --------------------------------------------------------
    去掉重复的数据
    selectdistinctdepartmentfromPerson
    distinct去除重复的信息,是用来消除完全重复的行,如果有两个字段的话,完全消除才会被去除
    --------------------------------------------------------
    联合结果集
    union在两个查询结果连接起来,合并到一起
    上下两个列数(个数)要相同,数据类型也要相容,才能构成连接。
    unionall不会导致数据丢失,不会进行重复行的合并,如果不是故意的去除重复行,就一定要加上all
    --------------------------------------------------------
    案例1:要求查询员工的最低年龄和最高年龄;
    select‘正式员工最高年龄’,MAX(Age)fromPerson
    unionall
    select‘正式员工最低年龄’,MIN(Age)fromPerson
    unionall
    select‘临时工最高年龄’,MAX(Age)fromPerson
    unionall
    select‘临时工最低年龄’,MIN(Age)fromPerson
    案例2:查询每位正式员工的信息,包括工号、工资,并且在最后加上员工工资额合计。
    selectnumber,salaryfromPerson
    union
    select‘工资合计’,sum(salary)fromPerson
    --------------------------------------------------------
    数字函数
    ABS():求绝对值
    CEILING():舍入到最大整数,例如:1.1舍入到2。ceiling:天花板
    FLOOR():舍入到最小整数,floor:地板
    ROUND():四舍五入,有两个参数:round(-3.61,0)
    0表示精度,表示0个小数点
    字符串函数
    LEN():计算字符串的长度
    LOWER()、UPPER():转小写、大写
    LTRIM():字符串左侧的空格去掉
    RTRIM():字符串右侧的空格去掉
    SUBSTRING(string,start_position,length)
    //参数string为主字符串,start_position为子字符串在主字符串中的起始位置,length为子字符串的最大长度
    从start_position开始,长度为length的string中的字符。
    日期函数
    GETDATE():取得当前日期时间
    DATEADD(datepart,number,date),计算增加以后的日期
    datepart为DAY、MONTH、YEAR、HH等
    number为时间,正的就增加,负的就减少
    date为当前的日期
    DATEDIFF(datepart,startdate,enddate):计算两日之间的差额。datepart为计量单位。
    DATEPART(datepart,date):返回一个日期的特定的部分
    类型转换函数
    CAST(expressionASdata_type)
    CONVERT(data_type,expression)
    selectcast(‘123’,asint)
    convert(datetime,‘123’)
    空值处理函数
    ISNULL(expression,value):如果expression不为空则返回expression,否则返回value。
    CASE函数用法1:
    CASEexpression
    whenvalue1thenreturnvalue1
    whenvalue2thenreturnvalue2
    whenvalue3thenreturnvalue3
    whenvalue4thenreturnvalue4
    elsedefaultreturnvalue
    end
    SQL语句中用--作注释
    --------------------------------------------------------
    索引Index
    全表扫描:对数据进行检索(select)效率最差的是全表扫描
    就是一条条的找。
    如果没有目录,差汉语词典就要一页一页的翻,而有了索引,只要查目录即可,为了提高索引的速度,可以为经常进行检索的列添加索引,相当于创建目录。
    创建索引的方式:在表设计器中点击右键,选择“索引/键”->添加->在列中选择索引包含的列
    使用索引能提高查询效率,但是索引也是占据空间的,而且添加、更新、删除数据的时候需要同步更新索引,因此会降低insert、update、delete的速度。只在经常检索的字段上创建索引。
    即使创建了索引,仍然有可能全表扫描,比如like、函数、类型转换等。
    --------------------------------------------------------
    Join表连接
    进行表之间的查询,表的关联
    join...on...
    --------------------------------------------------------
    子查询
    将一个查询语句作为一个结果集供其他SQL语句使用,就像普通的表一样,被当做结果集的查询语句被称为子查询。所有可以使用表的地方几乎都可以使用子查询来代替。
    
    
  • 上一篇资讯: 50个经典SQL查询语句
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师