数据库的增删改查

数据库的增删改查,第1张

1、数据库增加数据:

1)插入单行

insert [into] <表名> (列名) values (列值)

例:insert into t_table (name,sex,birthday) values ('开心朋朋','男','1980/6/15')

2)将现有表数据添加到一个已有表 insert into <已有的新表> (列名) select <原表列名> from <原表名>

例:insert into t_table ('姓名','地址','电子邮件')

select name,address,email from t_table

3)直接拿现有表数据创建一个新表并填充 select <新建表列名> into <新建表名> from <源表名>例:select name,address,email into t_table from strde

2、数据库删除数据:

1)删除<满足条件的>行

delete from <表名> [where <删除条件>]。

例:delete from t_table where name='开心朋朋'(删除表t_table中列值为开心朋朋的行)

2)删除整个表 truncate table <表名>

truncate table tongxunlu

注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能用语有外建约束引用的表

3、数据库修改数据 update <表名> set <列名=更新值> [where <更新条件>]

例:update t_table set age=18 where name='蓝色小名'

4、数据库查询数据:

1)精确(条件)查询

select <列名> from <表名> [where <查询条件表达试>] [order by <排序的列名>[asc或desc]]

2)查询所有数据行和列。例:select from a

说明:查询a表中所有行和列

3)使用like进行模糊查询

注意:like运算副只用于字符串,所以仅与char和varchar数据类型联合使用

例:select from a where name like '赵%'

说明:查询显示表a中,name字段第一个字为赵的记录

4)使用between在某个范围内进行查询

例:select from a where nianling between 18 and 20

说明:查询显示表a中nianling在18到20之间的记录

5)使用in在列举值内进行查询

例:select name from a where address in ('北京','上海','唐山')

说明:查询表a中address值为北京或者上海或者唐山的记录,显示name字段

扩展资料:

插入之前需要创建数据表,创建方式如下:

CREATE TABLE 表名称

(

列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型,

)

例如:--流程步骤定义表

create table T_flow_step_def(

Step_no    int not null,     --流程步骤ID

Step_name    varchar(30)    not null, --流程步骤名称

Step_des    varchar(64)    not null,    --流程步骤描述

Limit_time    int not null,     --时限

URL     varchar(64)    not null,     --二级菜单链接

Remark    varchar(256)    not null,

)

参考资料:

百度百科-sql语句大全

分组查询(group by)

分组查询:

1查询每个部门的最高工资

select deptno,max(sal) from emp group by deptno;

2查询每个职位的平均工资

select deptno,avg(sal) from emp group by deptno;

3查询每个部门的人数

select deptno,count() from emp group by deptno;

4查询工资大于1000的员工,每个部门的最大工资

select deptno,max(sal) from emp where sal>1000 group by deptno;

多字段分组查询:group by 字段1,字段2;

1查询每个部门下每个主管的手下人数

select deptno, mgr, count() from emp where mgr is not null group by deptno,mgr;

2查询emp表中每个部门的编号,人数,工资总和,最后根据人数进行升序排序,如果人数一致,根据工资总和降序排序

select deptno,count(),sum(sal) from emp group by deptno order by count() asc,sum(sal) desc;

3查询工资在1000-3000之间的员工信息,每个部门的编号,平均工资,最低工资,最高工资,根据平均工资进行升序排序排列

select deptno,avg(sal),min(sal),max(sal) from emp where sal between 1000 and 3000 group by deptno order by avg(sal)

4查询含有上级领导的员工,每个职业的人数,工资的总和,平均工资,最低工资,最后根据人数进行降序排列,如果人数一致,根据平均工资进行升序排列

select job, count(),avg(sal),min(sal) from emp where mgr is not null group by job order by count() desc,avg(sal) asc;

各种关键字的顺序

select from 表名  where grouphaving order by limit

    having(结合group by使用)

having一般要结合分组查询和聚合函数使用,用于给聚合函数的内容添加条件

聚合函数的条件不能写在where后面

普通字段的条件写在where后面,聚合函数的条件写在having后面

1查询每个部门的平均工资,要求平均工资大于2000(c是别名的用法)

select deptno,avg(sal) c from emp group by deptno having c >2000;

2查询每个分类的平均单价,要求平均单价低于100

select category_id ,avg(price) a from t_item group by category_id having a<100;

3查询category_id分类为238和917的两个分类的平均单价

select category_id,avg(price) from t_item where category_id in(238,917) group by category_id;

4查询emp表中每个部门的平均工资高于2000的部门编号,部门人数,平均工资,最后根据平均工资降序排列

select deptno,count(),avg(sal) a from emp group by deptno having a>2000 order by a desc;

5查询emp表中工资在1000-3000之间的员工,每个部门编号,工资总和,平均工资,过滤掉平均工资低于2000的部门,按照平均工资进行升序排序

select deptno,sum(sal), avg(sal) a from emp where sal between 1000 and 3000 group by deptno having a>=2000 order by a asc;

6查询emp表中每年入职的人数

select extract(year from hiredate) year,count() from emp group by year;

7查询每个部门的最高平均工资

select deptno,avg(sal) from emp group by deptno order by avg(sal) limit 0,1;

子查询(嵌套查询)

子查询可以写在where或having后面当做查询条件的值

写在from后面,当做一张新表(但是必须要有别名)

select ename from (select from emp where sal>1000) newtable;

写在创建表的时候

create table emp_20 as (select from emp where deptno=20);

1查询emp表中工资最高的员工信息

select from emp where sal=(select max(sal) from emp);

2查询emp表中工资大于平均工资的所有员工的信息

select from emp where sal>(select avg(sal) from emp);

3查询工资高于20号部门最大工资的员工信息

select from emp where sal>(select max(sal) from emp where deptno=20);

4查询工资高于20号部门最大工资的员工信息

select from emp where sal>(select avg(sal) from emp);

5查询和Jones相同工资的其他员工信息

select from emp where job=(select job from emp where ename='jones' and ename!='jones');

6查询工资最低的员工的同事们的信息(同事=相同job)

select from  emp where job=(select job from emp where sal=(select min(sal) from emp)) and sal !=(select min(sal) from emp);

7查询最晚入职的员工信息

select from emp where hiredate=(select max(hiredate) from emp);

8查询名字为King的部门编号和部门名称(需要用到dept表)

select deptno,dname from dept where deptno=(select deptno from emp where ename='king');

9查询有员工的部门信息(编号和名称)

select deptno ,dname from dept where deptno in (select distinct deptno from emp);

10查询平均工资最高的部门信息

select from dept where deptno in (select deptno from emp group by deptno having avg(sal)=(select avg(sal) from emp group by deptno order by avg(sal) desc limit 0,1));

关联查询

同时查询多张表的数据称为关联查询

1查询每一个员工的名称和其对应的部门名称

select eename,ddname from emp e,dept d where edeptno=ddeptno;

2查询在new york工作的所有员工的信息

select  e from emp  e,dept  d  where edeptno=ddeptno and  dloc='new york';

笛卡尔积

如果关联查询不写关联关系则查询到的数据是两张表的乘积,这个乘积称为笛卡尔积,笛卡尔是一种错误查询方式的结果,工作切记不要出现

    等值连接和内连接

等值连接:

select from A,B where Ax=Bx and Aage=18;

内连接:

select from A join B on Ax=Bx where Aage=18;(将关联关系写在on后面)

1查询每个员工的名称和其对应的部门名称

select eename,ddname from emp e join dept d on edeptno=ddeptno;

外连接

使用外连接查询得到的数据层除了两张表的交集数据以外和另外一张主表的全部数据,哪个表为主表通过left/rigth控制, left以join左边表为主表 rigth以join右边表为主表

1查询所有员工的名称和其对应的部门名称

select eename,ddname from emp e left join dept d on edeptno=ddeptno;

一、

简单查询

简单的transact-sql查询只包括选择列表、from子句和where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。

例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。

select

nickname,email

from

testtable

where

name='张三'

(一)

选择列表

选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。

1、选择所有列

例如,下面语句显示testtable表中所有列的数据:

select

from

testtable

2、选择部分列并指定它们的显示次序

查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。

例如:

select

nickname,email

from

testtable

3、更改列标题

在选择列表中,可重新指定列标题。定义格式为:

列标题=列名

列名

列标题

如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:

select

昵称=nickname,电子邮件=email

from

testtable

4、删除重复行

select语句中使用all或distinct选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为all。使用distinct选项时,对于所有重复的数据行在select返回的结果集合中只保留一行。

5、限制返回的行数

使用top

n

[percent]选项限制返回的数据行数,top

n说明返回n行,而top

n

percent时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。

例如:

select

top

2

from

testtable

select

top

20

percent

from

testtable

(二)from子句

from子句指定select语句查询及与查询相关的表或视图。在from子句中最多可指定256个表或视图,它们之间用逗号分隔。

在from子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:

select

username,citytablecityid

from

usertable,citytable

where

usertable

本篇文章来源于

黑软基地-中国最大的黑客教程计算机安全教程下载基地

原文链接:

>

以上就是关于数据库的增删改查全部的内容,包括:数据库的增删改查、数据库高级查询2、SQL数据库语句查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9526085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存