想要对表进行增删改查,首先应该有张表,假设我们要统计大学同学工作之后的工作情况,建立了如下表格:
姓名 | 性别 | 公司 | 工资 |
---|---|---|---|
准备工作:
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;
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);
如果数据是字符型,必须使用单引号或者双引号,如:“张三”。
下面向该表中添加几条数据:
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);
执行结果:
有时候我们不需要添加所有列的数据,比如 司徒小翠 在一个保密机构工作,其公司名称和薪水都不能透露,我们可以使用如下语句插入数据:
mysql> insert into class (name,gender)
-> values ('司徒小翠','女');
执行结果:
本条记录省略了 id、company和salary 字段,因为id 设置为了自增,所以为3,company 与 salary 都设置了默认值,由于插入时没有指定值,所以就使用了默认值。
为了省事,我们可以一次性插入多条数据:
mysql> insert into class (name,gender,company,salary)
-> values
-> ('石中玉','男','腾讯',7878.32),
-> ('石中坚','男','腾讯',8234.17);
执行结果:
要从表中删除数据,请使用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;
它实现的功能是删除表中的所有记录。
我们使用update
语句来更新表中的现有数据。也可以使用update
语句来更改表中单个行,一组行或所有行的列值,其语法如下:
update table_name set
column_name1 = expr1,
column_name2 = expr2,
...
where
condition;
在上面update
语句中:
update
关键字后面指定要更新数据的表名。set
子句指定要修改的列和新值。要更新多个列,请使用以逗号分隔的列表。以字面值,表达式或子查询的形式在每列的赋值中来提供要设置的值。where
子句中的条件指定要更新的行。where
子句是可选的。 如果省略where
子句,则update
语句将更新表中的所有行。石中玉 在腾讯工作了一年后跳槽到了 阿里巴巴,其工资也涨到了 9999.99,使用以下语句更新该条记录:
mysql> update class set
-> company='阿里',
-> salary=9999.99
-> where name='石中玉';
执行结果:
注:一定要填写 where 后面的 condition,否则整个表的该列都会被修改。
使用select
语句从表或视图获取数据。表由行和列组成,我们往往只想看到子集行,列的子集或两者的组合。select
语句的结果称为结果集,它是行列表,每行由相同数量的列组成。
select
语句控制要查看哪些行和列,其基本语法为:
select
column_name1, column_name2, ...
from
tablename
where
conditions
和 delete * from tablename;
中的 ***** 一样,select
也可以和其结合:
mysql> select * from class;
执行结果:
mysql> select * from class
-> where id>3;
执行结果:
mysql> select id,name,salary from class;
执行结果:
mysql> select id,name,salary from class
-> where id>3;
执行结果:
至此数据库的增删改查的基本语法都已介绍了,当然增删改查还有高级的用法,以后有机会讲到。
最后再次强调:一定要记住每个数据段或者字段后面加个空格,尤其是多行语句时每行末尾不要丢掉空格。