SQL SERVER 基本操作语句
Sql 是一种结构化的查询语言;
Sql是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理‘关系型数据库’系统;
Sql对大小写不敏感;
Sql不是数据库,是行业标准,是结构化的查询语言
Int
Char(30)—字段中只能接受30个英文字母或15个中文
Varchar(30)
1)经常变化的字段用varchar;
2)知道固定长度的用char;
3)尽量用varchar;
4)超过255字节的只能用varchar;
数值:int类型(整数类型);
所有字符串都要用单引号;
Sql语句:
1、 create database database_name; --创建数据库
2、 use database_name; --引用数据库
3、 create table table_name(列名1 数据类型,,
列名2 数据类型,…..
列名n 数据类型); --创建表
4、 select * from 表名; --查看表内所有列的信息
select 列名1,列名2 from 表名;
select语句用于从表中选取数据。
5、 约束:not null
Unique 唯一约束 --没有冗余数据
Primary key –必须包含唯一的值,主键列不能包含null值
6、 drop table table_name; --删除表
7、 insert into 表名 values(值1,值2…); --值与列必须要一一对应
insert into 表名 (列1,列2…)values (值1,值2…);
8、AS --为列名和表名别名
Select 列名 as 新列名 from 表名;--列名别名
9、 where --条件语句
select 列名 from表名 where列 (运算符)=‘值’;
10、单行注释 --
多行注释 /*….*/
11、修改数据结构
1)alter table 表名 alter column 列名 数据类型; --修改数据结构(修改列的属性)
例:alter table 表名 alter column country varchar(250);
alter table 表名 alter column country varchar(250) null;
2)alter table 表名 add constraint 约束名 unique(列的约束);
Alter table 表名 drop constraint 约束名;
3)alter table 表名 add column 列名 数据类型;
4)alter table 表名 drop column 列名;
12、数据的修改、更新
Update 表名 set 列名=新值where 列名=某值;
13、 1)between…and…
Select 列名from表名 where 列名 between 值1 and 值2;
Select 列名from表名 where 列名 between ‘字符串1’ and ‘字符串2’;
2)Not between…and…
14、 1)like --模糊查询
仅和where搭配使用,通配符“%”仅和like连接使用
Select 列名 from 表名 where 列名 like ‘n%’/ ’%n%’ / ’%n’
2)Not like
15、 and or
1)and和or运算符用于基于一个以上条件对记录进行过滤;
2)and 和or 可在where子语句中把两个或多个条件结合在一起;
3)若两个条件都成立,则and运算符显示一条记录;
4)如果两个条件只要有一个成立,则or运算符显示一条记录;
5)and 和or在sql语句中的位置不分先后顺序,查询结果皆一致;
6)执行规则:先计算and运算符在计算or运算符;
16、in
1)在一个集合里面,用()包含,查询的列放在括号里,用逗号隔开
2)字符串类型加单引号;-- 允许在where子句中规定多个值
3)不能跟匹配符连用;
Select 列名 from表名where列名 in(值1,值2,….);
17、distinct --只支持单列
Select distinct(列名)from 表名;
18、order by --排序 多个条件时,先满足第一列的条件
1)用于根据指定的列对结果集进行排序
2)默认升序对记录进行排序—asc
3)降序—desc
4)字母,数字都可以随意进行升降排序
5)允许多个列的排序,但是排序优先级由左到右
19、top --规定要返回的记录的数目
1)top 6 –前6
2)top 6 desc –倒数6位
3)top 50 percent --前半部分
4)top50 percent desc—后半部分
20、delete --删除数据(删除表中的某行或所有行)
--只能删除整行的数据,无法删除指定单元格数据。
Delete from 表名 where 列名=值;
21、identity --自增长
例:id int identity
Id int identity(1000,1)
22、check约束
--用于限制列中的值的范围
Create table 表名 (姓名 VARCHAR (100) ,
年龄 INT CHECK ( 年龄 >= 18 AND 年龄 <= 30 ), -- 这里不能用OR
性别 CHAR(4) CHECK (性别 = '男' OR 性别 = '女') -- 这里不能用AND
);
23、default 约束 --用于向列中插入默认值
如果不再为具有default约束的列额外进行值输入的话,则自动填入默认值;反之,则填入所输入的值;
例:CREATE TABLE INSERT_DEFAULT_EXAM_DATE
(
Id INT PRIMARY KEY IDENTITY ,
姓名 VARCHAR(100) NOT NULL ,
考试时间 DATE DEFAULT '2018-05-20'
);
24、check和default约束的区别
1)check约束强制只能对含此约束的列输入约束的值;
2)default 约束比较自由,如果输入了值,则生效;如果(允许)不输入值,则使用设定的默认值并将其插入表中的列。
25、null --必须使用is null和 is not null
1)select * from 表名 where 列名 is null;(列名为空时,查看信息)
2) select * from 表名 where 列名 is not null;(列名不为空时,查看信息)
26、用于计算和计算的内建函数
1)sum
2)Avg --返回数值列的平均值/null值不包括在计算中
Select avg(列名)from 表名;
例:SELECT 姓名 FROM 软件测试考试分数表_重制版
WHERE QTP得分 > (SELECT AVG(QTP得分) FROM 软件测试考试分数表_重制版);
27、isnull --用于规定如何处理NULL值
例:select 姓名,(测试理论得分+isnull(sql得分,0)+QTP得分+Selenium得分)as 各科考试总分 from 表名 where 列名=值;
28、1)max()--返回一列中的最大值
Select max(列名)from 表名;
例:select max(QTP得分)as QTP最高得分 from 表 where 班级=‘一班’;
2)Min()--返回一列中的最小值
Select min(列名)from 表名;
例:select name from 表 where SQL得分= (select min(SQL得分)from 表);
3)Sum() --返回数值列的总数 只针对于数字类型进行求和
Select sum(列名) from 表名;
4)Avg()
注:max和min也可用于文本列,以获得按字母顺序排列的最高或最低值。
29、count --计数 返回匹配指定条件的行数
1)Select count(*)from 表名;--返回表中的记录数
例1:select count(*) from 表; --查询表中所有记录
2)Select count(列名)from 表名; --返回指定列的值的数目
例2:select count(name) as 一班的学生数from 表 where 班级=‘一班’;
-- 对指定列进行计数
3)select count (distinct 列名)from 表名; --返回指定列的不同值的数目
例3: select count(distinct 班级)from 表;--显示不重复的记录
唯一键—distinct
30、len –长度 --返回文本字段中值的长度 length
Select len(列名) from 表名;
例1:select len(考点)as 考点的长度 from 表 where name =‘张三’;
31、无关联性多表查询
1)select * from (SELECT 姓名, QTP得分 FROM 软件测试考试分数表_重制版
WHERE QTP得分 > (SELECT AVG(QTP得分) FROM 软件测试考试分数表_重制版)) AS 临时表1,
(SELECT AVG(QTP得分) AS QTP考试平均分 FROM 软件测试考试分数表_重制版) AS 临时表2;
2)SELECT 临时表1.姓名, 临时表1.QTP得分, 临时表2.QTP考试平均分 FROM
(SELECT 姓名, QTP得分 FROM 软件测试考试分数表_重制版
WHERE QTP得分 > (SELECT AVG(QTP得分) FROM 软件测试考试分数表_重制版)) AS 临时表1,
(SELECT AVG(QTP得分) AS QTP考试平均分 FROM 软件测试考试分数表_重制版) AS 临时表2;
例1:--查询学生姓名和qtp得分,并将qtp平均分显示出来
Select * from (select name,QTP得分 from 表名 where QTP得分 >(select avg(QTP得分) as 平均分 from表)) as table1,(select avg(QTP得分)as 平均分 from表) as table2;
32、1)foreign Key (约束)references --可添加多个外键约束
--一个表中的foreign key指向另一个表中的primary key。
--外键只能连接你想连的那张表的主键(一般id为主键)
例:CREATE TABLE 班级表
(Class_Id INT PRIMARY KEY,
班级 VARCHAR(10) NOT NULL
);
CREATE TABLE 学生表
(Student_Id INT PRIMARY KEY,
姓名 VARCHAR(10),
Student_Class_Id INT FOREIGN KEY REFERENCES 班级表(Class_Id)
);
2)增加单个外键约束
例1:alter table 学生表 add foreign key (student_class_id)references 班级表(class_id);
3)增加多个约束
例2:alter table 学生表 add constraint 约束名 foreign key(student-class_id) references 班级表(class_id);
4)撤销约束
例3:alter table 学生表 drop constraint 约束名;
例4:select * from 班级表,学生表 where 班级表.class_id=学生表.student_class_id;
33、group by
--合计函数(例sum,max,min,len)常常需要添加group by语句
1)单个列进行分组
Select 列名,合计函数(列名)from 表名 where…group by 列名;
例:select 商场专柜,sum(销售价格) as 情人节当天的香水总销售额
From 表名 where 销售时间=‘2018-02-14’group by 商场专柜 order by 情人节当天的香水总销售额 desc;
2)多个列进行分组
例: select 销售时间,商场专柜,sum(销售价格)as 专柜当天的香水总销售额 from 表
Group by 销售时间,商场专柜
Order by 销售时间 desc,商场专柜 asc;
34、1)group by ….having…
例1:select 商场专柜,sum(销售价格) as 总销售额 from 表
Group by 商场专柜 having sum(销售价格)>600 order by 总销售额 desc;
例2:select 商场专柜,销售时间,sum(销售价格) as 销售总额 from 表
Group by 商场专柜,销售时间 having sum(销售价格)>500 order by 销售总额 desc;
2)where也可以在group by 中使用
例1:Select 商场专柜,sum(销售价格) from 表 where 销售时间=‘ 2018-02-14’ group by 商场专柜 having 销售价格>500
Order by sum(销售价格)desc;
例2:select top 1 香水编号_外键,count(香水编号_外键)from 表 where 销售时间=‘2018-02-14’ group by香水编号_外键 order by count(香水编号_外键)desc;
例3:select 商场专柜,销售时间,count(香水编号_外键) as 香水销量 where 销售时间 in(‘2018-02-14’,‘2018-03-14’) and len(香水编号_外键)<=4 from 表 Group by 销售时间 order by count(香水编号_外键) desc;
35、连接
1)内连接—(inner )join --通过主键和外键进行连接
--表之间有匹配数据(主键和外键的匹配)就查询到,没有匹配数据就查询不到,找出两表中关联相等的行。
select * from 表1 inner join 表2 on 表1.A=表2.A;
例1:select 商场专柜,销售时间,所属品牌,香水名称,销售价格 from 香水信息表 inner join 商场专柜销售情况表 on 香水信息表.香水编号_外键=商场专柜销售情况表.香水 编 号_外键 order by 商场专柜 asc,销售时间 desc;
2)左连接 --left join
--从左表那里返回所有的行,即使在右表中没有匹配的行
Select 列名 from 表1 left join 表2 on 表1.A =表2.A and 其他条件;
例:select * from香水信息表 left join商场专柜销售情况表 on 香水信息表.香水编号_外键=商场专柜销售情况表.香水编号_外键 (显示香水信息表所有记录)
3)右连接 --right join
--右表返回所有行,即使在左表中没有匹配的行
Select 列名 from表1 right join 表2 on 表1.A=表2.A.
例:select * from香水信息表 right join商场专柜销售情况表 on 香水信息表.香水编号_外键=商场专柜销售情况表.香水编号_外键 (显示商场专柜销售情况表所有记录)
SQL SERVER 基本操作语句的更多相关文章
- 如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?
如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何 ...
- SQL Server分页语句ROW_NUMBER,读取第4页数据,每页10条
SQL Server分页语句ROW_NUMBER,读取第4页数据,每页10条 SELECT Id,[Title],[Content],[Image] FROM ( SELECT ROW_NUMBER( ...
- SQL Server UPDATE语句的用法详解
SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解. 现实应用 ...
- SQL Server中语句的自动参数化
原文:SQL Server中语句的自动参数化 use master go if exists(select * from sys.databases where name = 'test') drop ...
- SQL Server基本操作积累
一.基本操作 1.将数据绑定到DataGridVirw控件上显示的数据列标题将会是数据库中的字段名称,可以在使用select语句时使用AS关键字将转化为列名的别名 select name AS 姓名 ...
- SQL server 常用语句
SQL Server中常用的SQL语句 1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...
- sql server 基础语句
创建数据库 创建之前判断该数据库是否存在 if exists (select * from sysdatabases where name='databaseName') drop database ...
- SQL Server Merge语句的使用
Merge关键字在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句.MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插 ...
- SQL Server 脚本语句
一.语法结构 select select_list [ into new_table ] from table_source [ where search_condition ] [ group by ...
随机推荐
- 【原创】大叔问题定位分享(1)HBase RegionServer频繁挂掉
最近hbase集群很多region server挂掉,查看其中一个RegionServer1日志发现,17:17:14挂的时候服务器压力很大,有大量的responseTooSlow,也有不少gc,但是 ...
- cocos2dx-lua 圆角矩形 圆角图片 drawNode
使用的官方类是:drawNode 函数是:drawNode:drawPolygon() C++函数的参数说明: //画多边形,verts为点集,count为点数,fillColor为填充颜色,bord ...
- gerrit和git
1.git Git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN是集中式版本控制系统. Git与svn比较 相同:能记录文件的所有更改记录.这样是为了大量更改后,可以有记录回到过去, ...
- Allegro PCB Design GXL (legacy) 将brd文件另存为低版本文件
Allegro PCB Design GXL (legacy) version 16.6-2015 参考:https://blog.csdn.net/qq_29761395/article/detai ...
- C++\CLI语法 在项目中的使用
通常情况下,对一个标准的com组件进行集成,网上普遍使用的方式有: 1.#import *.dll 或 #import *.ocx的方式,VS编译器重新编译后,就会自动生成组件对应的*.tlh文件,该 ...
- 批量执行 sql 的 shell 脚本
最近有用到需要批量导入N个表的sql,一个个导入会吐老血的,写了个shell脚本,便捷导入. 通常我们导入单个sql,可以用 $mysql -uroot -p world < xxxx.sql ...
- SQL SERVER 打开脚本报“未能完成操作,存储空间不足”
使用用SQLCMD命令行. 1.快捷键:win+R 2.输入cmd,确定 3.输入命令:sqlcmd -S <数据库服务器名称> -i C:\<脚本文件路径>.sql 例:s ...
- php判断浏览器还是微信打开
本人亲测,但是存在一个小问题,就是用此方法在手机端打开会显示Google Chrome,但是在PC端是没有问题的,现在还在测试,先把第一版代码分享给大家! if(strpos($_SERVER['HT ...
- ssl证书专题(2):自签名ssl 证书生成
参考: https://www.cnblogs.com/littleatp/p/5878763.html https://www.cnblogs.com/hnxxcxg/p/7610582.html
- git操作:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (警告:远程主机标识已更改!)
问题背景: 前几日,把云服务器系统由centos改成Ubuntu之后,重新搭建的git服务器环境. 问题描述: 从本机不能clone远程git仓库. 报错如下: @@@@@@@@@@@@@@@@@@@ ...