文章目录
- 1、准备工作
- 2、insert 增加数据
- 2.1 添加所有列的数据
- 2.2 添加部分列
- 2.3 一次插入多条数据
- 3、delete 删除记录
- 4、update 更新记录
- 5、select 查询记录
- 5.1 查询所有行所有列
- 5.2 查询指定行的所有列
- 5.3 查询所有行的指定列
- 5.4 查询指定行的指定列
在上一小节中介绍了 MySQL 数据库的一些最最最基础的入门级也是必须要掌握的10条语句,本节将继续深入学习 MySQL 的增删改查语句。本节讲的增删改查是相对于 表而言的。
1、准备工作
想要对表进行增删改查,首先应该有张表,假设我们要统计大学同学工作之后的工作情况,建立了如下表格:
姓名 | 性别 | 公司 | 工资 |
---|---|---|---|
准备工作:
mysql> create database salarydb;
Query OK, 1 row affected (0.01 sec)mysql> use salarydb;
Database changed
mysql> create table class(-> id int primary key auto_increment,-> name varchar(10) not null default '',-> gender char(1) not null default '',-> company varchar(20) not null default '',-> salary decimal(6,2) not null default 0.00-> )engine myisam charset utf8;
Query OK, 0 rows affected, 1 warning (0.04 sec)mysql> show tables;
+--------------------+
| Tables_in_salarydb |
+--------------------+
| class |
+--------------------+
1 row in set (0.00 sec)mysql> desc class;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | | |
| gender | char(1) | NO | | | |
| company | varchar(20) | NO | | | |
| salary | decimal(6,2) | NO | | 0.00 | |
+---------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
执行结果:
此处建立了一个表,但是不要困惑于建表语句里面的数据类型等,后续会详细讲解。
表创建完成之后要设置一下 数据库的字符集,因为我们要使用到中文:
set names gbk;
2、insert 增加数据
MySQL 通过 INSERT INTO SQL语句来插入数据,其语法为:
# 插入一行
insert into tablename (field1, field2, ..., fieldN)values(value1, value2, ..., valueN);# 插入多行
insert into tablename (field1, field2, ..., fieldN)values(value1, value2, ..., valueN),(value1, value2, ..., valueN),...(value1, value2, ..., valueN);
如果数据是字符型,必须使用单引号或者双引号,如:“张三”。
2.1 添加所有列的数据
下面向该表中添加几条数据:
mysql> insert into class (id,name,gender,company,salary)-> values (1,'张三','男','网易',9367.84);
一定要记住每个数据段或者字段后面加个空格,比如上面指令第一行最后要加上一个空格。
另外如果我们要添加所有列的数据可以使用如下语法:
insert into tablename VALUES(value1, value2, ..., valueN);
例如:
mysql> insert into class-> values (2,'李四','男','百度',8987.63);
执行结果:
2.2 添加部分列
有时候我们不需要添加所有列的数据,比如 司徒小翠 在一个保密机构工作,其公司名称和薪水都不能透露,我们可以使用如下语句插入数据:
mysql> insert into class (name,gender)-> values ('司徒小翠','女');
执行结果:
本条记录省略了 id、company和salary 字段,因为id 设置为了自增,所以为3,company 与 salary 都设置了默认值,由于插入时没有指定值,所以就使用了默认值。
2.3 一次插入多条数据
为了省事,我们可以一次性插入多条数据:
mysql> insert into class (name,gender,company,salary)-> values-> ('石中玉','男','腾讯',7878.32),-> ('石中坚','男','腾讯',8234.17);
执行结果:
3、delete 删除记录
要从表中删除数据,请使用MySQL delete
语句。下面说明了delete
语句的语法:
delete from table_name
where condition;
此处的删除是指删除表中的一条记录,也就是一行数据。
现在把 张三 的记录删掉,为什么呢?因为他的工资最高。
mysql> delete from class-> where salary>9000;
此语句以薪水作为条件,下面以 姓名 作为筛选条件删除 李四 的记录:
mysql> delete from class-> where name='李四';
执行结果:
当然,where 后面的条件可以叠加,例如:
mysql> delete from class-> where salary>9000 and gender='男';
如果你看了上一节的教程,应该记住了这条语句:
delete * from tablename;
它实现的功能是删除表中的所有记录。
4、update 更新记录
我们使用update
语句来更新表中的现有数据。也可以使用update
语句来更改表中单个行,一组行或所有行的列值,其语法如下:
update table_name set column_name1 = expr1,column_name2 = expr2,...
wherecondition;
在上面update
语句中:
- 首先,在
update
关键字后面指定要更新数据的表名。 - 其次,
set
子句指定要修改的列和新值。要更新多个列,请使用以逗号分隔的列表。以字面值,表达式或子查询的形式在每列的赋值中来提供要设置的值。 - 第三,使用
where
子句中的条件指定要更新的行。where
子句是可选的。 如果省略where
子句,则update
语句将更新表中的所有行。
石中玉 在腾讯工作了一年后跳槽到了 阿里巴巴,其工资也涨到了 9999.99,使用以下语句更新该条记录:
mysql> update class set-> company='阿里',-> salary=9999.99-> where name='石中玉';
执行结果:
注:一定要填写 where 后面的 condition,否则整个表的该列都会被修改。
5、select 查询记录
使用select
语句从表或视图获取数据。表由行和列组成,我们往往只想看到子集行,列的子集或两者的组合。select
语句的结果称为结果集,它是行列表,每行由相同数量的列组成。
select
语句控制要查看哪些行和列,其基本语法为:
select column_name1, column_name2, ...
fromtablename
whereconditions
5.1 查询所有行所有列
和 delete * from tablename;
中的 ***** 一样,select
也可以和其结合:
mysql> select * from class;
执行结果:
5.2 查询指定行的所有列
mysql> select * from class-> where id>3;
执行结果:
5.3 查询所有行的指定列
mysql> select id,name,salary from class;
执行结果:
5.4 查询指定行的指定列
mysql> select id,name,salary from class-> where id>3;
执行结果:
至此数据库的增删改查的基本语法都已介绍了,当然增删改查还有高级的用法,以后有机会讲到。
最后再次强调:一定要记住每个数据段或者字段后面加个空格,尤其是多行语句时每行末尾不要丢掉空格。