zoukankan      html  css  js  c++  java
  • Sql Server 基础知识

    Sql(Structured Query Language) server基础

    1.Sql server的组成: 

    • 主要数据库文件:.mdf 特点:有且只有一个
    • 次要数据库文件:.ndf 特点:任意个
    • 日志数据库文件:.ldf 特点:至少一个

    2.操作数据库: 

    • 创建数据库:create databse 库名
    • 查看所有数据库:exec sp_helpdb
    • 查看当前数据库:exec sp_helpdb 库名
    • 使用数据库:use 库名
    • 删除数据库:drop database 库名 ps:正在使用的数据库无法删除

    3.表的结构: 字段 数据类型(属性)

    4.数据类型: 

    • 整型
      • 微整型 tinying 1个字节
      • 小整型 smallint 2个字节
      • 整型 int 4个字节
      • 大整型 bigint 8个字节
    • 浮点型
      • float 不能精确存储数值
      • real 不能精确存储数值
      • decimal(numeric ) 同义,用于精确存储数值
    • 字符型
      • char 长度在1到8000之间 定长字符数据
      • varchar 长度在1到8000之间 变长字符数据
      • text 存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符
    • 时间日期型:datetime 年月日时分秒毫秒
    • 货币型:money 精确到货币单位的千分之十。存储大小为 8 个字节。存储形式为12345.67

    sql server表

    1.创建表的语法: 

    create table 表名
    (
        字段名称1 数据类型[属性],
        字段名称2 数据类型[属性],
        ...  
    )

    2.查看所有表语法: exec sp_help

    3.查看当前表语法: exec sp_help 表名

    4.修改表结构: 

    • 增加一列语法:alter table 表名 add 字段名 数据类型
    • 删除一列语法:alter table 表名 drop column 字段名
    • 修改一列语法:alter table 表名 alter column 字段名 数据类型
    • 删除表语法:drop table 表名

    5.操作表数据: 

    • 完全插入数据语法:insert into 表名(字段名1,字段名2...) values(值1,值2...)
    • 省略插入数据语法:insert into 表名 values(值1,值2...)
    • 部分插入数据语法:insert into 表名(字段名1,字段名2...) values(值1,值2...)
    • 多行插入数据语法:insert into 表名 values(值1,值2...),(值1,值2...)
    • 查看所有记录语法:select * from 表名
    • 查看部分记录语法:select 字段名1,字段名2... from 表名
    • 修改一条记录语法:update 表名 set 字段名=值 [where条件]
    • 删除一条记录语法:delete from 表名 where 条件
    • 清空表所有记录
      • delete from 表名
      • truncate from 表名
    • SQL Server中truncate、delete和drop的异同点,相同点:
      truncate和不带where子句的delete,以及drop都会删除表内的数据
      不同点:
      1. truncate和delete只删除数据不删除表的结构(定义)
      drop语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。
      2. delete语句是数据库操作语言(dml),这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发。
      truncate、drop是数据库定义语言(ddl),操作立即生效,原数据不放到rollback segment中,不能回滚,操作不触发trigger。
      3.delete语句不影响表所占用的extent,高水线(high watermark)保持原位置不动。
      显然drop语句将表所占用的空间全部释放。
      truncate语句缺省情况下见空间释放到minextents个extent,除非使用reuse storage;truncate 会将高水线复位(回到最开始)。
      4.速度,一般来说: drop> truncate > delete
      5.安全性:小心使用 drop和truncate,尤其没有备份的时候.否则哭都来不及。
      使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
      想删除表,当然用drop
      想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
      如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
    复制代码

    6.标识列 identity(初值,增值): 

    • 定义:能唯一区分表中的每一条记录,且该属性是自动增长的
    • 特点
      • 一个表中有且只有一个标识列
      • 标识列不能编辑,不能更新
      • 标识列数据类型只能是整型
      • 标识列不为null
      • 标识列不重复
    • 作用:保证数据完整性

    7.运算符: 

    sql server的运算符与其他语言不同,这里列举三个

    • &&-----and
    • ||-----or
    • !-----not

    8.六大约束: 

    • 检查约束 check 语法 check(条件)
    • 默认约束 default 语法 default'默认语句'
    • 非空约束 not null
    • 唯一性约束 unique
    • 主键 primary key
      • 主键的值不能重复
      • 一个表中有且只有一个主键
      • 外键与主键相对应
      • 主键类型可以是整型、字符型
      • 语法:字段名 数据类型 primary key
    • 外键 foreign key references
      • 与主键相对应
      • 外键的值一定在主键范围之内
      • 外键的值可以重复
      • 语法:字段名 数据类型 foreign key references 主表名
      • 注意事项:
        • 在操作主表从表时:先删除从表,再删除主表,删除数据,也要先从后主
        • 在建立表时:要先创建主表,再创建从表,插入数据,先主后从

    sql server查询

    1.查询符合条件的数据: select 字段名 from 表名 [where 条件]

    2.之间的

    • and ... or
    • between ... and
    • 例句:查询23岁到25岁之间的学生
      • select * from student where age>=23 and age<=25
      • select * from student where age between 23 and 25

    3.不显示重复项:distinct select distinct 字段名 from 表名

    4.前几项 top select top n * from 表名

    5.排序 order by + 字段名 asc升序 desc降序(默认情况下为升序) select * from student where age>25 order by name desc

    6. is not null/null select * from 表名 where 字段名 is null

    7.列起别名as select id as 学生编号, name as 学生姓名 from student as a 注:实际语法中as可以省略

    8.高级查询(模糊查询) like select 字段名 from 表名 where 字段名 like '通配符 值 通配符'

    sql server 通配符

    • % 任意字符
    • []范围内任意字符
    • [^]非范围内任意字符

    9.联合查询 join

    • 交叉查询:select 字段名 from 表1 cross join 表2 [where 条件]
    • 内连接查询:select 字段名 from 表1 inner join 表2 on 联合条件 [where 条件]
    • 外连接
      • 左外连接:select 字段名 from 表1 left join 表2 on 联合条件 [where 条件]
      • 右外连接:select 字段名 from 表1 right join 表2 on 联合条件 [where 条件]
    • 全外连接:select 字段名 from 表1 full join 表2 on 联合条件 [where 条件]
    • 多表连接:select 字段名 from 表1 inner join 表2 on 联合条件 inner join 表3 on 联合条件 [where 条件]

    10.嵌套查询(嵌套查询都可以用联合查询完成),显示的字段在一个表中,条件在另外一个表中

    • in() 在...范围之内的
    • not in() 不在...范围之内的
    • exists 存在
    • not exists 不存在

    11. 分组 group by

    系统函数

    1.统计(聚合)函数

    • sum() 求和
    • avg() 平均值
    • max() 最大值
    • min() 最小值
    • count() 数量

    2.日期函数

    • getDate()获取当前时间
    • Dateadd() 增加时间
    • datediff(datepart,startdate,enddate)

      startdateenddate 参数是合法的日期表达式。

      datepart 参数可以是下列的值:

      datepart缩写
      yy, yyyy
      季度 qq, q
      mm, m
      年中的日 dy, y
      dd, d
      wk, ww
      星期 dw, w
      小时 hh
      分钟 mi, n
      ss, s
      毫秒 ms
      微妙 mcs
      纳秒 ns
    • datepart(datepart,date)函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等,datepartd参数可以参见上表
    • datename(datepart,date)傳回代表指定 date 之指定 datepart 的字元字串

    3.数学函数

    • abs()取绝对值
    • round()四舍五入
    • floor()函数返回小于或等于所给数字表达式的最大整数
    • ceiling()函数返回大于或等于所给数字表达式的最小整数
    • sqrt()开平方根
    • 关于abs()/round()/...这些数学函数的demo可以在我的上篇博客中找到

    4.字符串函数

    • left()左截串
    • right()右截串
    • ltrim()去左空格
    • rtrim()去右空格
    • replace(字符串,旧字符串,新字符串) 替换
    • substring(字符串,位置,长度) 截字符串 ps:sql中字符串下标从1开始
    • reverse()反转
    • len()长度
    • upper()转大写
    • lower()转小写

    T-sql

    1.声明变量语法: declare @变量名 数据类型

    给变量赋值

    • set @变量名=值
    • select @变量名=值

    输出变量 select @变量名

    ps:若想输出变量、声明变量、变量赋值和变量输出三条语句需一起执行

    2.编程语句

    • begin...end
    • if...else

    视图

    1.创建视图

    create view 视图名称
    as
    sql中查询语句

    2.使用视图 select * from 视图名

    3.查看视图 exec sp_help

    4.查看视图内容 exec sp_helptext 视图名

    5.修改视图 alter view 视图名 as select * from 表名 [where条件]

    6.删除视图 drop view 视图名

    7.修改视图 update 视图名 set 字段名=值 [where条件]

    存储过程/触发器/事务

    1.sql server 存储过程

    复制代码
    create proc | procedure pro_name
        [{@参数数据类型} [=默认值] [output],
         {@参数数据类型} [=默认值] [output],
         ....
        ]
    as
            select ......
    复制代码

    2.sql server 触发器

    • insert触发器
    • update触发器
    • delete触发器

    3.sql server 事务

     
  • 相关阅读:
    Swing-文本输入组件(一)
    JFrame常用属性设置模板
    Swing-BoxLayout用法-入门
    linux创建和查看用户命令
    elasticsearch,http://ip:9200访问不到的解决办法
    U盘制作Linux系统盘
    Linux中oracle的安装,亲测
    Linux中yum的安装
    Linux中oracle安装时候报ora-00119解决办法
    eclipse中多个工程编译到同一个目录下
  • 原文地址:https://www.cnblogs.com/ziranquliu/p/4999590.html
Copyright © 2011-2022 走看看