一、SQL 是用于访问和处理数据库的标准的计算机语言。
数据库的基本操作就是增删改查。
1. 一个数据库通常包含一个或多个表。
每个表有一个名字标识(例如:"students"),
表是相关的数据项的集合,它由列和行组成。
2. 首先我们要找一个可以在线编程的地方,入门的话我们就不需要那么麻烦,亲自配置编程环境了。
在百度搜索:在线SQL,找到:在线SQL—廖雪峰的官方网站,打开这个网页。
网页中间的输入框就是输入代码的地方,点击下面的run按钮,就会在下方输出结果。
二、创建删除数据库
1. 我们先把输入框中的全部代码删除,清空。
2. 输入:不要忘忘了后面的冒号。
使用show databases;意思是查看数据库,可以得到当前服务器中的所有数据库。
show databases;
3. -- 以双减号开头的是注释
show databases;
--查看 数据库
4. 点击run按钮,查看下方结果,显示有三个数据库。
5. 使用CREATE DATABASE命令创建一个名叫a的数据库。
CREATE DATABASE a;
CREATE DATABASE a;
--创建 数据库 数据库名;
6. 再使用show databases;查看一下数据库。
在运行代码前删除或注释掉前面的代码。
show databases;
7. 点击run按钮,查看下方结果,多了一个名叫a的数据库。
8. 数据库主要是对表操作,选择数据库后可以省掉每次指定数据库的麻烦。
use a
use a
--使用 a数据库
9. 使用drop database a; 删除名叫a的数据库。
drop database a;
drop database a;
--删除 数据库 数据库名;
10. 再使用show databases;查看一下数据库。
点击run按钮,查看下方结果,名叫a的数据库被删除了。
drop database a;
show databases;
三 、查询数据
1. 在线SQL 自带了两表,一个students表和一个classes表
2. 我们现在要查询students表的所有行,我们用如下SQL语句:
SELECT * FROM students;
SELECT是关键字,表示将要执行一个查询,*表示“所有列”,FROM表示将要从哪个表查询,本例中是students表。
SELECT * FROM students;
--选择 所有行 从 学生表
3. 点击run按钮,查看下方结果,显示studends表的所有行。
四、条件查询,where 子句用于提取那些满足指定条件的记录。
1. 只查询 分数大于等于80的学生。
WHERE关键字后面的score >= 80就是条件。score是分数,该列存储了学生的成绩,
SELECT * FROM students WHERE score >= 80;
SELECT * FROM students WHERE score >= 80;
--选择 所有行 从 学生表 找到 分数例 大于等于 80的数据
点击run按钮,查看下方结果,只显示分数大于等于80的学生的数据。
2. 要同时满足两个条件。
查询 分数大于等于80的 男生
要同时满足 <条件1> AND <条件2>
条件要同时满足 <分数大于等于80> 和 <男生>,
WHERE条件: score >= 80 AND gender = 'M',
gender列存储的是字符串,M需要用单引号括起来。
M是男学生,F是发学生。AND可以理解为并且。
SELECT * FROM students WHERE score >= 80 AND gender = 'M';
SELECT * FROM students WHERE score >= 80 AND gender = 'M';
--选择 所有行 从 学生表 找到 分数例 大于等于 80 并且 性别 男的数据
点击run按钮,查看下方结果,只显示分数大于等于80的男学生的数据。
4. 满足任意之一的条件即可。
查询 分数大于等于80的 或 者是男生的 数据。
<条件1> OR <条件2>
“分数在80分及以上” 或者 “男生”
score >= 80 OR gender = 'M'
SELECT * FROM students WHERE score >= 80 OR gender = 'M';
SELECT * FROM students WHERE score >= 80 OR gender = 'M';
--选择 所有行 从 学生表 找到 分数例 大于等于 80 或者 性别 男的数据
点击run按钮,查看下方结果,只显示分数在 “80及以上” 或者 “男生”,
5.只查询“不符合该条件”的数据。
只查询 class_id不是2的 数据。
NOT <条件>,
不是 二班的
NOT class_id = 2:
SELECT * FROM students WHERE NOT class_id = 2;
SELECT * FROM students WHERE NOT class_id = 2;
--选择 所有行 从 学生表 找到 不是 班级 为 2的数据;
点击run按钮,查看下方结果,只显示班级不为 二的的数据,
五、投影查询,只查询指定列的数据,而不是所有列的数据。
1. 只查询name列
SELECT name FROM students;
SELECT name FROM students;
--选择 name列 从 学生表
结果只显示了name列
2. 同时使用投影查询和条件查询
查询id列、score列中的女生。
SELECT id,score FROM students WHERE gender="F";
--选择 id,score列 从 学生表 找到 性别 女
3. 改变列名和顺序。
把score列的列名改为points,把score列的顺序放到name列的左边。
SELECT id, score points, name FROM students;
SELECT id, score points, name FROM students;
--选择 id, score points, name 从 学生表
六、排序,通常我们是根据主键排序的,但是也可以根据其他条件排序。
1. 按照成绩从低到高进行排序
加上ORDER BY子句就可以,ORDER BY的意思是:顺序按照
SELECT id, name, gender, score FROM students ORDER BY score;
SELECT id, name, gender, score FROM students ORDER BY score;
--选择 id列 name列 gender列 score列 从 学生表 顺序 按照 分数
2. 如果要反过来,按照成绩从高到底排序,我们可以在最后面加上 DESC 表示“倒序”:
SELECT id, name, gender, score FROM students ORDER BY score DESC;
SELECT id, name, gender, score FROM students ORDER BY score DESC;
--选择 id列 name列 gender列 score列 从 学生表 顺序 按照 分数 倒序;
3. 同时按score, gender排序
如果score列有相同的数据,要进一步排序,可以继续添加列名。
ORDER BY score DESC, gender表示先按score列倒序,如果有相同分数的,再按gender列排序
SELECT id, name, gender, score FROM students ORDER BY score DESC, gender;
SELECT id, name, class_id, score FROM students ORDER BY score DESC, gender;
--选择 id列 name列 class_id列 score列 从 学生表 顺序 按照 分数 倒序, 性别;
七、
1. 查询前3行,LIMIT 3 OFFSET 0意思是从0号记录开始,最多取3条。
SELECT * FROM students LIMIT 3 OFFSET 0;
SELECT * FROM students LIMIT 3 OFFSET 0;
--选择 所有行 从 学生表 限制 3 从 0;
2. 聚合查询,统计一张表的数据量
查询students表一共有多少条记录,count是数量的意思,(*)是全部的意思。
SELECT COUNT(*) FROM students;
SELECT COUNT(*) FROM students;
--选择 数量所有 从 学生表
结果是10条。
3. 查询gender列M的数量,并且把列名命名为boys
SELECT COUNT(*) boys FROM students WHERE gender = 'M';
SELECT COUNT(*) boys FROM students WHERE gender = 'M';
--选择 数量所有 男孩 从 学生表 找到 性别 男
4. 同时查询students表和classes表
SELECT * FROM students, classes;
SELECT * FROM students, classes;
--选择 所有 从 学生表 , 班级表;
八、修改数据
1. 插入数据,在students表中插入class_id为2,name为‘大牛’,gender为'M',score为80,的一条新数据。
INSERT INTO students (class_id, name, gender, score) VALUES (2, '大牛', 'M', 80);
-- 查询并观察结果:
SELECT * FROM students;
INSERT INTO students (class_id, name, gender, score) VALUES (2, '大牛', 'M', 80);
--插 入 学生表 (class_id, name, gender, score) 值为 (2, '大牛', 'M', 80);
SELECT * FROM students;
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);
2. 一次性添加多条新记录
INSERT INTO students (class_id, name, gender, score) VALUES
(1, '大宝', 'M', 87),
(2, '二宝', 'M', 81);
SELECT * FROM students;
3. 新数据库表中的记录,使用UPDATE语句。
将 id为1的这条数据的name改为'大牛',score改为66.
UPDATE students SET name='大牛', score=66 WHERE id=1;
-- 查询并观察结果:
SELECT * FROM students WHERE id=1;
UPDATE students SET name='大牛', score=66 WHERE id=1;
--更新 学生表 设置 name='大牛', score=66 找到 id=1;
SELECT * FROM students WHERE id=1;
UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;
4. 删除数据库表中的记录,我们可以使用DELETE语句。
删除students表中id=1的这一条数据。
DELETE FROM students WHERE id=1;
-- 查询并观察结果:
SELECT * FROM students;
九、创建数据表
1. 创建一个名叫a的数据表。
CREATE TABLE a;
2. 查看创建表a。
SHOW CREATE TABLE a;
3. 给a表新增一列,列名叫做id。
ALTER TABLE a ADD COLUMN id VARCHAR(10) NOT NULL;
4. 在a表中为id例插入值为3的一条新数据。
INSERT INTO a (id) VALUES ("ABC");
5. 查询a表。
SELECT * FROM a;
6.在a表中删除id列。
ALTER TABLE a DROP COLUMN id;