数据库SQL语句表记录操作教程

此篇主要内容是对表记录的查询,在mybatis及找工作笔试中会用到,基本可以解决所有问题。接着上一篇写。

三、表记录操作篇

预备知识

在进行sql操作之前我们壁纸知道常用的的数据类型,接下来以mysql中的数据类型为例子介绍。
– 字符串类型
包括 varchar(0~65535整数)、char(0~255整数)
– 大数据类型
blob(0~65535字节)、text(0~65535字节)
– 数值型
tinyint(很小的整数)、smallint(小的整数)、mediumint(中等大小的整数)、int(普通大小的整数)、bigint(大的整数)、float(单精度浮点数)、double(双精度浮点数)
– 逻辑型
bit
– 日期型
year(yyyy 1901~2155)、time(hh:mm:ss -838:59:59~838:59:59)、date(yyyy-mm-dd 1000-01-01~9999-12-3)、datetime(yyyy-mm-dd hh:mm:ss 1000-01-01 00:00:00~ 9999-12-31 23:59:59)、timestamp(yyyy-mm-dd hh:mm:ss 1970~01~01 00:00:01 utc~2038-01-19 03:14:07utc)

1、插入

1)向表中插入某些列(字段)的记录

    格式:insert into 表名 (列名1,列名2,列名3...) 
         values (值1,值2,值3...); 

2)向表中插入所有的列

    格式;insert into 表名 values (值1,值2,值3...);

note:
1. 插入的数据应与字段的数据类型相同
2. 数据的大小应在列的规定范围内
3. 在values中列出的数据位置必须与被加入的列的排列位置相对应
4. 除了数值类型外,其他字段类型的值必须用单引号引起来
5. 插入空值:不指定或insert into table value(null)
6. 对于自动增长的字段操作时,直接插入null
例如:
insert into sort(sid,sname) values(‘s001’, ‘电器’);
insert into sort(sid,sname) values(‘s002’, ‘服饰’);
insert into sort values(‘s003’, ‘化妆品’);
insert into sort values(‘s004’,’书籍’);

2、更新

格式:update 表名 set 字段名=值,字段名=值;
格式:update 表名 set 字段名=值,字段名=值 where 条件;

note:
1. 列名的类型与修改的值要一致
2. 修改值得时候不能超过最大长度
3. 值如果是字符串或者日期需要加’’
例如:
update sort set sname=’日用品’;
update sort set sname=’日用品’ where sid=’s002’;
update sort set sname=’日用品’ where sid=’s003’;

3、删除

    格式:delete from 表名 [where 条件];
    格式:truncate table 表名;

note
delete 一条一条删除,不清空auto_increment记录数
truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始
例如:
delete from sort where sname=’日用品’;
delete from sort;表数据清空
truncate table sort;

4、查询

以下以此表为例

create table zhangwu (
    id int primary key auto_increment, -- 账务id
    name varchar(200), -- 账务名称
    money double, -- 金额
    );
插入表记录:
insert  into zhangwu(id,name,money) values (1,'吃饭支出',247);
insert  into zhangwu(id,name,money) values (2,'工资收入',12345);
insert  into zhangwu(id,name,money) values (3,'服装支出',1000);
insert  into zhangwu(id,name,money) values (4,'吃饭支出',325);
insert  into zhangwu(id,name,money) values (5,'股票收入',8000);
insert  into zhangwu(id,name,money) values (6,打麻将支出,8000);
insert  into zhangwu(id,name,money) values (7,null,5000);

1、基本查询

1 查询指定字段  
select 字段1,字段2,...from 表名;
例如:
select id,name from zhangwu;
2 查询表中所有字段
select * from 表名;
例如
select * from zhangwu;
3 去除重复记录
select distinct 字段 from 表名;
例如:
select distinct money from zhangwu;
4 别名查询,使用的as关键字,as可以省略的.别名可以给表中的字段,表设置别名
格式:
    表别名格式:
select * from 表名 as 别名; 或
select * from 表名 别名;
列别名格式:
select 字段名 as 别名 from 表名;
或
select 字段名 别名 from 表名;
例如
表别名:
    select * from zhangwu as zw;
列别名:
    select money as m from zhangwu;
    或
    select money m from zhangwu;

5 sql语句的操作中,可以直接对列进行运算
例如:将所有账务的金额+10000元进行显示.
select pname,price+10000 from product;

2、条件查询

格式:select 字段  from 表名  where 条件;

接下来介绍以下where条件种类
比较运算符:

> < <= >= = <>

大于、小于、大于(小于)等于、不等于

between …and…

显示在某一区间的值(含头含尾)

in(set)

显示在in列表中的值,例:in(100,200)

like 通配符

% 用来匹配多个字符;例first_name like ‘a%’;
_ 用来匹配一个字符。例first_name like ‘a_’;

is null

判断是否为空 is null; 判断为空is not null; 判断不为空
逻辑运算符
and??多个条件同时成立
or ??多个条件任一成立
not??不成立,例:where not(salary>100);

例如:
查询所有吃饭支出记录
select * from zhangwu where name = ‘吃饭支出’;
查询出金额大于1000的信息
select * from zhangwu where money >1000;
查询出金额在2000-5000之间的账务信息
select * from zhangwu where money >=2000 and money <=5000;

select * from zhangwu where money between 2000 and 5000;
查询出金额是1000或5000或3500的商品信息
select * from zhangwu where money =1000 or money =5000 or money =3500;

select * from zhangwu where money in(1000,5000,3500);
查询出账务名称包含”支出”的账务信息。
select * from zhangwu where name like “%支出%”;
查询出账务名称中是无五个字的账务信息
select * from gjp_ledger where ldesc like ““; – 五个下划线
查询出账务名称不为null账务信息
select * from zhangwu where name is not null;
select * from zhangwu where not (name is null);

3、order by

格式:select 字段名1,字段名2,字段名3... from 表名
     order by 字段名 asc(升序)或desc(降序);

4、聚集函数

count 返回某个字段记录总数(where可省略)
select count(*)或count(字段名) from 表名 where 条件;
sum 返回满足条件的和(where可省略,仅对数值有效)  
select sum(字段名) from 表名 where 条件;
avg 求平均数(与上面格式一样)
max/min 求最大最小值(与上面格式一样)

5、group by

对记录进行分组
格式:select 字段1,字段2,字段3...
from 表名
where 条件
group by 字段名;
或
select 字段1,字段2,字段3...
from 表名
group by 字段名
having 条件;

note:
having和where均可实现过滤,但在having可以使用聚集函数,having通常跟在group by后,它作用于分组

例如:
select name,count(id)
...
group by name;
正确
select name,id
...
group by name;
错误,id为非聚集函数,任何没有出现在group by 
子句中的属性若出现在select子句中,它只能出现在聚集函数
内部,否则错误。

6、exists ,not exists

直接以例子来说明

select id from sec as s 
where sem = 'fall' and year = 2009
and exists ( select * from sec as t
             where sem = 'spring '
             and year = 2010);

7、限制输出的记录数

1、sql server 和access中

直接以例子来说明
select top 5 sname from pro1;

2、oracle中中

select pname from pro1
where rownum <= 5;

3、mysql中

select pname from pro1 limit 5;
note:
若想输出前几名,应该先按照从大到小或者别的方式排序。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐