-
oracle 删除主键约束_SQL-约束(cnostraints)
2020-12-01 03:34:57SQL 约束(Constraints)SQL 约束用于规定表中的数据规则。如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定(通过 create table 语句),或者在表创建之后规定(通过 alter table 语句)。...SQL 约束(Constraints)
SQL 约束用于规定表中的数据规则。如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定(通过 create table 语句),或者在表创建之后规定(通过 alter table 语句)。
create table + constraint 语法
create
在 SQL 中,我们有如下约束: - not null - 指示某列不能存储 NULL 值。 - unique - 保证某列的每行必须有唯一的值。 - primary key - not null 和 unique 的结合。确保某列(或两个列多个列的结合)有唯>一标识,有助于更容易更快速地找到表中的一个特定的记录。 - foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性。 - check - 保证列中的值符合指定的条件。 - default - 规定没有给列赋值时的默认值
接下来,我们依次给大家分享每一种约束。
Sql not null 约束
在默认的情况下,表的列接受 NULL 值。not null 约束强制列不接受 NULL 值。not null 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
下面的 SQL 强制 "PersonID" 列、 "Name" 列以及 "Address" 列不接受 NULL 值:
create
添加 not null 约束
在一个已创建的表的 "City" 字段中添加 not null 约束如下所示: 实例
alter
删除 not null 约束
在一个已创建的表的 "Age" 字段中删除 NOT NULL 约束如下所示: 实例
alter
注意:在添加和删除not null约束,我用change和modify命令始终报错,这是因为我用的是sql server数据库,而change和modify命令是在my sql 和oracle下才能用的语法。
Sql unique 约束
unique 约束唯一标识数据库表中的每条记录。unique 和primary key约束均为列或列集合提供了唯一性的保证。primary key 约束拥有自动定义的 unique 约束。请注意,每个表可以有多个 unique约束,但是每个表只能有一个 primary key 约束。
create table 时的 unique 约束
下面的 SQL 在 "Persons" 表创建时在 "PersonId" 列上创建unique 约束:
MySQL:
create
SQL Server / Oracle / MS Access:
create
如需命名 unique 约束,并定义多个列的 unique 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
create
alter 时的 unique 约束
当表已被创建时,如需在 "PersonID" 列创建unique 约束,请使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
alter
如需命名 unique 约束,并定义多个列的 unique 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
alter
撤销 unique 约束
如需撤销 unique 约束,请使用下面的 SQL:
MySQL:
alter
SQL Server / Oracle / MS Access:
alter
primary key 约束
primary key 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。
create table 时的 primary key 约束
下面的 SQL 在 "Persons" 表创建时在 "PersonID" 列上创建 primary key 约束:
MySQL:
create
SQL Server / Oracle / MS Access:
create
如需命名 primary key 约束,并定义多个列的 primary key 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
create
注释:在上面的实例中,只有一个主键 primary key(pk_PersonID)。然而,pk_PersonID 的值是由两个列(PersonID和 Name)组成的。
alter table 时的 primary key 约束
当表已被创建时,如需在 "PersonId" 列创建 primary key 约束,请使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
alter
如需命名 primary key 约束,并定义多个列的 primary key 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
alter
注释:如果您使用 alter table 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时)。
撤销 primary key 约束
如需撤销 primary key 约束,请使用下面的 SQL:
MySQL:
alter
SQL Server / Oracle / MS Access:
alter
foreign key 约束
一个表中的 foreign key 指向另一个表中的 unique key(唯一约束的键)。 让我们通过一个实例来解释外键。请看下面两个表:
Persons 表:
Orders表:
请注意: - Orders"表中的 "PersonId" 列指向 "Persons" 表中的 "PersonId" 列。 - "Persons" 表中的 "PersonId" 列是 "Persons" 表中的 primary key。 - "Orders" 表中的 "PersonId" 列是 "Orders" 表中的 foreign key。 - foreign key约束用于预防破坏表之间连接的行为。 - foreign key约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
create table 时的foreign key 约束
下面的 SQL 在 "Orders" 表创建时在 "PersonId" 列上创建 foreign key 约束:
MySQL:
create
SQL Server / Oracle / MS Access:
create
如需命名foreign key 约束,并定义多个列的foreign key约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
create
alter table时的foreign key约束
当 "Orders" 表已被创建时,如需在 "P_Id" 列创建 foreign key约束,请使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
alter
如需命名 foreign key约束,并定义多个列的 foreign key约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
alter
撤销foreign key约束
如需撤销 foreign key约束,请使用下面的 SQL:
MySQL:
alter
SQL Server / Oracle / MS Access:
alter
check 约束
check 约束用于限制列中的值的范围。如果对单个列定义 check 约束,那么该列只允许特定的值。如果对一个表定义 check 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。
create table 时的check 约束
下面的 SQL 在 "Persons" 表创建时在 "PersonId" 列上创建 check 约束。check 约束规定 "PersonId" 列必须只包含大于 0 的整数。
MySQL:
create
SQL Server / Oracle / MS Access:
create
如需命名 check 约束,并定义多个列的 check 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
create
alter table 时的check 约束
当表已被创建时,如需在 "P_Id" 列创建 check 约束,请使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
alter
如需命名 check 约束,并定义多个列的 check 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
alter
撤销 check 约束
如需撤销 check 约束,请使用下面的 SQL:
SQL Server / Oracle / MS Access:
alter
MySQL:
alter
Sql default 约束
default 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。
create table 时的default 约束
下面的 SQL 在 "Persons" 表创建时在 "City" 列上创建 default 约束:
My SQL / SQL Server / Oracle / MS Access:
create
通过使用类似getdata()这样的函数,default 约束也可以用于插入系统值:
create
alter table 时的default 约束
当表已被创建时,如需在 "City" 列创建 default 约束,请使用下面的 SQL:
MySQL:
alter
SQL Server / MS Access:
alter
Oracle:
alter
撤销 default 约束
如需撤销 default 约束,请使用下面的 SQL:
MySQL:
alter
SQL Server / Oracle / MS Access:
alter
-
oracle 删除主键约束_SQL子查询以及约束相关知识
2020-11-21 16:24:46答:子查询是一个select语句,它是嵌在另一个select语句中的字句(2) 子查询的使用场景是什么?答:当某个查询需要利用另外一个查询的查询结果时可以使用子查询。2. 子查询_2(1) 查询本部门最高工资的员工答:select ...子查询_
1. 子查询_1
(1) 什么是子查询?
答:子查询是一个select语句,它是嵌在另一个select语句中的字句
(2) 子查询的使用场景是什么?
答:当某个查询需要利用另外一个查询的查询结果时可以使用子查询。
2. 子查询_2
(1) 查询本部门最高工资的员工
答:select max(emp.salary) from employees emp group by department_id;
(2) 查询每个部门平均薪水的等级
答:select (select avg(emp.salary) from employees emp group by department_id) from job_grade gr where (select avg(emp.salary) from employees emp group by department_id) between gr.lowest_sal and gr.highest_sal;
3. 用户user
(1) 如何修改用户的密码?
答:alter user 用户名 identified by 新密码;
(2) 如何锁定/解锁用户账户?
答:① 登录sys用户,conn sys as sysdba;(这个需要输入口令)或者conn /as sysdba;(这个不需要输入口令)
② 输入语句:alter user scottaccount unlock;
4. 用户的权限
(1) 列举Oracle中常用的角色及其含义
答:connect: 连接数据库 resource:使用资源
dba: 数据库管理员(2) 如何给用户授权? 如何撤销用户的权限?
答:--授予权限和角色
grant connect,resource to emp; --resource 资源
select * from soctt.dept;
--撤销权限和角色
revoke connect,resource from emp;
5. 数据库表格的创建
(1) Oracle中的数据类型有哪些?
答:字符类型,数字类型和日期类型。
(2) CHAR和VARCHAR2之间有什么区别?
答:CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。
SQL语言
6. 表格的修改和删除
(1) 如何对表格进行重命名?
答:Rename table to table2
(2) 如何修改表格某个字段的类型?
答:Alter table tableName modify (字段名 字段类型)
7. 表格的约束_主键约束
(1) 什么是表格的约束? 约束有什么作用?
答:对表格中的数据进行约束的规则,可以提高数据的安全性、有效性和可操作性
(2) 表格的约束有哪些? 什么是主键约束?
答:主键约束、唯一约束、非空约束和外键约束。
主键约束:表中每一行数据的唯一、非空标识符
8. 表格的约束_非空约束_唯一约束
(1) 什么是非空约束?
答:表中指定列不能为空
(2) 什么是唯一约束?
答:表中指定列数据是唯一的,只能出现一次
9. 表格的约束_检查约束_外键约束
(1) 什么是检查约束?
答:某列的取值范围、格式。如性别,年龄的约束
(2) 什么是外键约束?
答:用于两表间建立关系,需要指定引用主表的那列。外键通常用来约束两个表之间的数据关系,定义外键的那张表称为字表,另一张表成为主表。在表的创建过程中,应该先创建主表,后创建子表。
10. 表格的约束_外键约束_修改表时添加约束
(1) 修改表的时候有时候我们会添加相应的约束,请分别列出添加主键约束,唯一约束,验证约束,外键约束的约束内容是怎样的?
答:Alter table 表名 modify 字段名 unique;
Alter table 表名 modify 字段名 primary_key;
Alter table 表名 add constraint 外键名 foreign key(列名) references table2(主键列名);
Alter table 表名 add check(salary>1500);
(2) 在删除主表数据时, 如果想级联删除子表中的数据, 应该如何设置外键?
答:删除主表,字表列设置为null
11. 序列sequence
(1) 什么是序列? 有什么作用? 如何使用序列?
答:1、序列是用户创建的数据库对象,序列会产生唯一的整数。
2、序列的一个典型的用途是创建一个主键的值,它对于每一行必须是唯一的。
3、通过 DDL 语句创建序列
(2) 创建序列的语法结构是什么?
答:create sequence sequence_clazz_cid;
12. 索引index
(1) 索引是用来干什么的?有那些约束建立索引?
答:为了加快对数据的搜索速度而设立的。索引有自己专门的存储空间,与表独立存放。
Primary_key 或者 unique
(2) 说下你怎么使用索引的?使用索引的好处和坏处?
答:一个列包含一个大范围的值
一个列包含很多的空值
一个或多个列经常同时在一个 WHERE子句中或一个连接条件中被使用表很大,并且经常的查询期望取回少于百分之2到4的行。
--1.索引可以提高查询的速度
--2.索引也要占据单独的空间
--3.索引不是越多越好,索引越多,占据的空间也越多
--4.索引会降低添加 更新 删除的效率,因为进行这些操作时需要重新维护引
-
oracle 创建表sql语句,主键,自增长
2015-07-03 15:23:25在创建表之前请必须了解一下两点 1,oracle 没有identity,所以需要自己用squence 和 trigger 配合使用 实现 自增长。 2,oracle中如果使用关键字...现在就直接来sql语句。 检查是否存在该表,并删除 declare在创建表之前请必须了解一下两点
1,oracle 没有identity,所以需要自己用squence 和 trigger 配合使用 实现 自增长。
2,oracle中如果使用关键字,需要用 双引号引起了。所以下面例子中出现的双引号可以理解成转义的。
/ 在执行多个sql是用 / 可以区分。
现在就直接来sql语句。
检查是否存在该表,并删除declare num number; begin select count(1) into num from all_tables where TABLE_NAME = 'TABLEINFO' and OWNER='SCOTT'; if num=1 then execute immediate 'drop table TABLEINFO'; end if; end; / declare num number; begin select count(1) into num from user_sequences where sequence_name='SEQ_TABLEINFOID'; if num =1 then execute immediate 'drop sequence SEQ_TABLEINFOID'; end if; end; / declare num number; begin select count(1) into num from user_triggers where trigger_name='TRI_TABLEINFOID'; if num=1 then execute immediate 'drop trigger TRI_TABLEINFOID'; end if; end; / CREATE TABLE tableinfo ( "id" number(4) NOT null, tablename varchar2(40) NOT NULL, constraint PK_tableinfoID primary key ("id") ); / create sequence SEQ_TABLEINFOID minvalue 1 nomaxvalue start with 1 increment by 1 nocache; / create trigger TRI_TABLEINFOID before insert on TABLEINFO for each row declare begin if inserting and :new."id" is NULL or :new."id" =0 then :new."id" :=SEQ_TABLEINFOID.nextval; end if; end TRI_TABLEINFOID;
-
oracle 设置主键、修改列等sql语句(转载)
2007-10-25 18:04:00数据库中存储数据的方式:规则表---〉分区表索引组织表簇修改列名alter table 表明 ...删除字段alter table 表名 drop column 字段名修改列属性alter table 表名 modify (字段名 新属性)设置某一个字段为无用状态al修改列名alter table 表明 rename column rename 老列名 to 新列名
添加 字段
alter table 表名 add(字段名 类型);
删除字段
alter table 表名 drop column 字段名修改列属性
alter table 表名 modify (字段名 新属性)
设置某一个字段为无用状态
alter table 表名 set unuesed column 字段名
删除无用字段
alert table 表名 drop unused cloumns添加主键
alert table 表名 add constraint pkKey primary key(字段列表)表分区
oracle 允许用户对标进一步的规划,即对标进一步的拆分,将表分成若干个逻辑部分,
每个部分成其为标的分区
表分区的优点
增强可用性。单个分区出现故障不会影响到其它分区
均衡IO。不同的分区可以影射到不同的磁盘中
改善性能例:
create table student
(
studentId integer not null,
studentName varchar2(20),
scroe integer
)
partition by rang(Score)
(
partition p1 values lessthan(60),
partition p2 values lessthan(70),
partition p3 values lessthan(80),
partition p4 values lessthan(maxvalue),
) ;
散列分区
散列分区法提供了一种通过制定分区编号来均匀地分布数据的方法
他通过hash 函数间数据映射到相应的分区上
它使得数据均匀的分配到各分区上,各分区大小趋向一致例:
create table department
(
depno integer not null,
depname varchar2(20),
)
partition by hash(depno)
(
partition p1 ,
partition p2,) ;复合分区
复合分区是先对数据进行范围分区,然后在每个字分区理由进行散列分区的一种分区方法
例:
create table salgrade
(grade number ,losal number hisal number , hisal number )
partition by rang(grade)
subpartition by hash (losal, hisal)(
partition p1 value lessthan (10),
(subpartition sp1,subpartition sp2),
partition p1 value lessthan (20),
(subpartition sp3,subpartition sp4),
)
列表分区
列表分区允许用户明确的控制行到分区的映射
不同的范围分区或列分区,他运许按自然的方式对无序和不相干的数据集进行分组的组织
例如:
partition by list(字段)(
partition 列名称 values (值列表),
partition 列名称 values (值列表),
。。。
。。。
partition 列名称 values (值列表)
)
指定的分区中查询
select * from tableName partition(p1)
表分区的维护
移动,添加,删除,结合, 截断,拆分,合并,交换 -
oracle 删除外键的表的相关sql语句
2013-06-26 18:43:261. 查找所有引用某表主键为外键的表 其中PK_SRVMONITOR_SERVICE为该表的主键名 select c.constraint_name, c.table_name, c.constraint_type, c.r_constraint_name from user_constraints c where c... -
#oracle--删除以id为主键地重复记录,且只留下重复记录中第一条记录的sql语句
2018-09-17 17:58:50这道题是我面试一家金融软件...要求能够通过一个sql语句删除所有重复的记录,并只留下重复记录中第一条记录的sql语句。 答案: delete from userinfo u3 where u3.userid in ( with aaa as(select u2.useri... -
Oracle数据库表创建、删除(包括主键和索引)以及表结构的增_删_改SQL语句相关脚本
2021-04-08 12:49:03Oracle数据库表创建以及表结构的增_删_改SQL语句相关脚本 创建表结构 create table 表名( id varchar2(64), name varchar2(230), age number(1), constraint 约束名称 primary key(id) );––––––创建表结构 ... -
Oracle数据库:如何创建约束及创建约束的SQL语句,正则约束的SQL语句
2017-10-20 21:18:05Oracle数据库中的约束有五种约束,分别是: 实体完整性:主键约束、唯一性约束(可以为空) ...创建、删除约束的SQL语句: 表名是test 1、添加主键约束(非空,不重复)(给test表的id这一列添加主键约束) alter -
Oracle基本SQL语句
2020-05-19 16:00:06删除表: ...主键(Primary Key–PK):主键在表中能够唯一表示一条记录的字段,主键唯一并且不能为空。 外键(Foreign Key–FK):外键主要用来维系多表之间的关联关系,一张表中的外键,必定是另一张表中 -
oracle 数据按主键删除慢问题的解决方法
2020-12-16 07:46:59需求是删除一个主表A,另有两个附表建有此表的主键ID的外键。删除A表的数据级联删除另两个表的关联数据。增删改查使用hibernate实现。 一开始一直以为是hibernate的内部处理上有关联操作导致的删除和更新数据缓慢。... -
Oracle数据库笔记4(sql语句实例)
2019-03-06 17:23:38sql语言整理: 创建:表 增加:表中的列,完整性...删除:表列,列里面的值,主键,唯一性,外键,check 示例: 创建雇员表(Employee),包括员工号(empno),员工名(empname),工作职位(job),主管领导(mana... -
oracle 修改主键_Oracle数据库之索引
2020-12-06 07:21:161 索引简介索引是与表相关的一个可选结构用以提高 SQL 语句执行的性能减少磁盘I/O使用 CREATE INDEX 语句创建索引在逻辑上和物理上都独立于表的数据 Oracle 自动维护索引索引有各种类型,除了标准索引外,还有一些... -
SQL Server 、Oracle和MySQL三种数据库的增删改查SQL语句与它们之间的区别
2018-11-21 17:12:34SQL Server 的基本SQL语句 drop table student --删除student这个表,彻底删除 create table student( --创建数据表 sid int primary key identity(10,1), --设置sid为主键自增(从10开始逐渐加1) sname varchar(20... -
Oracle实现主键id自增
2020-09-29 16:20:33在navicat中使用sql语句创建序列 CREATE SEQUENCE SEQ_USER --SEQ_USER为序列的名称 INCREMENT BY 1 -- 每次自增加1 START WITH 1 --序列从1开始自增 NOMAXvalue --最大值 NOCYCLE NOCACHE; 查看当前序列 select ... -
『ORACLE』 SQL语句简单应用(五)(11g)
2017-05-18 18:32:00not null 非空 字段+not null unique 唯一 primary key 主键(确保数据不能重复) ...级联删除:删除一个部门,部门里的员工跟着删除--->on delete cascade 制空:把部门下的员工转到NULL,删除部... -
jsp +oracle分页问题 主要是在SQL语句上
2015-08-27 08:12:04; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="java.sql.*"%> ... 我的表名叫STUDENT 主键是ID 然后还有 NUM ,NAME ,SEX ,STATE, STUDENT_ID ,CLASS,ID_CARD ,TEL, MAIL 字段 大神帮个忙被 -
经典全面的SQL语句大全
2009-11-23 16:31:09删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新... -
sql语句优化
2017-08-14 11:48:48------------------------------数据库和SQL语句优化-------------------------------------- 1.创建表时,尽量建立主键,大数据表删除使用truncate table 2.合理使用索引,索引的顺序尽量与查询条件一致,数据频繁更改... -
oracle 通过数据库主键外键级联删除
2009-09-11 13:10:06通过PLSQLDEV设置 1,创建一个有主键的表 2,创建一个丛表,通过PL/SQDEV设置带有级联删除的外键 ...通过SQL语句设置 [code="sql"]alter table [丛表名] add constraint [设置外键... -
mysql删除主键外键约束_解决数据库的索引乱码问题,先删除外键约束,再删除主键约束及其索引...
2021-01-27 12:19:00根据Oracle的AWR、ADDM发现的一个SQL语句:SQL语句:select distinct m.*from ING_mmee_info mstart with m.mmee_id in(select distinct m.mmee_idfrom ING_PERSON_EMPLOYEE h,ING_PERSON_ROLE r,ING_mmee_info m,IN... -
基本的增删查改SQL语句
2019-08-28 16:43:37SQL 增删查改 DDL DDL:数据定义语言 一、创建 1.创建|删除 表 --oracle常用字段类型 number() 数值类型 varchar2()可变字节型 create table 表名( 字段名 字段类型 约束, 字段名 字段类型 约束 ); drop table ... -
经典SQL语句大全
2014-12-20 12:00:3010、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1... -
oracle和mysql的唯一约束_Oracle | PL/SQL唯一索引(Unique Constraint)用法
2021-03-16 23:06:041 目标用示例演示如何创建、删除、禁用和使用唯一性约束。2 什么是唯一性约束?唯一性约束指表中一个字段或者多个...3 唯一性约束和主键的区别主键(Primary Key):所有组成主键的列都不能包含空值。唯一性约束(Uniqu... -
oracle 删除重复的记录
2009-04-03 20:51:00对此,总结了一下删除重复记录的方法,以及每种方法的优缺点。...1、通过创建临时表可以把数据先导入到一个临时表中,然后删除原表的数据,再把数据导回原表,SQL语句如下:creat table tbl_tmp (select distinct* f -
oracle快速删除重复的记录
2020-12-16 10:23:11正在看的ORACLE教程是:oracle快速删除重复的记录。做项目的时候,一位同事导数据的时候,不小心... 1、通过创建临时表 可以把数据先导入到一个临时表中,然后删除原表的数据,再把数据导回原表,SQL语句如下: creat -
Oracle11G-SQL开发指南-8-修改表的内容
2017-02-28 17:44:591. 使用INSERT 语句添加行 a> 省略列的列表 b> 为列指定空值 c> 在列值中使用单引号和双引号 4> 从一个表向另一个复制...4. 使用DELETE语句删除行 5. 数据库的完整性 主键 外键 6. 使用默 -
SQL Oracle 学习
2020-08-13 17:46:26SQL Oracle数据库相关学习数据库结构数据库物理结构数据库逻辑结构数据完整性主键约束唯一性约束检查约束默认约束外键约束SQL语言SQL运算符算术运算符赋值运算符逻辑运算符比较运算符SQL语句语法插入单行数据插入...