SQL server基础知识(表操作、数据约束、多表链接查询)
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基础知识(表操作、数据约束、多表链接查询)的更多相关文章
- Sql Server 基础知识
Sql Server 基础知识: http://blog.csdn.net/t6786780/article/details/4525652 Sql Server 语句大全: http://www.c ...
- 快速查看SQL Server 中各表的数据量以及占用空间大小
快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(1 ...
- SQL Server基础知识
1.SQL Server表名为什么要加方括号? 这个不是必须要加,但表名或字段名如果引用了sqlserver中的关键字,数据库会不识别这到底是关键字还是表名(或字段名)时就必须要加. 比如,一个表名叫 ...
- SQL Server基础知识三十三问 (1-7)
1. SQL Server运行在什么端口上? 可以被修改么? 答: 1433端口. 可以修改的, 在SQL Server Configuration Manager的SQL Server Networ ...
- SQL Server基础知识三十三问 (7-14)
8. 一般什么时候使用update_statistics命令? 答: 这个命令基本上是在很多数据被处理过了之后才使用的. 如果大量的删除, 修改, 或这大量的数据插入已经发生了, 那么index就需 ...
- SQL Server 基础知识/数据类型/数值类型
数据库设计简单地来讲,也就是设计表格的过程. 表格存储的数据是可以理解为一个二维表,由行和列组成. 原则上来讲,一个数据库只需要一个字段,一个数据类型就可以解决所有的问题,但是这样做并不明智,所以一般 ...
- SQL Server基础知识三十三问 (15-21)
15. 存储过程可以调用自己么, 或者说可能有递归的存储过程么? SP nesting最多可以到多少层? 答: 可以的. 因为Transact-SQL 支持递归, 你可以编写可以调用自己的存储过程. ...
- MS sql server 基础知识回顾(二)-表连接和子查询
五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...
- sql server 中删除表中数据truncate和delete的区别(转载自.net学习网)
我们都知道truncate table可以用来删除整个表的内容,它与delete后面不跟where条件的效果是一样.但除此之外,我们还清楚它们之间有其它的区别吗?本章我们将一起讨论truncate与d ...
随机推荐
- Android获取系统时间方法的总结
Android获取系统时间方法的方法有很多种,常用的有Calendar.Date.currentTimeMills等方法. (1)Calendar Calendar获取系统时间首先要用Calendar ...
- MUI(2)
本篇博文是继续MUI(1)博文. 上一篇博文小编写了两个页面,一个页面只写了一个头部导航栏,另一个页面写了一个按钮,然后这两个页面进行合并显示,即在头部导航栏页面加载显示另一个页面的按钮.仔细观察上一 ...
- 泛函编程(28)-粗俗浅解:Functor, Applicative, Monad
经过了一段时间的泛函编程讨论,始终没能实实在在的明确到底泛函编程有什么区别和特点:我是指在现实编程的情况下所谓的泛函编程到底如何特别.我们已经习惯了传统的行令式编程(imperative progra ...
- mysql安装中出现的问题,
花了一天的时间明天mysql的安装方法: 自己的错误: 主要原因: (1):bin文件坏境配置出现了问题,没有重新在系统中配置文件 解决方法:右击电脑——属性——高级系统设置——变量配置——在path ...
- HTTP狀態碼
1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试 ...
- php ci 2.0框架 ORM
很早知道ci出了2.0版本了.这几天正好有项目要用ci开发 虽然项目不大.不过也从开发项目的过程中熟悉了CI框架 因为是个电商项目 本来想用个YII2 的. 封装的虽然厉害不过功能强大 因为另个兄弟坚 ...
- ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint......
今天用Hibernate建立外键的时候发现没有建立 但是创建了这个字段 情景: user表有一字段role,role是role表id字段的外键 原因: user表中已经有记录了,而且有的记录role这 ...
- ZeroClipboard 复制到剪贴板
使用 ZeroClipboard 可以简单的将内容复制到剪贴板,通过 Adobe Flash 和 JavaScript 来实现.“Zero” 意义为这个类库没有界面,界面需要由你来建立. 版本: Ze ...
- 使用 jQuery & CSS3 实现优雅的手风琴效果
手风琴效果常用于切换显示一组内容,这种方式既可以节省网页空间又可以有动画效果.今天,我们将创造一个优雅的手风琴内容效果.这个想法是有悬停时滑出一些垂直手风琴标签.我们将添加一些 CSS3 属性来提升外 ...
- Web 开发最有用的50款 jQuery 插件集锦——《图片特效篇》
<Web 开发最有用的50款 jQuery 插件集锦>系列文章向大家分享最具创新的50款 jQuery 插件,这些插件分成以下类别:网页布局插件,导航插件,表格插件,滑块和转盘插件,图表插 ...