您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > SQL Server 基础语句
一、数据库基本操作1.建数据库(1)对象资源管理器,右键建立数据库,可以命名数据库和修改其各参数。(2)T-SQL语句。新建查询(还可新建项目)。CREATEDATABASEdata_nameONPRIMARY数据文件(NAME=’data’,逻辑名字FILENAME=’D:\data.mdf,物理名字SIZE=5MB,MAXSIZE=30MB,FILEGROWTH=128KB)LOGON日志文件(NAME=’data_log’,FILENAME=’D:\data_log.ldf’,SIZE=1MB,MAXSIZE=8MB,FILEGROWTH=5%)GO2.修改数据库(1)修改容量。方法一:对象资源管理器,找到该数据库,右键点属性修改其各参数。方法二:T-SQL语句。一般修改。SIZE,MAXSIZE,FILEGROWTH都可以改,但是SIZE只能改的比初始值大。ALTERDATABASEdata_nameMODIFYFILE(NAME=’data_name’,(指明数据文件还是日志文件)SIZE=10MB(MAXSIZE=40MB,FILEGROWTH=15%))GO缩减容量。(1是收缩比。怎么比例法?)DBCCSHRINKDATABASE('ican',1)(2)修改名称方法一:对象资源管理器,找到该数据库,右键点重命名。方法二:T-SQL语句。EXECSP_RENAMEDB‘old_name’,’new_name’3.删除数据库(一旦删除,不能恢复)方法一:对象资源管理器,找到该数据库,右键点删除。方法二:T-SQL语句。DROPDATABASEdata_name4.数据库分离和附加分离:对象资源管理器,找到该数据库,右键点任务点分离附加:对象资源管理器,数据库,右键点附件点添加,就恢复了分离出去的数据库二、表的基本操作1.常用数据类型2.建立表方法一:对象资源管理器,找到该数据库,找到表,右键点新建表。方法二:T-SQL语句创建createtabletable_name(学号intprimarykeyidentity,姓名char(6)notnull,专业方向varchar(50)notnull,系部代码char(2)notnull,备注varchar(50))createtablet2(idintnotnull,学号intconstraintfkreferencestable_name(学号)(primarykey:主键,identity:标识列,constraintfk:外键名称,referencestable_name(学号):参照对象)3.查看表方法一:对象资源管理器,找到该数据库,找到表,右键点属性。方法二:使用系统存储过程sp_helpEXECsp_helptable_name4.修改表的结构方法一:对象资源管理器,找到该数据库,找到表,找到建立的表,右键点修改\设计。方法二:T-SQL语句。重命名表:Execsp_rename‘old_table_name’,’new_table_name’重命名表:Execsp_rename‘table.列名’,’新列名’,’column’添加列:Altertabletable_nameAdd新列名varchar(4)修改列的数据类型:Altertabletable_nameAltercolumn列名intnotnull删除列:Altertabletable_nameDropcolumn列名删除表:(不能恢复)Droptabletable_name删除表里所有数据:Truncatetabletable_name创建主键约束,创建外键约束:方法一:(例子:建t1,t2两个表,第1列均命名为id)主键:对象资源管理器,找到该数据库,找到表,找到建立的表1,右键点修改\设计。找到列,右键点设置主键,保存。外键:对象资源管理器,找到该数据库,找到表,找到建立的表2,找到键,右键点新建外键,填好名称,点表和列规范,选好主键表和外键表。方法二:T-SQL语句。主键:altertablet1addconstraintpk——建立主键约束primarykeyclustered(id)——主键指向字段id外键:altertablet2addconstraintwz——建立外键约束,外键名称为wzforeignkey(id)——外键指向字段idreferencest1(id)——参照表t1的id字段三、数据添加删除修改方法一:对象资源管理器,找到该数据库,找到表,找到建立的表,右键点编辑。方法二:T-SQL语句(例子:下表)1.数据的添加:insert语句2.一般输入:Insertst_tablevalues(1,‘张三’,’计算机’,’04’,’没有’)选择输入:Insertst_table(学号,姓名,专业方向,系部代码)Values(2,’李四’,’计算机’,’04’)不用values的选择输入:Insertst_table(学号,姓名,专业方向,系部代码)Select学号,姓名,专业方向,系部代码formst_table(意思是选中当前表里提到的所有项,再把它们添加到表里,表里的数据就是以前的两倍了)2.数据的修改:update语句Updatest_tableset系部代码=’01’(全部系部代码都变成01)Updatest_tableset专业方向=’化学’where专业方向=’通信’(专业方向里所有通信变成化学)改变值之间还可以逗号隔开updatest_tableset专业方向='美术',系部代码='09'where姓名='王五'3.数据的删除:delete语句删除的是行(记录)Deletest_table(添加的所有行都被删掉)Deletest_tablewhere专业方向=’化学’(所有专业方向为化学的行都被删掉)四、数据查询Select列表明From表或视图名Where查询限定条件1.输出所有列Select所有数段名Fromtable_nameSelect*Fromtable_name2.输出部分列SelectA,B,CFromtable_name3.输出不重复记录Selectdistinct字段名fromtable_name4.限制返回行数Selecttopn*fromtable_name5.常用查询条件(where)(1)比较大小也是不等于,也有=Select*fromtable_namewhere学号10(2)确定范围Select*fromtable_namewhere学号between2and3(3)确定集合Select*fromtable_namewhere学号in(1,3)(4)字符匹配Select*fromtable_namewhere姓名like‘张_’_:不确定一个字符%:不确定任意多个字符(5)涉及空值的查询Select*fromtable_namewhere备注isnull否定:isnotnull(2012是)(6)多重条件And:且(与)or:或not:非6.完整select语句的基本语法格式Select字段名(into新表名)From表名(Where条件)(groupby分组数段)(having条件)(orderby数段名)7.用查询到的数据建立一个新的表intoSelect*intonew_table_namefromtable_name创建临时表Select*into#new_table_namefromst_table(新表出现在tempdb的临时表中)8.对结果进行分组groupbyhaving+条件Select专业方向fromst_tablegroupby专业方向Select专业方向fromst_tablegroupby专业方向having专业方向‘美术’9.对结果排序orderby升序:asc降序desc默认升序Select*fromst_tableorderby学号五、对数据进行统计1.count统计记录个数Selectcount(*)fromtableSelectcount(*)as总人数fromtable——为统计结果命名,as写不写都可以Selectcount(数段名)as总人数fromtable2.sum求和(该列必须是数值型)Selectsum(学号)as学号总和fromtable3.Avg求平均值(该列必须是数值型)Selectavg(学号)as学号平均值fromtable4.Max求最大值Selectmax(学号)as最大学号fromtable5.Min求最小值Selectmin(学号)as最小学号fromtable6.Compute,对查询结果集中的所有记录汇总统计Compute+集合函数集合函数如:count(),sum(),avg()等。例1:例2::备注:compute后面集合函数的()里,可以直接使用的结果集里出现的本来就在表里的字段名(如专业方向),结果集里出现的但表里本身没有的不要直接用,要用表达式代替(如count(*))。六、连接查询Select*from表1crossjoin表2例:有学生表,班级表,专业表,系部表1.交叉连接查询(1)Select学生.姓名,学生.性别,班级.班级名称from学生crossjoin班级表1的所有数据与表2的第1个数据进行拼接,然后表1的所有数据与表2的第2个数据进行拼接,以此类推。新数据集=表1所有记录X表2所有记录。(2)Select学生.姓名,学生.性别,班级.班级名称from学生crossjoin班级where学生.班级代码=班级.班级代码列值相等就进行拼接,形成一条记录,否则不拼接。2.自然连接类似交叉连接,格式不同,满足条件就连接,否则不连。Select学生.姓名,学生.性别,班级.班级名称from学生join班级on班级代码=班级.班级代码(结果同上)3.自身连接查询(觉得意义不大)Selecta.姓名,b.性别from学生asajoin学生asbona.学号=b.学号4.外连接查询例:两个表如下产品产品销量左连接:Select*from产品leftjoin产品销量on产品.产品编号=产品销量.产品编号右连接:Select*from产品rightjoin产品销量on产品.产品编号=产品销量.产品编号完全连接:Select*from产品fulljoin产品销量on产品.产品编号=产品销量.产品编号5.合并结果集Select姓名,性别,出生日期from表1UnionSelect姓名,性别,出生日期from表2(结果会过滤掉相同部分。查询的字段的名称,个数,类型必须相同)七、多表查询和子查询1.复合连接查询(多表连接Select表1.字段1,,表2.字段2,表2.字段,表3.字段,表4.字段from表1jion表2on表1.字段A=表2.字段Ajion表3on表1.字段B=表3.字段Bjion表4on表1.字段C=表4.字段C2.子查询(必须有where或having,having必须有groupby)(1)带in(in返回的是集合)(2)带比较的子查询(各种运算符)(3)带有any或allAny:any()All:all()4.带exist子查询非空(至少存在一条为真),父查询的where子句返回true,否则返回FALSE八、数据完整性(一)完整性1.实体完整性每一条记录都是唯一的,不存在完全相同的两条记录。2.域完整性字段必须满足某种特定数据类型或约束。3.参照完整性主键外键数据类型一致。4.用户定义完整性根据环境不同,需要特定约束,用户定义满足。(二)约束类型(三)约束创建1.主键约束2.外键约束3.唯一约束(字段值数据唯一,如系部名称中不能有相同的两个系)(1)对象资源管理器对象资源管理器,找到该数据库,找到表,找到建立的表,右键点设计。找到列名,右键点索引,点添加,在名称那里命名,在是唯一的那里选是,在列那行打开连接,列名选系部名称(即需要是唯一的那列)。对象资源管理器,找到该数据库,找到表,找到建立的表
本文标题:SQL Server 基础语句
链接地址:https://www.777doc.com/doc-5320217 .html