添加,更新与删除数据
操作表记录(增删改查,create, read update,delete)
1. INSERT
INSERT INTO TABLE [(column [,column...])] VALUES (value [,value...]);
1.1说明,因为id设置了计数器,并设置了自增长,插入数据时就不用填值。
insert into employee (id,name,gender,birthday,entry_date,job,salary,resume) values (NULL,'张飞','m','1999-10-1','2021.9.30','程序员',20000,'技术全面,解决问题能力强');
1.2 列的声明如果包含整张表的列名时,那么列的声明部分可以忽略不写. 但是插入数据的顺序必须和表中列的顺序保持一致
insert into employee values (null,'关羽','m','1991-3-9','2020-4-30','网管',18000,'责任心强,工作积极');
一条sql语句插入多条数据
insert into employee values (null,'刘备','m','1993-5-9','2020-4-30','CEO',20000,'公司的领导者'),(null,'赵云','m','1995-6-2','2020-4-30','保安队长',15000,'责任心强,功夫好');
2. UPDATE
UPDATE tb1_name SET col_name1=exprl [,col_name2=expr2 ...][WHERE where_definition]
~将所有员工的薪水改为5000元
update employee set salary=5000;
~将张飞的薪水改为3000元
update employee set salary=3000 where name='张飞';
~将关羽的薪水改为4000元,工作改为ccc
update employee set salary=4000,job='ccc' where name='关羽';
~将'刘备'的薪水在原有的基础上增加1000元
update employee set salary=salary+1000 where name='刘备';
3. DELETE(truncate)
DELETE from tb1_name [where where_definition]
~删除表中名称为张飞的记录
delete from employee where name='张飞';
~删除表中所有的记录
delete from employee;
使用truncate删除表中的记录(删除整张表,然后再新建一个同样的表)
truncate employee;
4. SELECT(简单查询)
查询的表达式同样也支持运算
(1)SELECT [DISTINCT] *|{column1,column2,column3...} from table;
练习:
create table exam(
id int primary key auto_increment,
name varchar(20) not null,
chinese double,
math double,
english double
);
insert into exam values (null,'关羽',85,76,70);
insert into exam values (null,'张飞',70,75,70);
insert into exam values (null,'赵云',90,65,95);
~查询表中所有学生的信息
select * from exam;
~查询表中所有学生的姓名和对应的英语成绩
select name,english from exam;
~过滤表中重复数据
select english from exam;
select distinct english from exam;
~在所有学生分数上加10分特长分显示
查询出的数据显示成这样而已,实际的数据库数据没有变,要改的用update语句
select name,math+10,english+10,chinese+10 from exam;
~统计每个学生的总分
select name,math+english+chinese from exam;
~使用别名来表示学生的总分
select name as newname,math+english+chinese as total_score from exam;
as可以省略
select name newname,math+english+chinese total_score from exam;
常见错误, 列的名称之间要用逗号隔开
select name english from exam;
(2)带有where字句的过滤查询
~ 查询姓名为XXX的学生成绩
select * from exam where name='张飞';
~ 查询英语成绩大于90分的同学
select * from exam where english>90;
~ 查询总分大于200分的所有同学
select * from exam where math+english+chinese>230;
~ 查询英语成绩在80-100之间的同学
select * from exam where english between 80 and 100;
~ 查询数学成绩为75,76,77的同学
select * from exam where math in (75,76,77);
~ 查询所有张姓同学的成绩
%表示一个或者多个,_表示一个字符
select * from exam where name like '张%';
新增一个数据测试用来测试数据
insert into exam values (null,'张某某',32,22,35);
查询张姓一个名字的
select * from exam where name like '张_';
查询张姓两个名字的
select * from exam where name like '张__';
~ 查询数学分>70,语文>80的同学
select * from exam where math>80 and chinese>90;