mysql表数据的增删改心得_sql增删改总结

操纵数据(DML)

数据操纵语言:当添加、更新或者删除数据库中的数据时需要使用 DML 语句。DML 依据的一个集合构成了一个被称为事务的逻辑单元。

------------------------------------------------------------------

添加一个新行到表中:

insert into+表(列名1,列名2,,列名n) values(值1,值2,,值n);

完全列添加

insert into+表 +values (表对应的列1,表对应的列2,,表对应的列n);列名可以省略不写,需要插入且顺序一致) 。

插入带空值的行

insert into departments (department_id, department_name, manager_id, location_id) values (310,'A',null,null);

隐式方法: 省略字段列表中的列。省略不需要插入值的列和需要插入的值

insert into departments (department_id, department_name) values (310,'A');

插入日期值:插入现在时间 sysdate

比如这个时间2005-5-5--> 05-5月-06 或者 to_date('2005-5-5','yyyy-mm-dd')

从另一个表中复制行用一个查询写 INSERT 语句

不用 VALUES 子句

在查询中列的数目要匹配 INSERT 子句中列的数目

指定列添加: insert into +表名(需插入的列1,列2,,列n) +查询到的别的表中的列

insert into emp (id,name, salary, commission) select employee_id, last_name, salary, commission_pct from employees where job_id like'%REP%';

完全列添加:insert into +表名 +查询到的别的表中的列

insert into emp select employee_id,last_name,salary,commission_pct from employees where job_id like'%REP%';

--------------------------------------------

改变表中的数据

update语句

修改列的值: update +表名+set +列的值1=更改值1,列的值2=更改值2 where +筛选条件

修改emp表中id=170的name和salary的值

update emp e set e.name='KCY',e.salary=19999 where e.id =170;

更新 emp 表中的雇员 156 的薪水,使其和雇员 170 相同。

update emp e set e.salary= (select salary from emp where id=156) where id=170;

从表中删除行---- delete语句

delete from +表 +where+筛选条件

删除 emp 表中 id 为 302 的雇员。

delete from emp where id = 302;

删除emp表中和employees这个表中name为‘IT_PROG’薪水相同的行

delete from emp where salary= (select SALARY from employees e where e.name='IT_PROG');

删除表中的全部数据

delete emp;

--------------------------------------

事务处理语言(TCL)

指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。

事务特性原子性(ATOMICITY):事务中的操作要么都不做,要么就全做。

一致性(CONSISTENCY):一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。

隔离性(ISOLATION):一个事务的执行不能被其他事务干扰。

持久性(DURABILITY):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

1.显式事务:需要我们手动的提交或回滚。

事务提交Commit:

当我们执行了一个 DML 语言后,此时的数据并不会持久化到数据文件中。需要使用commit 来确认提交。

事务回滚:Rollback

当我们执行了一个 DML 语言后,也可以使用 rollback 来撤销当前对表的操作。

DML 语言中的所有操作都是显示事务操作。commit ... 事务提交

rollback... 事务回滚

savepoint... 设置回滚点

savepoint A;... rollback to A; 回滚到点A

设置回滚点:

savepoint... 设置回滚点: savepoint A;---> rollback to A; 回滚到点A

2.隐式事务

数据库自动提交不需要我们做任何处理,同时也不具备回滚性。

DDL、DCL 语言都是隐式事务操作

使用事务commit ... 事务提交

rollback... 事务回滚

savepoint... 设置回滚点: savepoint A;---> rollback to A; 回滚到点A

-----------------------------------------------------------

创建表(CREATE TABLE)

create table +表名(列名1 数据类型,列名2 数据类型);

创建一个表AA,vaechar2类型的name,number类型的age

create table AA(name varchar2(10),eag number(3));

Oracle 数据库中的表查看本用户说拥有的表的名称 select table_name from user_tables;

查看本用户所拥有的不同的对象类型 select distinct object_type from user_objects;

查看本用户所拥有的表,视图,同义词和序列 select * from user_catalog;

用查询创建表

创建一个BB表,以employees表中department_id=80的last_name,employee_id,salary作为列

create table BB as select e.last_name,e.employee_id,e.salary from employees e where e.department_id=80;

----------------------------------

修改表(alter table )

ALTER TABLE 语句可以修改表的信息。

添加一个新列:alter table AA add(salary number(5,2));

修改一个已存在的列:alter table AA modify (列名a 数据类型a);

修改数据类型 alter table AA modify(列名a 数据类型b);

修改默认值 alter table AA modify(列名a 数据类型a default 默认值1);

取消默认值 alter table AA modify(列名a 数据类型a default null);

修改列名 alter tableAArename column 列名ato 列名b

删除一个列 alter tableAAdrop column列名;

删除AA表中salary这个列

alter table AA drop column salary;

截断表(TRUNCATE TABLE)

特点:删除表中的所有的数据,但是保留表结构。在截断表时不能给定条件截断表时隐式事务。

示例:truncate table AA;

truncate table AA;

删除表(DROP TABLE):drop table AA;

--------------------------------------

定义约束

数据库中的约束类型– 非空约束(NOT NULL)

– 唯一性约束(UNIQUE)

– 主键约束(PRIMARY KEY)

– 外键约束(FOREIGN KEY)

– 用户自定义约束(CHECK)

创建表时定义 NOT NULL 约束 (非空)

create table AA(id number,name varchar2(20) not null,salary number constraint AA_id not null);

修改表定义 NOT NULL 约束 (非空)

alter table AA modify AA_id notnull;

定义 UNIQUE 约束 (唯一性约束)

创建表时定义 UNIQUE 约束

create table AA(id number constraint AA_uk unique,name varchar2(20));

修改表定义 UNIQUE 约束 (唯一性约束)

alter table AA modify(id unique);

定义 PRIMARY KEY 约束 (主键约束)

创建表时定义 PRIMARY KEY 约束

create table AA(id number constraint AA_pk primary key);

修改表定义 PRIMARY KEY 约束 (主键约束)

alter table AA modify(id constraint constraint_pk primary key);

创建联合主键 (联合主键)

create table AA(id number,name varchar2(20),constraint AA_pk primary key(id,name));

定义 FOREIGN KEY 约束 (外键约束)不能使用modify,只能用add

创建表时定义 FOREIGN KEY

create table AA(id number,d_idnumber,constraint AA_fk foreign key(d_id)references BB(id));

修改表定义 FOREIGN KEY (外键约束)不能使用modify,只能用add

alter table AA add constraint AA_fk foreign key(d_ id) references BB(id);

定义 CHECK 约束(自定义约束) 不能使用modify,只能用add

创建表时定义 CHECK 约束 (自定义约束)

create table AA(id number,salary number(8,2) constraint AA_ck check(salary > 1000));

修改表定义 CHECK 约束 (自定义约束) 不能使用modify,只能用add

alter table AA add constraint AA_ck check(salary > 1000);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值