修改数据库内容

合集下载

MySQL数据库表的数据插入、修改、删除、查询操作及实例应用

MySQL数据库表的数据插入、修改、删除、查询操作及实例应用

MySQL数据库表的数据插⼊、修改、删除、查询操作及实例应⽤⼀、MySQL数据库表的数据插⼊、修改、删除和查询1CREATE DATABASE db0504;23USE db0504;45CREATE TABLE student (6 sno VARCHAR (10) NOT NULL UNIQUE PRIMARY KEY,7 sname VARCHAR (20) NOT NULL,8 ssex enum ('男', '⼥') NOT NULL DEFAULT'男',9 sbirth date,10 sclass VARCHAR (10),11 zno CHAR (4)12 ) DEFAULT charset = gb2312;13 #添加操作14INSERT INTO student15VALUES('2012010713','丁暖','⼥','1993-9-9','物联⽹12-1','z002');1617INSERT INTO student (sno,sname,ssex,sbirth,sclass,zno)18VALUES('2011010503','孔超','男','1993-9-19','⾃动化11-1','z006');1920INSERT INTO student (sno, sname, ssex, zno)21VALUES('2011010521','韩梅','⼥','z006');2223INSERT INTO student (sname, zno, sno)24VALUES('韩梅2','z006','2011010522');2526INSERT INTO student VALUES27 ('2011010501','孔超1','男','1993-9-19','⾃动化11-1','z006');28 ('2011010505','孔超2','男','1993-9-19','⾃动化11-1','z006');29 ('2011010504','孔超3','男','1993-9-19','⾃动化11-1','z006');30 ('2011010505','孔超4','男','1993-9-19','⾃动化11-1','z006');31 #修改操作32UPDATE student33SET sname ='张三',sbirth ='1993-6-19'34WHERE sname ='丁暖';3536UPDATE student SET zno =LEFT (zno, 3);37 #删除操作38delete from student39where sname='张三';4042 #查询操作43SELECT*FROM student;#查询student表的所有记录44SELECT sno,sname,ssex,sbirth FROM student;#查询部分字段信息45SELECT*FROM student WHERE age BETWEEN25AND30;4647 #清空表操作48truncate student;#⾼效49delete from student;操作SQL语法格式:插⼊:insert修改:update删除:delete查询:select⼆、设计型实验三1.创建表1CREATE DATABASE homework;23USE homework;45CREATE TABLE student (6 Num INT (10) NOT NULL UNIQUE PRIMARY KEY,7 name VARCHAR(20) NOT NULL,8 Sex VARCHAR(4) NOT NULL,9 birthday DATETIME,10 bumen VARCHAR(20) NOT NULL,11 address VARCHAR(50)12 ) DEFAULT charset = gb2312;1314CREATE TABLE score (15 Id INT(10) NOT NULL UNIQUE PRIMARY KEY,16 C_name VARCHAR(20),17 Stu_id INT(10) NOT NULL,18 grade INT(10),19CONSTRAINT score_fk FOREIGN KEY(Stu_id) REFERENCES student(Num)20 ) DEFAULT charset = gb2312;2122INSERT INTO student VALUES23 ('901','张军','男','1985-1-1','计算机系','北京市海淀区'),24 ('902','张超','男','1986-2-2','中⽂系','北京市昌平区'),25 ('903','张美','⼥','1990-2-1','中⽂系','湖南省永州市'),26 ('904','李五⼀','男','1990-2-3','英语系','辽宁省⾩新市'),27 ('905','王芳','⼥','1991-4-6','英语系','福建省厦门市'),28 ('906','王桂','男','1988-6-7','计算机系','湖南省衡阳市');2930INSERT INTO score VALUES31 (1001,'计算机','901','98'),32 (1002,'英语','901','80'),33 (1003,'计算机','902','65'),34 (1004,'中⽂','902','88'),35 (1005,'中⽂','903','95'),36 (1006,'计算机','904','70'),37 (1007,'英语','904','92'),38 (1008,'英语','905','92'),39 (1009,'计算机','906','90'),40 (1010,'英语','906','85');2.查询student表的操作#查询student表的所有记录SELECT*FROM student;SELECT Num,name,Sex,birthday,bumen,address FROM student;#查询student表的第2条到第4条记录SELECT Num,name,Sex,birthday,bumen,address FROM student LIMIT 1,3;#从student表中查询所有学⽣的学号、姓名和院系的信息SELECT Num,name,bumen FROM student;#查询计算机系和英语系学⽣的信息SELECT*FROM student WHERE bumen IN('计算机系','英语系');SELECT*FROM student WHERE bumen='计算机系'OR bumen='英语系';#从student表中查询年龄为18-22岁学⽣的信息ALTER TABLE student ADD age INT(4);ALTER TABLE student MODIFY age INT(4) AFTER Sex;UPDATE student SET age=24WHERE Num=901;UPDATE student SET age=23WHERE Num=902;UPDATE student SET age=19WHERE Num=903;UPDATE student SET age=19WHERE Num=904;UPDATE student SET age=18WHERE Num=905;UPDATE student SET age=21WHERE Num=906;SELECT*FROM student WHERE age BETWEEN18AND22;SELECT*FROM student WHERE age>=18AND age<=22;#从student表中查询每个院系有多少⼈,为统计的⼈数列取别名sum_of_bumenSELECT bumen,COUNT(bumen) AS sum_of_bumen FROM student GROUP BY bumen;3.两表综合查询#从score表中查询每个科⽬的最⾼分SELECT C_name,MAX(grade) FROM score GROUP BY C_name;#查询李五⼀的考试科⽬(C_name)和考试成绩(grade)select C_name,grade from student left join score on student.Num=score.Stu_id where name='李五⼀';#⽤连接查询的⽅式查询所有学⽣的信息和考试信息select*from student left join score on student.Num=score.Stu_id;#计算每个学⽣的总成绩(需显⽰学⽣姓名)select name '姓名',SUM(grade) '总成绩'from student left join score on student.Num=score.Stu_id group by name;#计算每个考试科⽬的平均成绩select C_name '考试科⽬',AVG(grade) '平均成绩'from student left join score on student.Num=score.Stu_id group by C_name; #查询计算机成绩低于95分的学⽣信息select*from student left join score on student.Num=score.Stu_id where grade<95AND C_name='计算机';#将计算机成绩按从⾼到低排序select grade '计算机成绩'from score where C_name='计算机'order by grade desc;#asc升序,desc降序#从student表和score表中查询学⽣的学号,然后合并查询结果select Num '学号'from student union select Stu_id from score;#查询姓张或者姓王的同学的姓名、院系、考试科⽬和成绩select name,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where name like'张%'union select name,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where name like'王%';#查询都是湖南的学⽣的姓名、年龄、院系、考试科⽬和成绩select name,age,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where address like'湖南%';这个查询同时参加计算机和英语考试的学⽣信息难了我好久,下⾯提供三种做法:#查询同时参加计算机和英语考试的学⽣的信息做法⼀select*from student where Num in (select Stu_id from score where C_name ='计算机'and Stu_id in(select Stu_id from score where C_name ='英语'));#查询同时参加计算机和英语考试的学⽣的信息做法⼆SELECT a.*FROM student a,score b,score c WHERE a.Num=b.Stu_id AND b.C_name='计算机'AND a.Num=c.Stu_id AND c.C_name='英语';#查询同时参加计算机和英语考试的学⽣的信息做法三SELECT*FROM student WHERE Num =ANY( SELECT Stu_id FROM score WHERE Stu_id IN (SELECT Stu_id FROM score WHERE C_name='计算机') AND C_name='英语');。

mysql增删改查实例

mysql增删改查实例

mysql增删改查实例一、概述MySQL是一种开源的关系型数据库管理系统,广泛应用于Web应用程序的开发中。

MySQL支持多种操作系统,包括Windows、Linux 和Mac OS等。

本文将介绍MySQL的增删改查操作实例。

二、连接数据库在进行任何操作之前,需要先连接到MySQL数据库。

可以使用以下代码连接到MySQL:```pythonimport mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase")mycursor = mydb.cursor()```其中,host为数据库所在主机的IP地址或域名;user为访问数据库所需的用户名;password为访问数据库所需的密码;database为要连接到的数据库名称。

三、插入数据插入数据是指向MySQL数据库中添加新记录。

可以使用以下代码向表中插入新数据:```pythonsql = "INSERT INTO customers (name, address) VALUES(%s, %s)"val = ("John", "Highway 21")mycursor.execute(sql, val)mit()print(mycursor.rowcount, "record inserted.")```其中,customers为表名;name和address为字段名;%s表示占位符,后面需要使用val变量中的值替换占位符;val为一个元组,包含了要插入的数据。

四、查询数据查询数据是指从MySQL数据库中检索记录。

魔域数据库修改方案

魔域数据库修改方案

魔域数据库修改方案一、背景分析咱们得了解一下魔域数据库的现状。

经过长时间的使用,数据库出现了一些性能瓶颈,数据结构不合理,查询效率低下,这直接影响了用户体验和系统运行效率。

所以,修改数据库成了当务之急。

二、目标定位我们得明确这次数据库修改的目标。

要提高数据库的查询效率,优化数据结构;确保数据安全,防止数据泄露;提高系统的稳定性,降低故障率。

三、具体方案1.数据表结构优化(1)合并冗余字段,减少数据表宽度,提高查询速度。

(2)调整数据表索引,提高查询效率。

(3)对于经常一起查询的字段,可以考虑建立关联表,减少JOIN 操作,提高查询速度。

2.数据库分区为了提高数据库的查询效率,我们可以对数据库进行分区。

具体操作如下:(1)根据业务需求,将数据表分为若干个分区。

(2)设置分区策略,如范围分区、列表分区等。

(3)定期进行分区维护,如合并分区、删除过期数据等。

3.缓存机制引入缓存机制,减轻数据库压力,提高查询速度。

具体操作如下:(1)选择合适的缓存技术,如Redis、Memcached等。

(2)设置缓存策略,如LRU(最近最少使用)算法、TTL(生存时间)等。

(3)缓存数据同步更新,确保数据一致性。

4.数据安全(1)加强数据加密,防止数据泄露。

(2)设置权限控制,限制用户对数据库的操作。

(3)定期进行数据备份,确保数据不丢失。

5.系统稳定性(1)对数据库进行定期维护,如检查碎片、优化索引等。

(2)设置数据库监控,及时发现并解决故障。

(3)采用高可用数据库架构,如主从复制、读写分离等。

四、实施步骤1.分析现有数据库结构,找出问题所在。

2.设计优化方案,包括数据表结构优化、数据库分区、缓存机制等。

3.进行方案评估,确保方案可行。

4.编写实施计划,明确实施步骤、时间表等。

5.逐步实施优化方案,确保系统稳定运行。

6.对优化后的数据库进行测试,验证优化效果。

五、预期效果1.数据库查询效率提高,用户体验得到提升。

2.数据安全得到保障,降低数据泄露风险。

MySQL数据库应用-实验训练3 数据增删改操作.docx

MySQL数据库应用-实验训练3 数据增删改操作.docx

实验训练3 数据增删改操作实验目的:基于实验1创建的汽车用品网上商城数据库Shopping,练习Insert、Delete、TRUNCATE TABLE、Update语句的操作方法,理解单记录插入与批量插入、DELETE与TRUNCATE TABLE语句、单表修改与多表修改的区别。

实验内容:【实验3-1】插入数据(1)使用单记录插入Insert语句分别完成汽车配件表Autoparts、商品类别表category、用户表Client 、用户类别表Clientkind 、购物车表shoppingcart、订单表Order、订单明细表order_has_Autoparts、评论Comment的数据插入,数据值自定;并通过select语句检查插入前后的记录情况。

INSERT INTO 目标表 SELECT * FROM 来源表;insert into insertTest select * from insertTest2;INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表;(这里的话字段必须保持一致)insert into insertTest2(id) select id from insertTest2;INSERT INTO 目标表(字段1, 字段2, ...)SELECT 字段1, 字段2, ...FROM 来源表WHERE not exists (select * from 目标表where 目标表.比较字段 = 来源表.比较字段);1>.插入多条记录:insert into insertTest2(id,name)select id,namefrom insertTestwhere not exists (select * from insertTest2where insertTest2.id=insertTest.id);2>.插入一条记录:insert into insertTest(id, name)SELECT 100, 'liudehua'FROM dualWHERE not exists (select * from insertTestwhere insertTest.id = 100);(2)使用带Select的Insert语句完成汽车配件表Autoparts中数据的批量追加;并通过select语句检查插入前后的记录情况。

金融信用信息基础数据库的数据修改

金融信用信息基础数据库的数据修改

金融信用信息基础数据库的数据修改
金融信用信息基础数据库是一个重要的金融行业数据来源,为确保数据的准确性和完整性,我们需要对数据库中的数据进行修改。

具体修改内容如下:
1. 修改个人基本信息:若用户的个人基本信息(如姓名、身份证号码、联系方式等)发生变更,需要进行及时更新,确保数据的准确性。

2. 修正信用记录:若用户的信用记录存在错误或不实之处,我们需要进行修正,包括但不限于删除错误记录、添加漏报记录、更正评分等。

3. 更新贷款信息:若用户的贷款信息发生变化,如已经还清、逾期等情况,需要及时更新数据库中的信息,以确保用户信用评级的准确性。

4. 修改用户状态:若用户存在逾期、欺诈等不良记录,并已受到相应处罚,需要将其状态修改为“失信”、“重点监控”等。

但若用户已经改正错误、消除不良影响,也应及时将其状态进行修改。

5. 补充缺失信息:若用户存在缺失信息,如银行卡开户时间、信用卡使用记录等,需要进行补充,以便更全面地反映用户的信用情况。

上述内容仅为数据库数据修改的部分内容,我们将按照标准流程进行操作,并确保修改后的数据准确、完整、安全。

数据库的创建、修改和删除

数据库的创建、修改和删除

Create database stu_class On Primary (name=class1_data, Filename=‘d:\data\class1.mdf’, Size=20MB, Filegrowth=20%), Filegroup classgroup (name=class2_data, Filename=‘d:\data\class2.ndf’, Size=40MB, Maxsize=100MB, Filegrowth=10MB)
该数据库名称为stu_class,有1个20MB和 1个 , 该数据库名称为 个 和 个 40MB的数据文件和 个15MB的事务日志文件。 的数据文件和2个 的事务日志文件。 的数据文件和 的事务日志文件 数据库的逻辑名称为class1_data和class2_data, 数据库的逻辑名称为 和 , 物理文件名为class1.mdf和class2.ndf。主文件 物理文件名为 和 。 指定, 是class1,由primary指定,两个数据文件的最 , 指定 大尺寸分别为无限大和100MB,增长速度分别为 大尺寸分别为无限大和 , 20%和10MB。并将 和 。并将class2_data指定到文件组 指定到文件组 classgroup中。事务日志文件的逻辑名为 中 classlog1 和classlog2,物理文件名为 , classlog1.ldf和classlog2.ldf,最大尺寸均为 和 , 30MB,文件增长速度为 ,文件增长速度为2MB。 。
练习
创建一个名为university数据库,该数据库 数据库, 创建一个名为 数据库 的主数据文件逻辑名称为university_data, 的主数据文件逻辑名称为 物理文件名为university.mdf,初始大小为 物理文件名为 初始大小为 8MB,最大尺寸 最大尺寸26MB,增长速度为 增长速度为15%;数据 最大尺寸 增长速度为 数据 库的日志文件逻辑名称为university_log, 库的日志文件逻辑名称为 , 物理文件名为university.ldf,初始大小为 物理文件名为 初始大小为 1MB,最大尺寸为 最大尺寸为5MB,增长速度为 增长速度为1MB 最大尺寸为 增长速度为

SQL批量修改数据库内容

SQL批量修改数据库内容

SQL批量修改数据库内容Create proc dbo.UpdateTextColumn@Table varchar(100),@Columns varchar(200),@old varchar(100),@new varchar(100)asset nocount ondeclare @sql nvarchar(2000)declare @Column varchar(50)declare @cpos int,@npos intset @cpos=1;set @npos=1;set @npos=charindex(',',@Columns,@cpos);while(@npos>0)beginset @Column = substring(@Columns,@cpos,@npos-@cpos);set @cpos = @npos+1set @npos=charindex(',',@Columns,@cpos);set @sql = 'update '+@Table+' set '+@Column+'=replace(cast('+@Column+' as varchar(8000)),@old,@new) where Datalength('+@Column+')<=8000';EXECUTE sp_executesql @Sql,N'@old varchar(100),@new varchar(100)',@old,@newdeclare @ptr binary(16) ,@offset int,@dellen intset @dellen = len(@old)set @offset = 1while @offset>=1beginset @offset = 0set @sql = 'select top 1 @offset = charindex('''+@old+''' , '+@Column+'), @ptr = textptr('+@Column+') from '+@Table+' where Datalength('+@Column+')>8000 and '+@Column+' like ''%'+@old+'%'''; EXEC sp_executesql @Sql,N'@offset int OUTPUT,@ptr binary(16) OUTPUT,@old varchar(100)',@offset OUTPUT,@ptr OUTPUT,@old;if @offset > 0beginset @offset = @offset-1set @sql='updatetext '+@Table+'.'+@Column+' @ptr @offset @dellen @new';EXEC sp_executesql @Sql,N'@offset int ,@ptr binary(16),@dellen int,@new varchar(100)',@offset,@ptr,@dellen,@new;endendendgoCreate proc dbo.ReplaceKeyWord@old nvarchar(100),@new nvarchar(100)asdeclare @sql nvarchar(1000)set @sql=N'declare @s nvarchar(4000),@tbname sysnameselect @s=N'''',@tbname=N''?''select @s=@s+N'',''+quotename()+N''=replace(''+quotename()+N'',N'''''+@old+''''',N'''''+@new+''''')''from syscolumns a,systypes bwhere a.id=object_id(@tbname)and a.xusertype=b.xusertypeand like N''%char''if @@rowcount>0beginset @s=stuff(@s,1,1,N'''')exec(N''update ''+@tbname+''set''+@s)end '--print @sqlexec sp_msforeachtable @sql;set @sql=N'declare @s nvarchar(4000),@tbname sysnameselect @s=N'''',@tbname=N''?''select @s=@s+quotename()+N'',''from syscolumns a,systypes bwhere a.id=object_id(@tbname)and a.xusertype=b.xusertypeand like N''%text''if @@rowcount>0beginexec UpdateTextColumn @tbname,@s,'''+@old+''','''+@new+'''end' ;exec sp_msforeachtable @sqlgo随机号码IF EXISTS(SELECT * FROM sysobjects WHERE name='proc_PhoneNum')DROP PROCEDURE proc_PhoneNumGOCREATE PROCEDURE proc_PhoneNum@randCardID varchar(19) OUTPUT, --输出参数@firstNo varchar(4)='132' --输⼊参数,有默认值ASDECLARE @r numeric(15,8) --15位数,保留8位⼩数DECLARE @tempStr char(10)select @r=RAND((DATEPART(mm,GETDATE())*100000)+(DATEPART(ss,GETDATE())*1000)+DATEPART(ms,GETDATE()))SET @tempStr=@rSET @randCardID=@firstNo+SUBSTRING(@tempStr,3,4)+''+SUBSTRING(@tempStr,7,4)GO测试DECLARE @phoneNum nvarchar(20)EXECUTE proc_PhoneNum @phoneNum OUTPUTprint '产⽣的随机⼿机号为:'+@phoneNuminsert phones values(@phoneNum)--循环替换所有客户的号码create proc UpdateUserPhoneasIF EXISTS(SELECT * FROM sysobjects WHERE name='UpdateUserPhone') DROP PROCEDURE UpdateUserPhoneGOcreate proc UpdateUserPhoneasdeclare @id intdeclare @maxid intdeclare @count intset @id=1select @maxid=max(PID) from T_Userbeginwhile @id<=@maxidbeginDECLARE @phoneNum nvarchar(20)select @count=count(1) from T_User where PID=@idif @count>0beginEXECUTE proc_PhoneNum @phoneNum OUTPUTprint '产⽣的随机⼿机号为:'+@phoneNumupdate T_User set FMobilePhone=@phoneNum where PID=@idupdate T_CarOrder set FMobile=@phoneNum where KUserID=@idwaitfor delay'00:00:00:02'endset @id=@id+1endend⽰例Exec ReplaceKeyWord 'aaa','bbb'。

数据库修改规则和内容

数据库修改规则和内容

有关“数据库修改”的规则和内容有关“数据库修改”的规则和内容如下:1.修改数据库规则:●修改数据库的字符集和校对规则。

可以使用ALTER DATABASE语句来修改数据库的字符集和校对规则。

例如,ALTER DATABASE 数据库名CHARSET GBK COLLATE 校对集名称;●设置和更改数据库的排序规则。

在创建新数据库时,可以使用CREATE DATABASE语句的COLLATE子句来指定排序规则。

对于已经存在的数据库,可以使用ALTER DATABASE 语句的COLLATE子句来更改排序规则。

排序规则影响数据库中对象的标识符解析和字符比较。

2.修改表结构:●重命名表。

使用RENAME TABLE语句来重命名表,例如,RENAME TABLE 旧表名TO新表名;●修改表的字符集。

使用ALTER TABLE语句来修改表的字符集,例如,ALTER TABLE 表名CHARSET GBK;●新增表中的字段。

使用ALTER TABLE语句的ADD子句来新增字段,例如,ALTER TABLE表名ADD [COLUMN] 字段名数据类型[列属性] [位置];●修改字段。

使用ALTER TABLE语句的MODIFY子句来修改字段的数据类型或其他属性,例如,ALTER TABLE 表名MODIFY 字段名数据类型[属性] [位置];●重命名字段。

使用ALTER TABLE语句的CHANGE子句来重命名字段,例如,ALTERTABLE 表名CHANGE 旧字段名新字段名数据类型[属性] [位置];●删除字段。

使用ALTER TABLE语句的DROP子句来删除字段,例如,ALTER TABLE 表名DROP 字段名。

3.修改记录:●使用REPLACE语句替换旧记录。

●使用UPDATE语句修改单个或多个表的记录。

4.删除表或记录:●使用DROP TABLE语句删除表。

●使用DELETE语句删除表中的记录。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
INSERT INTO customers (customer_id, first_name,last_name,dob,phone) VALUES (6,'Fred','Brown','01-1月-1970','800-5551215')



INSERT INTO customers VALUES (7,’Jane’,’Green’,’01-1月-1970’,’800-555-1216’)

主键约束



INSERT INTO customers (customer_id, first_name,last_name,dob,phone) VALUE (1,’Fred’,’Brown’,’01-1月-1970’,’800-555-1215’) UPDATE customers SET customer_id=1 WHERE customer_id=2
INSERT
空值:NULL INSERT VALUES
INTO customers

(8,'Sophie','White',NULL,NULL)
INSERT
INSERT INTO customers VALUES (9,'Kyle','O''Mally',NULL,NULL)

PRINT average_product_price
DELETE
DELETE
[ hint ] [ FROM ] table_expression_clause [ where_clause ] [ returning_clause ]
DELETE
DELETE
FROM customers WHERE customer_id=10
修改数据库的内容
INSERT
INSERT
[ hint ] INTO table_expression_clause [ (<column> [,…n] ) ] { values_clause | subquery } [,…n] ;
DESCRIBE
customers 显示表的字段
INSERT
数据库完整性-主键约束
表的主键(primary
key)是用来唯一标识 表中一行数据的,主键可以是一个单独的列 或者几个列的组合,主键所在的列不能为 空,创建主键后将会自动增加一个非空值 约束(not null),另外主键所在的列也被默 认的增加了唯一约束(unique)。
主键约束
create table test_primary_key (id number, name varchar2(20), dept number, constraint id_primary_key primary key(id) ); alter table test_primary_key drop constraint id_primary_key; alter table test_primary_key add constraint id_primary_key primary key(id);
UPDATE
UPDATE
[ hint ] table_expression_clause set_clause [ where_clause ] [ returning_clause ] ;
UPDATE



UPDATE customers SET Last_name=‘Orange’ WHERE customer_id=2

Hale Waihona Puke 外键约束外键必须为另外一张表(父表)的主键或者唯一索 引。 如果要添加记录,而父表中没有则报错。 如果要删除父表中的记录,而子表中有记录,也 会报错。 但是如果在创建外键约束时,如果使用on delete cascade,则删除父表中数据时,不报错 而直接把子表关联的数据删除。 如果要删除父表,则需要加上cascade constraints,此时子表的foreign key被去除, 表中记录保持不变。

唯一约束
Unique约束:一个表可以有多个Unique
约束,Unique的字段可以为NULL。 一个表只能有一个主键约束,但是可以有 多个Unique约束;主键所有字段都是not null,unique可以是null。相同点在于都能 保证唯一性。
唯一约束


CREATE TABLE supplier (supplier_id numeric(10) not null, supplier_name varchar2(50) not null, contact_name varchar2(50), CONSTRAINT supplier_unique UNIQUE (supplier_id)); ALTER TABLE supplier drop CONSTRAINT supplier_unique; ALTER TABLE supplier add CONSTRAINT supplier_unique UNIQUE (supplier_id);

INSERT INTO products (product_id, product_type_id,name,description, price) VALUES (13,1,'The “Great” Gatsby',NULL,12.99 )

INSERT
INSERT
INTO customers(customer_id,first_name,L ast_name) SELECT 10,first_name,last_name FROM customers WHERE customer_id=1
UPDATE products SET price=price*1.2, Name=LOWER(name) WHERE price>=20

UPDATE-RETURNING

VARIABLE average_product_price NUMBER
UPDATE products SET price=price*0.75 RETURNING AVG(price) INTO : average_product_price
相关文档
最新文档