N分钟看懂SQL基础语法

19次阅读

共计 1796 个字符,预计需要花费 5 分钟才能阅读完成。

网站 Y 分钟学会 X 语言上展示了多种语言的基础语法,其他很多语言都有中文版本了,但 SQL 没有。于是我简单翻译一下。

-- 注释以 -- 开始
-- 每条命令以; 结束

-- SQL 并不区分关键字的大小写. 为了更容易把关键字与数据库、表、字段名区分,
-- 示例里采用了关键字大写的惯例

-- 创建与删除数据库. 数据库名与表名区分大小写
CREATE DATABASE someDatabase;
DROP DATABASE someDatabase;

-- 列出所有可用的数据库
SHOW DATABASES;

-- 使用某个存在的数据库 
USE employees;

-- 从当前数据库的 departments 表查出所有的记录,每条记录包含了所有的字段,
-- 输出默认会在屏幕上滚动展示.
SELECT * FROM departments;

-- 从 departments 表查出所有的记录,但只查询 dept_no、dept_name 字段.
-- 可以跨行拆分命令.
SELECT dept_no,
       dept_name FROM departments;

-- 从 departments 表查出包含所有的字段的记录,但只取 5 行
SELECT * FROM departments LIMIT 5;

-- 从 departments 表查出值里包含了 'en' 的 dept_name 字段
SELECT dept_name FROM departments WHERE dept_name LIKE '%en%';

-- 从 departments 表查出以 S 开头、后续长度为 4 作为 dept_name 字段值的记录
SELECT * FROM departments WHERE dept_name LIKE 'S____';

-- 从 titles 表查出 title 字段去重后都有哪些值
SELECT DISTINCT title FROM titles;

-- 同上,但是对 title 字段的值进行排序(区分大小写).
SELECT DISTINCT title FROM titles ORDER BY title;

-- 统计 departments 表里有多少条记录.
SELECT COUNT(*) FROM departments;

-- 统计 departments 表里有多少条记录的 ept_name 字段值里包含了 en
SELECT COUNT(*) FROM departments WHERE dept_name LIKE '%en%';

-- 从 tiltes 表里查出某个 job 的 title、开始日期与结束日期 (只查询 10 条记录).
-- 根据 job 所属的 employee 编号从 employee 表里关联出所属 employee 的 first_name、last_name.
SELECT employees.first_name, employees.last_name,
       titles.title, titles.from_date, titles.to_date
FROM titles INNER JOIN employees ON
       employees.emp_no = titles.emp_no LIMIT 10;
       
-- 列出所有数据库里的所有表.
-- 各数据库通常会对此提供特有的快捷命令.
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE';

-- 在当前使用的数据库里,创建一张名为 tablename1 的表.
-- 除了语句里的两个字段使用到的数据类型,还有很多其他的可选项可以用来定义字段.
CREATE TABLE tablename1 (fname VARCHAR(20), lname VARCHAR(20));

-- 向 tablename1 中插入一行数据,
-- 这条语句假设插入的值顺序与列字段顺序一致.
INSERT INTO tablename1 VALUES('Richard','Mutt');

-- 找出 tablename1 表里 lname 字段的值为 Mutt 的记录,将 fname 字段的值更新为 John.
UPDATE tablename1 SET fname='John' WHERE lname='Mutt';

-- 找出 tablename1 里 lname 字段值以 M 开头的记录删除
DELETE FROM tablename1 WHERE lname like 'M%';

-- 从 tablename1 表里删除所有数据
DELETE FROM tablename1;

-- 删除 tablename1 整表
DROP TABLE tablename1;

正文完
 0