1、04修改数据子查询的使用例:Northwind 公司需要列出每笔交易的交易号,交易时间以及此笔交易中最大的交易单价。Select ord.ordered, ord.orderdate, (select max(orddet.unitprice)From northwind.dbo.order details as ordetWhere ord.ordered=orddet.ordered) as maxunipriceFrom northwind.db.orders as ord修改数据 数据的更新、数据的插入、数据的删除(对表的结构没有影响)插入数据 加入新的数据修改数据 对现有的数据删除数
2、据 对现有数据中不需要的,或作错误的例:将新客户的信息存储进Customers 表中。列名数据Customerid 公司代号PECOFCompanyname 公司名称Pecos coffee companyContactname 联系人名称Michael dunnContacttile 联系的方式OwnerAddress1900 oak streetCityVancouverRegionBcPastalcodeV3f 2k1CountryCanadaPhone(604)555-3392Fax(604)555-7293一、INSERT 语句添加到数据库中的最小单位是行;整行的插入语法:inser
3、t into 表名 列名1 values 值1(简写成:insert into 表名 字段列表 values 值列表)表名,指定要添加数据的表的名字values,指定要插入表中的列所包含的值SQL SERVER允许将部分数据插入到表中,这些表的的某列允许为null或具有默认值数值的个数必须和表中或列表中的个数相同插入的值的次序必须和列表中列出的次序相同值的数据类型必须和对应列的数据类型匹配insert customers(customerid, companyname, contactname,contacttitle, address, city, region, postalcode, c
4、ountry, phone, fax)values (pecof, pecos coffee company, michael dunn ,owner, 1900 oak street, vancouver, bc, v3f 2k1, canada, (604)555-3392, (604)555-7293)例1 插入一条交易记录OrderidProductidUnitprice 单价Quantity数量Discount 折扣102481418.6100Insert order details(orderid, productid, unitprice, quantity, discount)
5、values (10248,14,18.6,10,0)可以简化成:Insert order detailsvalues (10248,14,18.6,10,0)只有在:插入的值的次序、数量、数据类型同表结构中字段的次序、数量、数据类型一致时例2:插入一条交易记录OrderidProductidUnitprice 单价Quantity数量Discount 折扣102496516.8Insert order details(orderid, productid, unitprice)values (10249,65,16.8 )这个时候字段列表是不能省略的例:将价格高于20美元的商品的信息导入到一
6、张新表expensiveproducts中。然后再向表expensiveproducts中添加价格为20美元的商品信息。将多条记录一次性导入到另外一张表中select into 语句将一个表中的内容提取到另外一个新表(未建立的)中语法:select 字段列表into 新表名from 表名where 条件字段列表,指定了新表中要包含的列;新表名,指定了要存储数据的新表的名字是一个复制粘贴的操作,对原表数据没有影响技巧:先作查询,然后在select 和 from 之间插入 into 表名select productname, unitprictinto expensiveproductsfrom
7、productswhere unitprice20insert into语句从一个(现成)表向另一个(现成)表添加数据语法:insert into 表名1select 字段列表from 表名2where 条件表名1,指定了将要插入数据的表的名字,必须是已存在的表。字段列表,指定了你需要从现有表复制到新表的列的名字表名2,指定了从中复制数据的表是一个复制粘贴的操作,对原表数据没有影响技巧:先查询,再写insert intoinsert into expensiveprodectsselect productname, unitpricefrom productswhere unitprice=2
8、0例:将1997年以前的交易记录析取到新表oldorders中。然后再向oldorders中添加1997年所有的交易记录。Select orderid, customorid, orderdateInto oldordersFrom ordersWhere orderdate0)演示 约束前 select * from productinfo 插入一个价格为零的产品 insert productinfo(pro_id, pro_name, uniptrice, supp;ierid) values(13, beer, 0,3) 删除价格0的记录 delete from productinfo
9、where pro_id=13 加约束 alter talbe productinfo add constraint ck_price check(unitprice0) exec sp_help productinfo check约束同样也对数据的修改进行检查 update productinfo set unitprice=0 where pro_id=13问题:必须保证产品的id号和它的名称在productinfo表中是唯一的。PRIMARY KEY 约束 主键约束PRIMARY KEY约束定义在一列或一组列上,这些列的值可以在表中唯一确定一行。这些列称为主关键字列。该列不能为空、不能重
10、复。Id号;一个表中只能有一个主键约束。语法CONSTRAINT 约束名 PRIMARY KEY (列名.)UNIQUE 约束 唯一性约束用于在非主关键字列上实施唯一性。UNIQUE约束类似于primary key约束,只是它允许null值,但是表中只有一行可以却NULL值。一个表中可以创建多个唯一性约束。语法CONSTRAINT 约束名 UNIQUE (列名)Alter talbe productinfoAdd constratint pk_product primary key (pro_id)Alter talbe productinfoAdd constraint u_proname
11、unique(pro_name)演示 select * from productinfo 插入一条id相同的记录 insert productinfo (pro_id, pro_name, unitprice, supplierid) values (13, beer,15.6, 3) 删除 delet from productinfo where pro_id13 添加约束 alert talbe productinfo add constraint pk_proid primary key(pro_id) exec sp_help productinfo update productinf
12、o set pro_id=13 where pro_id=12 产品名称的约束 alter talbe productinfo add constraint u_name unique(pro_name)问题:保证公司所有产品的供应商都来自于supplierinfo 表。并且当供应商信息修改时,在productinfo表中的相应信息也自动修改。FROEIGE KEY 约束 外键约束语法CONSTRAINT 约束名 FOREIGN KEY (列名)子表字段名称REFERENGES 表名(列名)父表(字段名称)外键约束建立在子表上Alter table productinfoAdd constra
13、int fk_product_supplier foreignKey(supplierid) referencesSupplereinof(supplierid)On delete cascadeOn update cascade演示 select * from productinfo productinfo的情况 select * from supperinfo supperinfo的情况创建约束外键约束建立在子表上 alter table productinfo add constraint fk_pro_sup foreign key(supperid) references suppl
14、ierinfo(supplierid)没有级联操作插入记录 insert productinfo (pro_id, pro_name, unitprice, supplierid) values (14,cake, 22.1,11)无法插入,因为没有11号供应商非法修改改子表 update producinfo set supplierid=11 where pro_id=14非法修改改父表 update supperlierid set supplierid=11 where supplierid=1添加级联要先删除原先创建的约束alter talbe productinfodrop con
15、straint fk_pro_sup创建约束带级联操作 alter table productinfo add constraint fk_pro_sup foreign key(supperid) references supplierinfo(supplierid) On delete cascadeOn update cascade select * from productinfo productinfo的情况,有3种中产品是1号供应商提供的 select * from supperinfo supperinfo的情况修改父表 update supperlierid set supplierid=11 where supplierid=1从供应商表中删除2号供应商 delete from supplierin
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1