MySQL的数据操作语句包括增删改查四种,insert,delete,update,select,其中select最为重要也最为复杂。MySQL对关键字不区分大小写,一个词用大写或小写都行。
1. insert
语法格式
CREATE TABLE IF NOT EXISTS tasks (
task_id INT(11) AUTO_INCREMENT,
subject VARCHAR(45) DEFAULT NULL,
start_date DATE DEFAULT NULL,
end_date DATE DEFAULT NULL,
description VARCHAR(200) DEFAULT NULL,
PRIMARY KEY (task_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入单行
INSERT INTO tasks(subject,start_date,end_date,description) VALUES('Learn MySQL INSERT','2018-08-02','2018-08-03','Start learning..');
插入多行
insert into tasks(subject,start_date,end_date,description)
VALUES('hadoop','2018-07-02','2018-07-22','difficult'),
('hdfs','2018-07-02','2018-07-22','difficult'),
('mapreduce','2018-07-02','2018-07-22','difficult');
不必为自动递增列(例如taskid列)指定值,因为MySQL会自动为自动递增列生成值。
具有SELECT子句的MySQL INSERT
CREATE TABLE tasks_bak LIKE tasks;
INSERT INTO tasks_bak SELECT * FROM tasks;
2.update
UPDATE语句来更新表中的现有数据。也可以使用UPDATE语句来更改表中单个行,一组行或所有行的列值。
UPDATE [LOW_PRIORITY] [IGNORE] table_name
SET
column_name1 = expr1,
column_name2 = expr2,
...
WHERE
condition;
更新单列,将名叫LISA的人的最后更新时间改为现在
update actor set last_update='2018-08-02 15:06:06' where first_name='LISA';
更新多列,将id号为7的人改名叫LANNISTER,时间改为现在
update actor set first_name='LANNISTER',last_update='2018-08-02 15:13:13' where actor_id='7';
可以使用SELECT语句查询来自其他表的数据来提供给SET子句的值
3.delete
要删除表中的所有行,而不需要知道删除了多少行,那么应该使用TRUNCATE TABLE语句来获得更好的执行性能。
DELETE FROM table_name
WHERE condition;
删除某一行
delete from tasks where subject='hadoop';
删除表中全部行
delete from tasks;
排序后删除前十行,一次顺序删除多行一定要和order by连用
delete from actor order by actor_id limit 10;
4.select
select查询语句
SELECT语句由以下列表中所述的几个子句组成:
SELECT之后是逗号分隔列或星号(*)的列表,表示要返回所有列。
FROM指定要查询数据的表或视图。
JOIN根据某些连接条件从其他表中获取数据。
WHERE过滤结果集中的行。
GROUP BY将一组行组合成小分组,并对每个小分组应用聚合函数。
HAVING过滤器基于GROUP BY子句定义的小分组。
ORDER BY指定用于排序的列的列表。
LIMIT限制返回行的数量。
语句中的SELECT和FROM语句是必须的,其他部分是可选的。
SELECT
column_1, column_2, ...
FROM
table_1
[INNER | LEFT |RIGHT] JOIN table_2 ON conditions
WHERE
conditions
GROUP BY column_1
HAVING group_conditions
ORDER BY column_1
LIMIT offset, length;
select actor_id,first_name,last_name from actor where last_name='MARY' or actor_id='180';
select actor_id,first_name,last_name from actor where actor_id>100;
下表列出了可用于在WHERE子句中形成过滤表达式的比较运算符。
操作符 描述
= 等于,几乎任何数据类型都可以使用它。
<> 或 != 不等于
< 小于,通常使用数字和日期/时间数据类型。
> 大于,
<= 小于或等于
>= 大于或等于
还有一些有用的运算符可以在WHERE子句中使用来形成复杂的条件,例如:
BETWEEN选择在给定范围值内的值。
LIKE匹配基于模式匹配的值。
IN指定值是否匹配列表中的任何值。
IS NULL检查该值是否为NULL。