SQL server基础知识

一、基础知识

  (1)、存储结构:数据库->表->数据

  (2)、管理数据库

    增加:create database 数据库名称

    删除:drop database 数据库名称

    查询:select name from master..sysdatabases

    修改:alter database 数据库名称(在 sql server 中修改与数据库关联的文件和文件组。在数据库中添加或删除文件和文件组、更改数据库或其文件和文件组的属性)

  (3)、管理表

    选择数据库:use 数据库

    增加:create table 表名(字段1 字段类型,字段2 字段类型,......);

    删除:drop table 表名

    修改:

      添加字段:alter table 表名 add 字段名 字段类型

      删除字段:alter table 表名 drop column 字段名

      修改字段类型:alter table 表名 alter column 字段名 字段类型

      修改字段名称:exec sp_rename '表.原字段名称','新字段名称','column'

      修改表的名称:exec sp_rename '原表名称','新表名称'

    查询:select name from sysobjects where xtype = 'u'

  (4)、管理数据

    增加数据:insert into 表(字段1,字段2,...) values (值1,值2,...)

    删除数据:delete from 表名 where 条件

    修改数据:update 表名 set 字段1=值1,字段2=值2,... where 条件

    查询数据:

      所有字段:select * from 表

      指定字段:select 字段1,字段2,... from 表

      指定别名:select 字段1 as 别名1,字段2 as 别名1,... from 表

      去重:select distinct 字段 from 表

      条件查询:

        逻辑条件:and(与)or(或)

          select * from 表 where ... and/or ...

        比较条件:>,<,>=,<=,=,!=,<>(不等于),between and

        判空条件:

          判断null:is null/is not null

          判断空字符串:='',!='',<>''

          模糊条件:like

            '%':替换任意个字符

            '_':替换一个字符

              select * from 表 where 字段 like '%查询字符%'

          分页查询:      

            @p_pagesize int,//页面数量

            @p_currentPage int//当前页

            declare @string varchar(3000)

            if(@p_currentPage=1)//第一页

            begin

            set @string = 'Select top '+ cast(@p_pagesize as char(20)) + '* from 表名 where 条件

            end

            else//不是第一页

            begin

             set  @string = 'Select top '+cast(@p_pagesize as varchar(20))+'* from 表名where 条件and 表.字段 not in (select top '+                    cast(((@p_currentPage-1)*@p_pagesize) as varchar(20))+'字段 from 表名where 条件

            end

            exec(@string);

          排序查询:order by asc/desc

            asc:正序;顺序

            desc:反序;倒序

          分组查询:group by 字段

          分组后筛选:having

二、数据约束

数据约束:对用户表操作进行约束

  (1)默认值:

    作用:当用户对使用默认值的字段不插入值的时候,就会使用默认值

    注意:

      (a)对于默认值字段插入null是可以的

      (b)对于默认值字段可以插入非null

    创建:

      (a)建表:

         create table temp_table

         (id int,

         name varchar(10),

         address varchar(50) default '吉林长春')

      (b)语句:

         alert table 表名 add constraint 默认名字(任意) default('默认值') for 字段

  (2)非空:

      作用:限制字段,必须赋值

      注意:

        (a)非空字段必须赋值

        (b)非空字段不能赋null

      创建:

        (a)建表:

          create table temp_table

          (id int not null,

          name varchar(10),

          address varchar(50) default '吉林长春')

        (b)语句:

          alert table 表 alert column 字段名称 字段类型 not null

  (3)唯一:

      唯一键分为主键(主键索引)和唯一索引(unique索引)

      作用:对该字段的值不能重复

      注意:

        (a)唯一字段可以插入null

        (b)唯一字段只能插入一个null

      创建:

        (a)建表:

          create table student

          (id int unique,

          name varchar(10))

        (b)语句

          create unique clustered index 约束名 on 表名(字段名)

  (4)主键:

    作用:非空,唯一

    注意:

      (a)通常情况下,每张表都会设置一个主键字段用于标记表中的每条记录的唯一性。

      (b)建议不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的id字段。

    创建:

      (a)建表:

          create table student

          (id int primary key,--主键

          name varchar(10))

      (b)语句:

          第一:先设置字段为null: alter table 表名 alter column 字段名 字段类型 not null

          第二:设置主键:alter table 表名 alter constrant 主键名(任意) promary key(主键字段)

  (5)自增长

    作用:自动递增

    注意:一张表中不能有两个或者多个标识列

    创建:

      (a)建表:

          create table student

          (id int identity(1,1) primary key,--主键,自增长,从1开始,每次增加1

          name varchar(10))

      (b)语句:

          alter table 表名 add 列名 int identity(1,1) NOT NULL--增加一列自增

  (6)主键:   

    作用:约束两张表的数据

    出现两种表的情况:解决数据冗余高问题, 独立出一张表。

    注意:

      (a)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!

      (b)主表的参考字段通用为主键!

      (c)添加数据: 先添加主表,再添加副表

      (d)修改数据: 先修改副表,再修改主表

      (e)删除数据: 先删除副表,再删除主表

    创建:

      (a)建表:

        -- 部门表(主表)

        CREATE TABLE dept(

        id INT PRIMARY KEY,

        deptName VARCHAR(20)

        )

        -- 修改员工表

        CREATE TABLE employee(

        id INT PRIMARY KEY,

        empName VARCHAR(20),

        deptId INT,-- 把部门名称改为部门ID,

        -- 声明一个外键约束

        CONSTRAINT 外键名称 FOREIGN KEY(外键) REFERENCES 主键表(主键id)

        )

      (b)语句:

        alter table 表 add foreign key(表外键) references主键表(主键id)

三、多表链接查询

  (1)外链接

    外连接分为:左链接、右链接、完全外链接

    (a)左链接:left join 或 left outer join

       用法:最少两张表,A表和B表

        Select A.字段 from A left join B on A.id = B.id

       左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL).

    (b)右链接 right join 或right outer join

       用法:最少两张表,A表和B表

        Select A.字段 from A right join B on A.id = B.id

       右外连接包含right join右表所有行,如果左表中某行在右表没有匹配,则结果中对应左表的部分全部为空(NULL)。

    (c)完全外连接 full join 或 full outer join

       用法:最少两张表,A表和B表

        Select A.字段 from A full join B on A.id = B.id

        完全外连接包含full join左右两表中所有的行

        如果右表中某行在左表中没有匹配,则结果中对应行右表的部分全部为空(NULL)

        如果左表中某行在右表中没有匹配,则结果中对应行左表的部分全部为空(NULL)。

  (2)内连接

     内连接 join 或 inner join

     用法:最少两张表,A表和B表

     Select A.字段 from A full join B on A.id = B.id

     inner join 是比较运算符,只返回符合条件的行。

     此时相当于:select * from A,B where A.ID=B.ID

SQL server基础知识(表操作、数据约束、多表链接查询)的更多相关文章

  1. Sql Server 基础知识

    Sql Server 基础知识: http://blog.csdn.net/t6786780/article/details/4525652 Sql Server 语句大全: http://www.c ...

  2. 快速查看SQL Server 中各表的数据量以及占用空间大小

    快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(1 ...

  3. SQL Server基础知识

    1.SQL Server表名为什么要加方括号? 这个不是必须要加,但表名或字段名如果引用了sqlserver中的关键字,数据库会不识别这到底是关键字还是表名(或字段名)时就必须要加. 比如,一个表名叫 ...

  4. SQL Server基础知识三十三问 (1-7)

    1. SQL Server运行在什么端口上? 可以被修改么? 答: 1433端口. 可以修改的, 在SQL Server Configuration Manager的SQL Server Networ ...

  5. SQL Server基础知识三十三问 (7-14)

    8. 一般什么时候使用update_statistics命令? 答:  这个命令基本上是在很多数据被处理过了之后才使用的. 如果大量的删除, 修改, 或这大量的数据插入已经发生了, 那么index就需 ...

  6. SQL Server 基础知识/数据类型/数值类型

    数据库设计简单地来讲,也就是设计表格的过程. 表格存储的数据是可以理解为一个二维表,由行和列组成. 原则上来讲,一个数据库只需要一个字段,一个数据类型就可以解决所有的问题,但是这样做并不明智,所以一般 ...

  7. SQL Server基础知识三十三问 (15-21)

    15. 存储过程可以调用自己么, 或者说可能有递归的存储过程么? SP nesting最多可以到多少层? 答: 可以的. 因为Transact-SQL 支持递归, 你可以编写可以调用自己的存储过程. ...

  8. MS sql server 基础知识回顾(二)-表连接和子查询

    五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...

  9. sql server 中删除表中数据truncate和delete的区别(转载自.net学习网)

    我们都知道truncate table可以用来删除整个表的内容,它与delete后面不跟where条件的效果是一样.但除此之外,我们还清楚它们之间有其它的区别吗?本章我们将一起讨论truncate与d ...

随机推荐

  1. Eclipse上GIT插件EGIT使用手册

    http://blog.csdn.net/luckarecs/article/details/7427605 Eclipse上GIT插件EGIT使用手册   一_安装EGIT插件 http://dow ...

  2. 高级Java研发工程师面试题总结

    目录 一.Java基础 二.JVM虚拟机基础 三.开源框架基础 四.分布式基础 五.设计模式基础 六.数据库基础 七.网络基础 八.数据结构和算法基础 九.Linux基础 十.其他技术基础 一.JAV ...

  3. [javaSE] 注解-JDK中的注解

    java中的常见注解 jdk自带注解:@Override 覆盖  @Deprecated 过期  @Suppvisewarnings 压制警告 package com.tsh.ano; public ...

  4. [moka同学笔记]MySql语句整理

    更改单个表中的字段属性 content 以前为text类型的,现在改为longtext ALTER TABLE `notice` CHANGE `content` `content` LONGTEXT ...

  5. 初识Hibernate 缓存

    生活就像一杯咖啡,让你我慢慢的品尝,品尝它的苦涩和甘甜...... 一.什么是Hibernate缓存. 解析:白话来说就是缓存数据的容器 官方标准点缓存:是计算机领域的概念,它介于应用程序和永久性数据 ...

  6. rabbitmq心跳机制与配置

    最近,我们有些在阿里云上的应用总是有客户端出现异常和信息推送不及时的情况,检查mq日志,发现高峰期不停的有心跳超时,如下: =ERROR REPORT==== 21-Dec-2016::12:38:0 ...

  7. 关于clientWidth scrollWidth offsetWidth的理解

    clientWidth:元素可见区域的宽度  clientWidth=padding+width-滚动条 scrollWidth:元素实际内容的宽度 scrollWidth=padding+width ...

  8. Mithril – 构建杰出 Web 应用的 JS MVC 框架

    Mithril 是一个客户端的 Javascript MVC 框架.它是一个工具,使应用程序代码分为数据层,UI 层和粘合层.提供了一个模板引擎与一个虚拟的 DOM diff 实现,用于高性能渲染,支 ...

  9. 【初探移动前端开发05】jQuery Mobile (整合版)

    前言 为了方便大家看的方便,我这里将这几天的东西整合一下发出. 里面的例子请使用手机浏览器查看. 什么是jQuery Mobile? jquery mobile是jquery在移动设备上的版本,他是基 ...

  10. javascript 图片淡入淡出效果 实例源代码

    代码说明:把代码粘贴好之后,需要更改html代码中的图片路径,即可执行成功.后面还有对js代码的详细说明,希望大家好好消化,好好理解. html源代码: <head> <title& ...