首页 > 开发 > 综合 > 正文

SQL语言笔记

2024-07-21 02:46:39
字体:
来源:转载
供稿:网友
SQL语言笔记

字符串用单引号',判断用单等号=,两个单引号''转义为一个单引号'

不等号是<>不区分大小写[]括起来的要不是关键字,要不是非法变量,比如空格隔起来的变量创建与删除数据库
  1.  1 --创建数据库  2 create database School; 3 --删除数据库 4 drop database School; 5 --创建数据库的时候指定一些选项 6 create database School; 7 on PRimary--配置主数据文件 8 ( 9   name='School',--逻辑名称,数据库内部用的名字10   filename='',--保存路径11   size=5MB,--设置初始化大小12   filegrowth=10MB或10%,--设置增长速度13   maxsize=100MB--设置最大大小14 )15 log on--配置主日志文件16 (17   name='',--设置逻辑名称18   filename='',--设置路径19   size=3MB,20   filegrowth=3%,21   maxsize=20MB22 )

创建表
  1.  1 --每个项设置后面都加逗号 最后一项不加 2 --切换数据库 3 use School; 4 --在School数据库中创建一个学生表 5 create table TblStudent 6 ( 7  --表中的定义在这对的小括号中 8  --开始创建列 9  --列名 数据类型 自动编号(从几开始,增长步长) 是否为空(不写默认允许,或者写null 不允许空写 not null)10  --tsid int identity(1,1) not null11    --设置名为tsid 类型为int 从1开始增长,每次增长1的主键列12  tsid int identity(1,1) primary key,13 )

插入数据
  1.  1 --查询表 2 select * from TblClass 3 --insert向表插入数据(一次只能插一条) 4 insert into TblClass(tclassName,tclassDesc) values('tclassName的值','tclassDesc的值') 5 --TblClass后面的括号设置在哪些列插入数据,value后面的括号要与前面的一一对应.如果要给除自动编号的所有列插入数据,TblClass后面的括号可省 6   --插入同时返回指定列的数据:在value前加上output inserted.列名 7  8  9 --向自动编号列插入数据10   --先把一个选项打开 倒数第二个是列名11   set IDENTITY_INSERT tblclass on12   insert........13 --最后记得把选项关掉14 --听过一条语句插入多条数据15 insert into TblClass(tclassName,tclassDesc)16 select '...','...' union17 select '...','...' union18 select '...','...' union19 select '...','...' --最后一项不用union20 --把一个表的书数据插入另一个表21 insert into 被插表(列名,列名)22 select 列名,列名 from 数据来源表23 --插入汉字记得在字符串前加入N

更新数据
  1. 1 update 表名 set 列名=值,列名2=值2 where  条件 and..or...2 --如果没有条件,所有数据都会更新

删除数据
  1.  1 --删除 2 delete from 表名 where 条件 3 --删除整表数!据!与drop不同,两种 4  --1,delete from 表名 5   --速度慢 6   --自动编号依然保留当前已经增长的位置 7   delete from 表名 8  --2,truncate table 表名 9   --速度快10   --自动编号重置11   truncate table 表名

修改表设置
  1.  1  --修该列 2 --删除指定列 3 alter table 表名 drop column 列名 4 --增加指定列 5 alter table 表名 add 列名(这里跟创建表一样) 6   7 --修改指定列 8 alter table 表名 alter column 列名 9   --增加约束10 --给指定列添加主键约束11 alter table 表名 add constraint 约束名 primary key(列名)12 --给指定列添加非空约束13 alter table 表名 alter column 列名 数据类型 not null14 --给指定列添加唯一约束15 alter table 表名 add constrainy UQ开头的约束名 unique(列名)16 --给指定列添加默认约束17 alter table 表名 add constraint 约束名 default(值) for 列名18 --给指定列添加检查约束19 alter table 表名 add constraint 约束名 check(表达式) 20 --增加外键约束21 alter table 表名 add constraint FK_约束名 foreign key(外键列名)references 主键表名(列名)22  23 --删除多个约束24  alter table 表名 drop constraint 约束名,...,...25  26 --创建多个约束27 alter table 表名 add28 constraint 约束名 unique(列名),29 constraint 约束名 check(表达式),30 constraint 约束名 foreign key(要引用列)31 references 被引用表(列) 32 on delete cascade on update cascade --设置级联删除和更新

查询数据(select,top,distinct)
  1. 1 --数据检索,查询指定列的数据,不加where返回所有2 select 列名,列名,... from 表名 where 条件3 --用select显示东西,列名可省略,列名可以不''起来,除非名字有特殊符号4 select 值 (空格或者as) 列名5 --top获得前几条数据,选到的都是向上取整6 select top (数字或数字 percent) * from 表名 order by 列名 (asc//升序,默认值 desc//降序)7 --Distinct去除查询出的重复数据,只要有一点不同(显示出来的列的内容不同)不算重复,比如自动增长的那列8 select distinct 要显示的列 from 表名 ...

联合查询(union,union all)
  1. 合并行叫做"联合"
  2. 联合必须保证每行的数据数目与第一行一致,数据类型兼容
  3. 列名为第一行的列名
  4. union all 在联合时不会去除重复数据,也不自动排序
  5. 不能分别排序
  6. 常用:底部总和
  7. 例:
  8. select
  9. 商品名称,
  10. 销售总价格=(sum(销售数量*销售价格))
  11. fromMyOrders
  12. groupby商品名称
  13. union all
  14. select'销售总价:',sum(销售数量*销售价格)fromMyOrders
连接查询(join....on...)A表 join B表 on 两表关系 例:
  1. 1 select*from TblClass2     jion tblstudent on TblClass.tClassId=TblStudent.tSClassId3   --查询出两个表符合TblClass.tClassId=TblStudent.tSClassId的数据行,并显示其所有数据

连接分为内连接和外连接 内连接: 1,普通内连接 inner join.. on.. 仅筛选两个表都有匹配的数据,例如:
  1. 1  select*from TblClass2     jion tblstudent on TblClass.tClassId=TblStudent.tSClassId

//这里先把两个表的数据拿出,把TblClass.tClassId,与TblStudent.tSClassId相同的那 行构成新的行, //进一步构成新的表,如果TblClass.tClassId有个值为3,而TblStudent.tSClassId没有,那么新的表不会有这行数据,另外这个表是临时存在于内存
  1. 1 select * from TestJoin1Emp emp inner join TestJoin2Dept dept on emp.EmpDeptid=dept.DeptId2 --两者等效3 select * from TestJoin1Emp emp , TestJoin2Dept dept 4 --假设emp与dept,行数分别是3,5.select * from 这两个表,实际会形成3*5=15行的临时表5 --再在这个表中筛选,而这个表叫做笛卡尔表6 where7 emp.EmpDeptid=dept.DeptId

自连接 特点:关系列的值引用的本表中主键列信息 例子:
  1.  1 create table groups 2 ( 3     gid int identity(1,1) primary key not null, 4     gname nvarchar(10), 5     gparent int 6 ) 7 select * from groups 8 insert into groups values('总部',0) 9 insert into groups values('北京分公司',1)10 insert into groups values('上海分公司',1)11 insert into groups values('.net部门',2)12 insert into groups values('.net部门',3)13 --查询部门对应的上级部门14 use Temp15 select deparment.gname as '部门名称',comp
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表