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

SQL笔记

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
1、配置管理器
    服务--运行
    服务名称(括号中的名称-实例名称)
    sqlexpress
    连接服务器的名称有两部分:
    服务器IP或名称\实例名称
    127.0.0.1\SQL2008
    192.168.1.151\SQL2008
    .\SQL2008
    服务名称对应协议
    TCP/IP--已启用
    修改协议后必须重启服务
    2、打开SQLServerManagementStudio
    服务器名称
    .\服务名称
    Windows身份验证
    当实例名称==MSSQLServer时,称为默认实例
    服务器IP或名称
    直接写.即可
    管理工具高版本能适应于低版本
    自带最高权限的管理员sa,sasa
    MySQL
    Access
    表:也叫关系,实体集。存储数据的一些载体。
    行:也叫记录,一行也称为一个实体。
    列:也叫域、字段。
    实体:实际存在的物体,事物。
    实体型:实体的类型。
    表名(域名类型)
    学生信息表(int,char(8),性别char(1),年龄int>18)
    学生信息表
    性别年龄
    1张三男20
    2李四女21
    3王五男20
    成绩表
    编号CHTML
    115585
    2270100
    336570
    416085
    要避免数据冗余,使一个表只描述一件事情。
    数据库:DatabaseDB,数据的集合
    数据库管理系统:DatabaseManagementSystemDBMS管理数据库的软件包集合
    数据库管理员:AdministratorDBA
    数据库系统:DatabaseSystemDBS一个完整的服务器系统。由DB、DBMS、DBA、硬件
    验证方式:
    服务器节点-右键属性-安全性-混合方式
    修改sa密码
    安全性节点-登录名-sa-属性-常规、状态
    Windows身份验证:把验证的工作交给操作系统去进行。能进入数据库系统唯一在其中登记的Windows用户。
    1、Windows用户
    2、已授权到sqlSERVER
    sqlexpress:简易版,Net
    mssqlserver:默认名称
    SQL身份验证:验证工作由SQL服务器自己进行。要求用户必须是SQL的合法登录名。
    系统数据库:
    master:记录系统级的信息(数据库、表、约束、用户)
    model:模板数据库,新建数据库时以它为模板。
    tempdb:临时数据,临时表,每次启动服务都会重建
    msdb:记录数据库的设置
    创建数据库:
    至少创建两个文件
    主数据文件:*.mdf(1)
    日志文件:*.ldf(0-n)
    文件名、初始大小、增长方式、存储路径
    次要数据文件:*.ndf(0-n)
    数据类型:
    char:采用ASCII编码的定长字符串
    varchar:采用ASCII编码的不定长字符串
    一个中文汉字=2个英文字符
    nchar:采用Unicode编码的定长字符串
    nvarchar:采用Unicode编码的不定长字符串
    一个中文=1个英文字符
    text:采用ASCII编码的不定长的“长”文本>=8000(4000个中文)
    ntext:采用Unicode编码的不定长的“长”文本>=8000(8000个中文)
    凡有var的,表示长度不固定
    凡以n开头的,表示Unicode编码
    整型数字
    tinyint
    smallint
    int
    bigint
    浮点型数字
    real:单精度
    float:双精度
    日期时间:Datetime,精确到毫秒
    yyyy-MM-ddhh:mm:ss
    yyyy/MM/ddhh:mm:ss
    yyyy.MM.ddhh:mm:ss
    货币:Money
    bit:值只有true\false
    在数据表界面输入时使用true\false
    使用SQL语句查询或增删改时,只能用1、0
    实体完整性:针对行的要求,要求每一行都是唯一并且相互区别
    措施:主键约束、唯一约束、标识列
    主键:能够唯一地标识一个实体(行)的列,主键列一定是唯一的,而且不能为NULL
    主键列能够决定其他所有列,其他所有列依赖于主键。
    主键=唯一+非空
    一个表只能有一个主键
    多列共同充当主键
    选择主键的原则:
    1、最少
    2、稳定
    3、数字比字符串要好
    标识列:类型是int,不能人为去改变,由数据库管理系统本身维护。
    标识种子:起始值
    标识增量:每次增加的量
    标识列一个表中只能有一个
    约束:规定用户输入的数据的有效性
    非空约束:NotNull
    唯一约束:施加的列值不能重复,经常用于非主键列
    Check约束:在进行增、改时会检查设定的表达式,如果表达式为真,则允许,否则拒绝。
    算术运算符:+-*/%(一样)
    逻辑运算符:&;&;||!(andornot)
    关系运算符:><>=<===!=
    (前四个相同,后两个=<>)
    写Check表达式时,应该把列名当成变量名
    赋值运算符:=(相同)
    age>=18andage<=25
    sex='男'orsex='女'
    前缀_表名_列名
    CK_StudentInfo_StuNo
    主键约束:primarykeyPK
    唯一约束:UniqueUQ唯一索引IndexIX
    默认约束:DefaultDF
    检查约束:CheckCK
    外键约束:foreignkeyFK
    通配符:
    %:0-n个任意字符
    _:1个任意字符
    ^:不在指定范围之内,必须和[]配合
    []:表示指定范围之内的一个字符
    StuNamelike'刘%'
    StuNamelike'刘__'
    1、使用了通配符,就一定要使用like
    2、只有字符串类型的列才能使用通配符
    StuSexlike'[男,女]'
    StuNolike'[0-9][0-9][0-9][0-9][0-9]'
    Emaillike'%@%.%'
    域完整性:针对列
    数据类型、Check约束、默认约束、非空约束
    引用完整性:针对多个表之间的关系
    主表:提供数据给别人去引用,被别人引用
    外表(子表):本身数据是来源于主表的,参照主表
    多个表的引用关系:通过外键约束
    外表中的相关列引用主表中被引用列
    外键一定存在于外表中
    增:应该先增主表,再增加外表
    改:先改外表,再改主表
    删:先删外表中的数据,再删主表中的数据
    更新、删除规则:层叠
    在更新、删除主表数据的时候,外表的引用的数据也会同步更新、删除。
    课堂练习:
    学生信息表(,,年龄,性别)
    科目信息表(科目编号,科目名称,任课教员)
    成绩表(,科目编号,成绩)
    sex='男'orsex='女'
    ==
    sexin('男','女')
    age>=18andage<=25
    ==
    agebetween18and25(只限于age为数字)
    bloodTypein('A','B','AB','O')
    len(LoginPwd)>=6//仅能使用在字符串类型
    SQL:StructuredQueryLanguage结构化查询语言
    T-SQL:Transact事务
    DML:数据操纵语言(selectupdatedeleteinsert)
    DCL:数据控制语言grantrevoke
    DDL:数据定义语言createdropalter
    变量声明、赋值、流程控制
    函数
    SQL大小写无关。
    update表名set列1名=值1,列2名=值2,...
    where表达式
    deletefrom表名
    where表达式
    截断:删除整个表的数据
    truncatetable表名
    truncate和deletefrom的区别:
    1、truncate只能删除整个表的数据,而deletefrom可以选择性地删除
    2、truncate没有记录到日志,所以不可恢复,并且性能较高
    3、truncate不能删除主表中的数据,即使主表的数据没有被引用,deletefrom能删除没有被引用的数据
    4、truncate会使标识列的值恢复到种子值,deletefrom不会
    insertinto表名(列1,列2,...)
    values(值1,值2,...)
    注意:
    1、列名列表有几个列,值列表就必须有几个值,而且类型、顺序都要一致
    2、当列名列表数目等于表中所有列时,可以省略列名列表
    3、插入的数据要符合表中列的数据类型和各种约束
    ScodeSnameSaddressSgradeSemailSex
    如果语句中涉及的表名、列名是关键字,必须加[]
    列类型如果是字符串类型或日期时间类型,而且日期时间是一个常量,必须加单引号;如果日期时间是由函数计算而出,不必加单引号。
    以上语句一次只能插入一条记录
    一次插入多条记录:
    insertinto表名[(列1,列2,...)]
    select值1,值2,...union
    select值1,值2,...union
    select值1,值2,...union
    select值1,值2,...
    和插入单条记录的区别:
    1、default不能使用在插入多行的情况
    2、没有values,改成select语句
    select列1,列2,...
    from表名
    where条件表达式
    orderby列1asc|desc,列2asc|desc...
    asc:升序
    desc:降序
    排序默认为升序,写不写asc都一样
    执行机制:
    1、from
    2、where
    3、orderby
    4、select
    引用某个列,
    表名.列名
    当表没有重新命名时,可以使用原表名,也可以省略;如果重新命名了,只能用新名称去引用列名
    列的重命名:
    1、原列名as'新列名'
    2、原列名'新列名'
    3、'新列名'=原列名
    当要给某个单元格设置空值时,应手动输入NULL,而不是删掉
    常量列用于显示额外的某个附加列,而且该列数据都是相同的
    取前多少行记录
    selecttopN列1,列2from...
    取前百分之多少行记录
    selecttopNpercent列1,列2from...
    联合查询Union:多个查询结果并集
    1、列的数目要一致
    2、列的类型要兼容
    msdn:microsoftdevelopernetwork
    帮助文档
    输出语句:
    select输出临时表结构的窗格
    print输出文本结构
    例:
    selectgetdate()
    printlen('ABC')
    字符串函数
    intcharindex(要查找的串,原始字符串[,起始位置]):查找某一个串在原始字符串中的位置(从指定位置开始查找,省略时为1),找不到时返回0
    intlen(字符串):计算字符串长度
    字符串lower(字符串):转换为小写
    字符串upper(字符串):转换为大写
    字符串ltrim(字符串):去左边空格
    字符串rtrim(字符串):去右边空格
    字符串left(字符串,截取长度):从左边截取指定数量的字符串
    字符串right(字符串,截取长度):从右边截取指定数量的字符串
    字符串substring(原始字符串,起始位置,截取长度):从指定位置开始,截取指定数量的字符串
    字符串replace(原始串,查找的内容,要替换成的新内容):查找替换
    字符串stuff(原始串,起始位置,长度,要塞入的新内容):从指定位置开始“挖”出指定长度的字符串,并塞进去新的字符串
    yyyy-MM-ddhh:mm:ssms
    日期部分缩写
    yearyy,yyyy
    quarterqq,q
    monthmm,m
    dayofyeardy,y
    daydd,d
    weekwk,ww
    weekdaydw,w
    hourhh
    minutemi,n
    secondss,s
    millisecondms
    日期时间函数
    datetimegetdate():获取系统时间
    datetimedateadd(日期时间部分代号,数值,原日期):在原日期上的某一部分加上特定值,返回新的日期时间
    intdatediff(日期时间部分代号,日期一,日期二):计算日期二-日期一在某一部分的差
    字符串datename(日期时间部分代号,日期):返回指定日期在某一部分的名称
    intdatepart(日期时间部分代号,日期):返回指定日期在某一部分的数值
    数学函数
    intabs(数值):计算绝对值
    intfloor()
    intceiling()
    floatround(数值,精度):四舍五入
    floatpower(底数,指数):幂运算
    floatrand():计算[0,1)的随机浮点数
    floatsqrt(数值):计算平方根
    intsign(数值):返回符号,正数为1,负数为-1,0为0
    系统函数
    不确定类型convert(要转换的目标类型,原数值):把原数值转换到目标类型
    current_user:当前用户身份(用户组)
    system_user:当前用户名称
    intdatalength(数值或字符串):计算字节数
    user_name(序号):获取指定序号的组别名称
    select*into新表名from原表名
    新表名必须不能事先存在,会自动创建
    insertinto新表名select...from原表名
    新表名必须事先建立好,而且列的类型和原表中的列要兼容
    聚合函数:(5个)
    sum:返回表达式中所有数值的总和
    (只能用于数字型)
    avg:返回平均值(只能用于数字型)
    max:返回最大值
    min:返回最小值
    count:count(*)统计总行数,count(列名)统计相应列的非空值个数
    select列1,列2,...
    from表名
    where条件
    groupby列1,列2,...[having条件]
    orderby列1asc|desc,列2asc|desc...
    注意:
    1、select语句包含聚合函数(只得到一个值),不能再包含其他列,如果一定要包含其他列,其他列就必须作为被分组列
    2、具备groupby子句的查询,select后的列名只能是作为被分组的列,或者是聚合函数
    where和having的异同点:
    相同:都是筛选符合条件的记录
    不同:
    1、执行时机不同,where是在一开始就马上筛选掉不符合条件的记录,而having是等到分组后把不符合条件的组去掉
    2、面向对象不同,where筛选的目标是整个表,而having的目标是分组后的各个组
    3、where中不允许使用聚合函数,而having可以使用分组列或聚合函数
    表连接:当数据来源于多个表
    表连接的方式:
    1、内连接
    2、外连接:左外连接和右外连接
    3、交叉连接(忽略,无意义)
    表连接的条件:依靠主外键关系
    内连接:获取两表的共同数据
    1、
    select列1,列2,...
    from表1,表2,...
    where表1.列名=表2.列名and其他筛选条件
    2、
    select列1,列2,...
    from表1[inner]join表2on表1.列名=表2.列名
    [inner]join表3on表2.列名=表3.列名
    where其他筛选条件
    外连接:查询的结果包含其中一张表的所有数据,而另外一张表没有匹配的共同数据时,以NULL值代替。
    左外连接:包含左表中的所有数据,右表的不匹配数据以NULL代替。
    右外连接:包含右表中的所有数据,左表的不匹配数据以NULL代替。
    左外连接:
    select列1,列2,...
    from表1left[outer]join表2on表1.列名=表2.列名
    where其他筛选条件
    给新表增加标识列的办法:
    identity(类型,种子,增量)as新列名
    
  • 上一篇资讯: SQL简介(1)
  • 下一篇资讯: SQL电子书
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师