表的创建、更新、删除和重命名
#表的创建
CREATE TABLE table_name
(
column_1 int NOT NULL AUTO_INCREMENT,
column_2 char(50) NOT NULL,
column_3 char(5) NOT NULL,
PRIMARY KEY(main_key)
)ENGINE=InnoDB;
注:在插入或更新行时,该列必须要有值;主键必须唯一;AUTO_INCREMENT表示每当增加一列时自动增量;
#表的更新,增加一个列
ALTER TABLE table_name
ADD column_name CHAR(20);
#删除刚刚添加的列
ALTER TABLE table_name
DROP COLUMN column_name;
注:ALTER TABLE 使用要极其小心。提前备份
#表的删除
DROP TABLE table_name;
#表的重命名
RENAME TABLE table_name TO new_table_name
数据的检索、查询、插入、更新、删除
数据检索
#检索单个列
SELECT column_name
FROM table_name;
#检索多个列
SELECT column_1,column_2,column_3
FROM table_name;
#检索所有列
SELECT *
FROM table_name;
#检索不同行
SELECT DISTINCT column_1
FROM table_name;
#限制结果为前5行
SELECT column_name
FROM table_name
LIMIT 5;
#限制结果为从5行开始的5行
SELECT column_name
FROM table_name
LIMIT 5,5;
#完全限定的表名
SELECT table_name.column_name
FROM table_name;
#排序检索数据
SELECT column_name
FROM table_name
ORDER BY column_name;
#按多个列排序,分先后
SELECT column_1,column_2,column_3
FROM table_name
ORDER BY column_1,column_2;
#指定顺序,默认升序,指定DESC为降序
SELECT column_1,column_2,column_3
FROM table_name
ORDER BY column_1 DESC;
过滤数据
#WHERE的运用
SELECT column_1,column_2
FROM table_name
WHERE column_1 ##;
#空值检查
SELECT column_1,column_2
FROM table_name
WHERE column_1 IS NULL;
注:范围值检查使用BETWEEN a AND b的语句;
#IN、AND和WHERE的组合
SELECT column_1,column_2,column_3
FROM table_name
WHERE column_1 = a AND column_2 <= b;
SELECT column_1,column_2,column_3
FROM table_name
WHERE column_1 = a OR column_2 = b;
#IN对范围内的每个条件进行匹配
SELECT column_1,column_2,column_3
FROM table_name
WHERE column_1 IN (a,c)
ORDER BY column_1;
#NOT IN否定条件
SELECT column_1,column_2,column_3
FROM table_name
WHERE column_1 NOT IN (a,c)
ORDER BY column_1;
注:AND优先级大于OR,IN操作符比OR操作符清单执行更加快
#LIKE与通配符
#百分号%通配符,可以放在任何位置
SELECT column_1,column_2
FROM table_name
WHERE column_2 LIKE 'jet%';
#下划线_通配符,只能匹配一个字符
SELECT column_1,column_2
FROM table_name
WHERE column_2 LIKE '_son';
注:正则表达式自行查阅
聚集数据
函数 | 说明 |
---|---|
AVG() | 平均值 |
COUNT() | 行数 |
MAX() | 最大值 |
MIN() | 最小值 |
SUM() | 和 |
分组数据
#创建分组
SELECT column_1,COUNT(*) AS num_column_1
FROM table_name
GROUP BY column_1;
#过滤分组
SELECT column_1,COUNT(*) AS num_column_1
FROM table_name
GROUP BY column_1
HAVING COUNT(*) >=2;
注1:HAVING支持所有WHERE操作符
注2:子查询自行查阅
插入数据
#插入完整的行
INSERT INTO table_name(column_1,column_2,...)
VALUES('','','',...);
#插入多个行
INSERT INTO table_name(column_1,column_2,...)
VALUES('','','',...);
INSERT INTO table_name(column_1,column_2,...)
VALUES('','','',...);
#插入检索出的数据
INSERT INTO table_name(column_1,column_2,...)
SELECT column_1,column_2,...
FROM table_name_1;
更新和删除数据
#更新数据
UPDATE table_name
SET column_1 = 'a'
WHERE column_3 = b;
#更新多个列
SET column_1 = 'a1',
column_2 = 'a2'
WHERE column_3 = b;
#删除某个列
UPDATE table_name
SET column_1 = NULL
WHERE column_3 = b;
#删除某行
DELETE FROM table_name
WHERE column_3 = b;
【英】Ben Forta MySQL Crash Course