bit 布尔类型
int nvarchar datetime 常用类型
nvarchar(max) 存文章(不超过5000)
字符串 用 ''
. char/nchar,varchar/nvarchar char() 只能放五个中文,定长,如果只放一个字节,后面就是九个空格(一个中文两个字节)
nchar() 放十个中文,定长 varchar()放五个中文,变长,如果只放一个字节,就只放一个字节
nvarchar()放十个中文,变长。。。。。。。 .创建一个数据库,在数据库里面创建表,以及添加表里面的项
create database TestDB create table UserInfor
(
UserId int primary key not null,
UserName nvarchar(),
Pwd nvarchar(),
RealName nvarchar(),
QQ nvarchar(),
Sex nvarchar(),
Age int,
ClassName nvarchar(),
Major nvarchar(),
Birthday datetime
) .select语句用法
select * from UserInfor
select UserId,UserName from UserInfor
select * from UserInfor where (Major='计算机' or '电子商务') and Sex = '女' order by Age
select top * from UserInfor where (Major='计算机' or '电子商务') and Sex='女' order by Age desc
select top * from UserInfor where Major in('计算机' , '电子商务') and Sex='女' order by Age desc select Max(Age) from UserInfor
select Min(Age) from UserInfor
select Avg(Age) from UserInfor
select * from UserInfor where Age >
(
select Avg(Age) from UserInfor
)
select SUM(Age) from UserInfor select count(*) as UserCount from UserInfor where Major='计算机'
--分组
select count(*) as UserCount,Marjor from UserInfor group by Major having count(*)> --模糊查询
select * from UserInfor where RealName like '%刘%' --去除重复数据
select distinct RealName from UserInfor 分页:
查询的区间要连贯 select row_number() over(order by UserId)
select top *
from
(
--查询出所有行号并取别名
select row_number() over(order by UserId) as rownumber,* from UserInfor
) A
where rownumber >
--rownumber > - 第一页
--rownumber > - 第二页
--rownumber > - 第三页
--rownumber > - 第四页
。。。。 select UserId,Age
case
when Age>= and Age<= then '大一'
when Age>= and Age<= then '大二'
else '大三'
end as UserGrade from UserInfor select * from UserInfor where Age>= and Age<=
select * from UserInfor where Age between and select * UserId isnull(ClassName,'一班') from UserInfor --获取系统默认时间
datetime--->getdate()
select year(getdate()) --获取当前年
select year(getdate()) --获取当前年
select year(getdate()) --获取当前年 其他的:
select * from employ where month(birthday)= // 打印出8月份过生日的员工的所有信息
select * from employ where year(getdate())-year(birthday)>// year(getdate())为当前年份,打印出年龄大于25岁的员工的所有信息
select * from employ where year(birthday)= and month(birthday)= and day(birthday)= //打印出生日为2008-8-12日的所有员工信息 select dateadd(yy,,getdate())//当天加上100年的时间,getdate()也可以换成具体的某一天比如写成:'2108/12/31'
select dateadd(mm,,getdate())//当天加上1个月的时间
select dateadd(dd,,getdate())//当天加上100天的时间 select datediff(yy,getdate(),'2108/12/31')//当天距离2108/12/31还有多少年
select datediff(mm,getdate(),'2108/12/31')
select datediff(dd,getdate(),'2108/12/31') create table StuScore
(
ScoreId int primary key not null,
UserId int,
MathScore float,
ChineseScore float,
PCScore float
)
--联合查询
select UI.UserId,UI.UserName,UI.QQ,UI.RealName,SS.ScoreId,SS.ChineseScore form UserInfor UI.StuScore left join StuScore SS
on UI.UserId=SS.UserId --以左边的表为准 select UI.UserId,UI.UserName,UI.QQ,UI.RealName,SS.ScoreId,SS.ChineseScore form UserInfor UI.StuScore right join StuScore SS
on UI.UserId=SS.UserId --以右边的表为准 select UI.UserId,UI.UserName,UI.QQ,UI.RealName,SS.ScoreId,SS.ChineseScore form UserInfor UI.StuScore inner join StuScore SS
on UI.UserId=SS.UserId --两边都有 create table Parent
(
ParentId int primary key not null,
UserId int,
MMName nvarchar(),
FatherName nvarchar()
) ---三张表的联合查询
select UIS.*,SP.MMName,SP.FatherName from
(
select UI.UserId,UI.UserName,UI.QQ,UI.RealName,SS.ScoreId,SS.ChineseScore form UserInfor UI.StuScore inner join StuScore SS
on UI.UserId=SS.UserId
) UIS inner join Parent SP
on UIS.UserId=SP.UserId insert into Parent values('','大西街','回合肥') --主键自增不用添加
insert into Parent (UserId,MMName,FatherName) values('','大西街','回合肥' ) update Parent set MMName='sss',ParentName='fff' where ParentId=
delete Parent where ParentId= --删之前一定要备份 create table A
(
AId int primary key not null,
UserId int,
AMMName nvarchar(),
AFName nvarchar()
) --复制数据
insert into A(UserId,AMMName,AFName) select UserId,MMName,FartherName from Parent --约束:
右键-check-表达式-保存 一、 索引
() 概述
表的存储由两部分组成,一部分用来存放数据页面,另一部分存放索引页面。
索引的功能类似百科全书中的目录,使用索引是快速查找数据库中实际信息的一种方法。
索引分为:
聚集索引--------每一个表只能有一个聚集索引,它对应的表按照其索引进行物理排序,对于百科全书,聚集索引就类似于书的页码,按页码顺序保存着百科全书的信息。
非聚集索引-------每一个表可以有多个非聚集索引,对于百科群书,非聚集索引指的是百科全书后面的关键字目录。
()两者选择
情况描述 使用聚簇索引 使用非聚簇索引 用于返回某范围内数据的列 应 不应 经常被用作分组排序的列 应 应 小数目不同值的列 应 不应 连接操作使用的列 应 应 频繁更新、修改的列 不应 应 一个或极少不同值的列 不应 不应 大数目不同值的列 不应 应
()创建索引时注意事项
) 默认情况下,SQL Server会默认主键为聚集索引,这样会造成资源的浪费。 假设病人费用表名为“brfy”,其中住院号字段名为“zyh”,日期字段名为“riqi”,要求是从表brfy中检索zyh为“”的病人2005年3月1日到20日的费用,对应的SQL语句如下:
Select * from brfy where zyh=’’ and riqi>=’’ and riqi<=’’;
第一种情况,用ID列建立聚簇索引,不为zyh和riqi建立索引,查询时间为87秒。
第二种情况,用ID列建立聚簇索引,为zyh和riqi两列建立非聚簇索引(zyh在前),查询时间为33秒。
第三种情况,用zyh和riqi两列建立聚簇索引(zyh在前),查询时间为2秒。
由以上分析可以看出聚簇索引是非常宝贵的,应该为经常用于检索某个范围内数据的列或group by、order by等子句的列建立聚簇索引,这样能够极大的提高系统性能。 )顺序问题
在第二、第三种情况下,如果把riqi放在zyh前面,执行上述SQL语句就不会用到这两个索引,检索的时间也会变得很长。应该按照顺序来。 ) 索引的维护
数据库系统运行一段时间后,随着数据行的插入、删除和数据页的分裂,索引对系统的优化性能就会大大降低。这时候,我们需要对索引进行分析和重建。
SQL Server使用DBCC SHOWCONTIG确定是否需要重建表的索引。在 SQL Server的查询分析器中输入命令:
Use database_name
Declare @table_id int
Set @table_id=object_id ('Employee')
Dbcc showcontig (@table_id)
在命令返回的参数中Scan Density 是索引性能的关键指示器,这个值越接近100%越好,一般在低于90%的情况下,就需要重建索引。重建索引可以使用DBCC DBREINDEX,使用方式如下:
dbcc dbreindex('表名', 索引名, 填充因子) /*填充因子一般为90或100*/
如果重建后,Scan Density还没有达到100%,可以重建该表的所有索引:
dbcc dbreindex('表名', '', 填充因子) 右键-索引-重新组织-重新生成
右键-索引-删除 ()如何建索引
在“索引/键”对话框中单击“添加”。
从“选定的主/唯一键或索引”列表中选择新索引。
在网格中选择“创建为聚集的”,然后从该属性右侧的下拉列表中选择“是”。保存表时将在数据库中创建索引。 二、 视图
视图是一种虚拟表,它的使用基本和表的使用类似,主要目的是控制用户所要显示的数据。
创建一个视图:
Eg:
create view CurrentEmployees_vw
as
select categoryID,[name],age from Category
where state= 在Management stodio中编辑视图(方法略) 三.存储过程
)优点:在创建时进行编译,以后每次执行存储过程不需要再编译,而一般的SQL语句要每执行一次编译一次(所以一些复杂逻辑的SQL建议写在存储过程里面);存储过程过重复使用,可减少数据库开发人员的工作量(所以一些经常被调用到的SQL建议写在存储过程里面);安全性高,可设定只有某些用户才具有指定存储过程的使用权。 )基本语法
Eg:
create proc procUserInfor
(
@UserName varchar(),
@Pwd nvarchar()
)
as
select * from UserInfor where UserName=@UserName and Pwd=@Pwd ---登录时用到的语句可以用存储过程
) 查看结果exec procUserInfor '萨顶顶',''
) 更改/删除存储过程
ALTER proc
Drop proc )流控制语句
Eg:
create proc procNewsInsert
(
@creatTime datetime
)
as
if datediff(dd,@creatTime,getdate())> /*creatTime距离当天大于天*/
begin;
select * from News
end;
else
begin;
select top * from News
end; 执行:exec procNewsInsert '2009-05-10 11:36:43.810' 结果: 四 触发器
触发器是一种特殊的存储过程,它是在数据在进行增、删、改的时候同时进行的操作,相当于一个事件。
新建一个触发器: 写的脚本:
Eg1:
create trigger trigCategoryDelete
ON Category
after delete /* 有三种INSERT,DELETE,UPDATE*/
AS
begin
select * from deleted /*在删除后同时查出删除后的内容*/
end
GO 执行: Eg2:
create trigger trigCategoryDelete
ON Category
instead of delete /* instead of,表示当执行删除的时候这个删除语句被begin下面的语句所代替*/
AS
begin
declare @id int
select @id=id from deleted
delete news where caID=@id
delete category where id=@id
end
GO 执行:
delete from category where id= /*这样就可以删除category里面id=5的东东的同时删除news里面id=5的东东了 */ backup database TestDB to disk='h://123.bak'

初学sql的更多相关文章

  1. 3_初学sql注入

    sql注入的分类:布尔型 报错型 可联合查询型 多语句查询型 基于时间延迟注入 1.注释符 # /* -- 2.过滤空格注入 使用/**/或()或+代替空格 3.多条数据显示 concat(str1, ...

  2. 初学SQL语句练习2

    -- 子查询 --单行子查询-- 查询出所有比雇员姓名为“CLARK ”工资高的员工的信息 SELECT * FROM EMP WHERE SAL > (SELECT SAL FROM EMP ...

  3. 初学SQL常用到的一些指令

    一.库 查看有哪些库:show databases; 进入某个库:use 库名; 新增库:create database atm; (atm为库名) 删除库:drop database if exis ...

  4. 初学SQL语句练习1

    --[1 ]查询出每个月倒数第三天受雇的所有员工SELECT * FROM EMP WHERE HIREDATE=LAST_DAY(HIREDATE)-2; --[2 ]找出早于30 年前受雇的员工S ...

  5. 如何写复杂的SQL

    经常有人问我那非常复杂的sql是怎么写出来的,我一直不知道该怎么回答.         因为虽然我写这样的sql很顺手,可是我却不知道怎么告诉别人怎么写. 很多人将这个问题归结为天赋,我却不这么看,我 ...

  6. 转:如何学习SQL(第一部分:SQL基础)

    转自:http://blog.163.com/mig3719@126/blog/static/285720652010950712271/ 1. 为什么学习SQL 自人类社会形成之日起,社会的运转就在 ...

  7. 第一章 SQL基础

    第一部分:SQL基础1. 为什么学习SQL自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献.档案.资料.数据等):在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到 ...

  8. SQL Server温故系列(0):导航目录

    创建本系列博文通用库表及数据的 SQL 语句:下载 SQL Server温故系列(0):导航目录 SQL Server温故系列(1):SQL 数据操作 CRUD 之增删改合 SQL Server温故系 ...

  9. 【SQL】各取所需 | SQL JOIN连接查询各种用法总结

    前面 在实际应用中,大多的查询都是需要多表连接查询的,但很多初学SQL的小伙伴总对各种JOIN有些迷糊.回想一下,初期很长一段时间,我常用的似乎也就是等值连接 WHERE 后面加等号,对各种JOIN也 ...

随机推荐

  1. c#委托事件入门--第二讲:事件入门

    上文 c#委托事件入门--第一讲:委托入门 中和大家介绍了委托,学习委托必不可少的就要说下事件.以下思明仍然从事件是什么.为什么用事件.怎么实现事件和总结介绍一下事件 1.事件是什么:. 1.1 NE ...

  2. s​q​l​i​t​e​3​-​入​门​教​程

    *** 非常好 http://wenku.baidu.com/link?url=xDoS4prJaGRac0QS0nxdNr6056N-qJIfZ7OhiTharj1ntuIsNy9sWXWvBXLh ...

  3. servlet入门学习之工作原理解析

    从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力 ...

  4. 新手数据比赛中数据处理方法小结(python)

    第一次参加,天池大数据竞赛(血糖预测),初赛排名1%.因为自己对python不熟悉,所以记录一下在比赛中用到的一些python方法的使用(比较基础细节,大佬绕道): 1.数据初探 data.info( ...

  5. Azure Powershell对ASM资源的基本操作

    本文主要介绍Windows Azure Powershell对ASM资源的基本操作 1.登陆ASM模式,命令:Add-AzureAccount -Environment AzureChinaCloud ...

  6. Python中几种数据类型list, tuple,dict,set的使用演示

    还是直接上代码,看着代码运行,看函数介绍 # coding=utf-8 # 1 list-列表 的用法 students = [1,2,3] a = 5 classmates = [students* ...

  7. Linux指令--diff

    diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件.diff程序的 ...

  8. Tomcat服务器的Web安全的解决方法

    .概述 在任何一种WEB应用开发中,不论大中小规模的,每个开发者都会遇到一些需要保护程序数据的问题,涉及到用户的LOGIN ID和PASSWORD.那么如何执行验证方式更好呢?实际上,有很多方式来实现 ...

  9. asp.net core 部署到服务器之后外网访问不了

    部署发现问题 今天在部署.net core的时候,发现访问http://localhost:xxxx可以,但是用外网访问并不行! 开始尝试解决问题 一开始以为是nginx的问题.各种折腾,各种改配置文 ...

  10. jdbc与java.sql

    JDBC连接操作数据库流程:1.将数据库驱动jar包放在lib文件夹下. 2.定义驱动名(driver),数据库url,username,password字符串常量 3.注册数据库驱动Class.fo ...