sql 数据库CRUD语句

5 篇文章 0 订阅

我们使用在进行数据库开发时,无非就是对数据进行增删改查的操作,学会了这个,就等于把数据库开发学会了,这是对普通的程序员而言

Insert语句    (增加数据)
Update语句  (更新数据)
Delete语句   (删除数据)
Select语句 (查找数据)

那么首先学习向表中增加数据,因为只有表中有数据了,才有更新,删除,查找数据等操作,不然这些操作没有什么意义,

使用 INSERT 语句向表中插入数据

语法:

INSERT INTO table [(column [, column...])] VALUES (value [, value...]);

在插入数据时,请注意如下几项:

1:插入的数据应与字段的数据类型相同。

2:数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
3:在values中列出的数据位置必须与被加入的列的排列位置相对应。

4:字符和日期型数据应包含在单引号中。

5:插入空值,不指定或insert into table value(null)

现在看下昨天我们创建user表的结构如图:


现在有一个user表,向表中插入一条数据


insert into user(id,username,birthday,entry_date,job,salary,resume,iamge)
values(1,'liudehua','1988-11-11','1988-09-09','android',10000,'liudehua.doc',null);

  在iamge这个列中我们给他值设置为null, 上面是一种写法,当然也可以不写,他也是为null,我们再插入一条数据,不写iamge这列:仔细看insert 语句:

insert into user(id,username,birthday,entry_date,job,salary,resume)
values(2,'liudehua','1988-11-11','1988-09-09','android',10000,'liudehua.doc');

现在我们查看下数据库中的数据 一共由于二条如图:

我们从表中就可以看出iamge这列的值为null,这就是注意事项中最后一条,向表中插入数据为null时,有二种做法,


插入数据,还有一种写法是这样的,比如我们向user表中插入一条数据,看下和之前插入语句有什么不同

insert into user  values(3,'xxxx','1988-11-11','1988-09-09','java',10000,'xxxxx.doc',null);

把之前列名都省略了,直接按照表中列的顺序插入数据 这种做法最好不好这么搞,因为在公司做开发,不是你一个人做,这样可读性不好


插入数据的细节:

表中的数据类型很多,有int varchar  text ...等一系列的,比如我们向user表中插入一个id,username

insert into user(id,username) values('5','zhoujielun');

id在表中明明是int类型,但是我们却传入了一个字符串类型,这就是mysql在插入数据的时候,会检查id的数据类型,然后自动转换成int类型

我们在向表中插入了数据,但有时需要对表中的数据进行修改,也就是更新数据库中的数据

更新数据库中的数据就要用到update语句了,使用 update语句修改表中数据

语法:

UPDATE tbl_name    SET col_name1=expr1 [, col_name2=expr2 ...]    [WHERE where_definition]  

说明:

UPDATE语法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要给予哪些值。
WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行


将所有员工薪水修改为5000元。

update user set salary=5000;

将id=2的员工薪水修改为11000;

update user set salary=11000 where id=2;

我们来看看表中的数据、

这是带条件的修改表中的某一条数据   上面的条件就是id=2 也就是修改这id=2这条记录 这就是附带条件的
将姓名为’zhoujielun’的员工薪水修改为3000元。

这和上面的将id=2的修改一样

update user set salary=3000 where username='zhoujielun';
将姓名为’zhoujielun’的员工薪水修改为4000元,job改为ccc。

update user set salary=4000,job='ccc' where username='zhoujielun';
将zhoujielun的薪水在原有基础上增加1000元

update user set salary=salary+1000 where username='zhoujielun';


我们在向表中插入数据的同时可能要对表中的数据进行删除,删除表中的数据用delete语句

使用 delete语句删除表中数据

语法:

delete from tbl_name       [WHERE where_definition] 

说明:

1:如果不使用where子句,将删除表中所有数据。:

2:Delete语句不能删除某一列的值(可使用update)
3:使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。

4:同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。
5:删除表中数据也可使用TRUNCATE TABLE 语句,它和delete有所不同  

TRUNCATE TABLE 是先删除整张表,包括表中的数据,然后再建一张没有数据的表效率比delete语句删除表速度快

delete 是一条条删除表中的数据

一般做整表删除用TRUNCATE TABLE 

删除表中的某一行用delete


那么我们现在通过几个练习 熟悉delete语句

删除表中名称为’zhoujielun’的记录。

delete from user where username='zhoujielun';
删除表中所有记录。

delete from user;
使用truncate删除表中记录

在对数据库进行操作的时  查询时用的最对的 在sql中查询是用select

基本select语句

SELECT [DISTINCT] *|{column1, column2. column3..}  FROMtable;

说明:

1:Select 指定查询哪些列的数据。

2:column指定列名。
3:*号代表查询所有列。

4:From指定查询哪张表。
5:DISTINCT可选,指显示结果时,是否剔除重复数据


刚才我们把user表中的数据全删了 现在重新创建一张表来练习查询语句

create table student(
id int,
name varchar(20),
chinese float,
english float,
math float
);


insert into student(id,name,chinese,english,math) values(1,'zhangxiaoming',89,78,90);
insert into student(id,name,chinese,english,math) values(2,'lijin',67,98,56);
insert into student(id,name,chinese,english,math) values(3,'wangwu',87,78,77);
insert into student(id,name,chinese,english,math) values(4,'liyi',88,98,90);
insert into student(id,name,chinese,english,math) values(5,'lilaicai',82,84,67);
insert into student(id,name,chinese,english,math) values(6,'zhangjinbao',55,85,45);
insert into student(id,name,chinese,english,math) values(7,'huangrong',75,65,30);

现在往student表中插入了几条数据,我们通过select  * from student;语句查看表中的数据



练习:

查询表中所有学生的信息。

select * from student;

查询姓名为wangwu学生的成绩

select * from student where name='wangwu';

查看所有学生的数学成绩

select math from student;
查询表中所有学生的姓名和对应的英语成绩。

select name,english from student;(这是查询指定的列)
过滤表中重复英语成绩

select distinct english from student;

select语句还可以使用表达式对查询的列进行运算

语法:

SELECT *|{column1|expression, column2|expression,..}   FROMtable;

在select语句中可使用as语句

SELECT column as 别名 from 表名;

练习:

在所有学生英语分数上加10分特长分。

select name,english+10 from student;
统计每个学生的总分。

select name,(english+math+chinese) from student;
使用别名表示学生分数

我们在查询统计各个学生的总分是这样的 见图


但是这种预览方式可能和我们的思维不一样 我们喜欢看到的是  比如 周三:总分 这样子

sql语句也给我们提供了

 select name as 姓名,(english+math+chinese) as 总分 from student;

见图:

这样看起来 更舒服 也更符合我们的思维方式   其实就是给name 起个别名  就好像一个人的外号一样

还有一种写法是这样的 sql语法也支持

select name 姓名,(english+math+chinese) 总分 from student;  (把as语句省略了)

我们在查询数据时,很多时候都是带着条件的 而不是查询表中所有的数据

sql中可以使用where子句,进行过滤查询

之前我们写过带条件的查询语句  在这里就不多讲了


可能我们要查询所有姓 周学生的成绩   这就涉及到模糊查询了

在where子句中经常使用的运算符

注意:

Like语句中,% 代表零个或多个任意字符,_ 代表一个字符,例first_name like ‘_a%’;

我们通过练习来熟悉一下这方面的sql语句怎么写



查询英语分数在 80-90之间的同学。

select name from student where english>=80 and english<=90;

当然还有一种写法:

select name from student where english between 80 and 90;
查询数学分数为89,90,91的同学。

select name from student where math in(80,90,96);
查询所有姓李的学生成绩。

select * from student where name like 'li%';
查询数学分>80,语文分>80的同学

select name from student where math>=80 and chinese>=80;


比如根据客户需求 我们需要对查询的语句进行排序  在sql语句中使用order by 子句排序查询结果

语法:

SELECT column1, column2. column3..  FROM table; order by column asc|desc;

说明:

Order by 指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的列名。
Asc 升序、Desc 降序
ORDER BY 子句应位于SELECT语句的结尾。


练习:

对数学成绩排序后输出。

select * from student order by math desc;

对总分排序后输出,然后再按从高到低的顺序输出

select * from student order by (chinese+math+english) desc;

查询所有姓李的学生成绩

select * from student where name like 'li%' order by (chinese+math+english) desc;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值