DML---对数据库中表记录的操作(插入insert、更新updata、删除delete、查询select)
1.插入记录
insert into tablename(field1,field2,...,fieldn) values(value1,value2,...,valuen);
eg:向emp表中插入ename为zzx1,hiredate为2000-01-01,sal为2000,deptno为1
insert into emp(ename,hiredate,sal,deptno) values('zzx1','2000-01-01','2000',1);
或不指字段名,但是values先后顺序要与字段顺序一致。
insert into emp values('zzx1','2000-01-01','2000',1);
含空字段、非空字段,但是含有默认值的字段、自增字段可以不用在insert后的字段列表里面出现
查看整个表格:
select * from table_name;
一次插入多条记录:
insert into tablename (field1,field2,...,fieldn)
values
(record1_value1,record1_value2,....record1_valuen),
(record2_value1,record2_value2,....record2_valuen),
...
(recordn_value1,recordn_value2,....recordn_valuen);
eg:insert into dept values(5,'dept5'),(6,'dept6');
2.更新记录update
update tablename set field1=value1,field2=value2,...,fieldn=valuen[where condition]
eg;将emp表中ename为lisa的薪水从3000改为4000
update emp set sal=4000 where ename='lisa'
同时更新多个表中数据:
update t1,t2,...,tn set t1.field1=exp1,t2.field2=exp2,...,fieldn=expn [where condition]
eg:同时更新表emp中的字段sal和表dept中的字段deptname:
update emp a,dept bset a.sal=a.sal*b.deptno,b.deptname=a.ename where a.deptno=b.deptno;
3.删除记录
delete from tablename [where condition]
eg:delete from emp where ename='dony'
一次删除多个表的数据:
delete t1,t2,...,tn from t1,t2,...,tn [where condition]
from后面用表名的别名,则delete后面也要用对应的别名。
eg:同时删除emp和dept中deptno为3的记录:
delete a,b from emp a,dept b where a.deptno=b.deptno and a.deptno=3;
注:无论单表还是多表,不加where 条件会把表的所有内容删除。
4.查询记录
select * from tablename [where condition]
eg:将记录全部查出:
select * from emp;
*表示将所有记录都选出来,也可以用逗号分隔的所有字段代替,如:
select ename,hiredate,sal,deptno from emp;
各种查询方法:
①查询不重复的记录
select distinct 列名 from tablename;
eg:筛选某列中不重复的所有行:
select distinct deptno from emp;
②条件查询(查询具备某些必要条件的记录)
select * from tablename where condition;
where 后面的条件是一个字段的比较,如'=','>','<','>=','<=','!='等,多条件间可以使用or,and等逻辑符号记性多条件联合查询。
eg:筛选所有deptno为1的记录:
select * from emp where deptno=1;
③排序和限制
排序(order by):
select * from tablename [where condition] [order by field1 [desc|asc],field2 [desc|asc],...,fieldn [desc|asc]];
其中DESC和ASC是排序关键字,DESC为降序,ASC为升序。不写关键字时,默认为升序排列。order后面可以跟多个不同的排列字段,且每个排列字段可以有不同的排列顺序。
eg:emp表中按工资高低进行显示:
select * from emp order by sal;
如果排列字段的值一样,则值相同的字段按照第二个排列字段进行排序,依次类推。若果只有一个排列子弹,则字段相同的记录将会无序列排序。
eg:select * from emp order by deptno,sal desc;
限制:
select