根据一个大佬写得非常详细的SQL语法入门所练习,强烈推荐,链接如下:
跳转原文处
--此表根据后面内容所补,供练习使用是没有问题的。
CREATE TABLE friend(
fid INT NOT NULL,
NAME VARCHAR(10) NOT NULL,
age INT NOT NULL,
adress VARCHAR(10)
);
INSERT INTO friend VALUES(1,'Jack',19,'Beijing'),
(2,'Lihua',20,'Wuhan'),
(3,'Xiao',21,'Wuhan'),
(4,'Wangdong',18,'Shanghai'),
(5,'MiaoMiao',18,'Wuhan'),
(6,'Yenuoyi',20,'Beijing'),
(7,'Zhangsan',21,'Wuhan'),
(8,'Lisi',22,'Wuhan');
SELECT * FROM friend;
--VIEW
SELECT * FROM friend;
CREATE VIEW f_view AS SELECT fid FROM friend WHERE fid =1;
CREATE OR REPLACE VIEW f_view AS SELECT * FROM friend WHERE fid<3;
SELECT * FROM f_view;
DROP VIEW f_view;
--FUNCTION
SELECT * FROM friend;
SELECT AVG(age) FROM friend;
SELECT * FROM friend WHERE age<(SELECT AVG(age)FROM friend);
--COUNT
SELECT * FROM friend;
SELECT COUNT(DISTINCT age) FROM friend;
SELECT COUNT(*) FROM friend;
SELECT COUNT(fid) FROM friend;
--MAX AND MIN note:null_is_include
SELECT * FROM friend;
SELECT MAX(fid)FROM friend;
SELECT MAX(age) FROM friend;
SELECT MAX(NAME) FROM friend;
--SUM
SELECT * FROM friend;
SELECT SUM(age) FROM friend;
SELECT SUM(fid) FROM friend;
--GROUP BY
SELECT * FROM friend;
SELECT fid, COUNT(age)
FROM friend
WHERE age<22
GROUP BY fid;
SELECT fid,COUNT(age)
FROM friend
WHERE age=18
GROUP BY fid;
--HAVING
SELECT * FROM friend;
SELECT fid,COUNT(age)
FROM friend
WHERE age = 18
GROUP BY fid
HAVING COUNT(age);
--UCASE/UPPER AND LCASE/LOWER
SELECT * FROM friend;
SELECT UPPER(NAME) FROM friend;
SELECT UPPER(adress),fid FROM friend;
SELECT UCASE(adress) FROM friend;
SELECT fid,UPPER(NAME),age, LOWER(adress) FROM friend;
--len/LENGTH
SELECT * FROM friend;
SELECT len(NAME) FROM friend;/FALSE
SELECT LENGTH(NAME) FROM friend;
SELECT LENGTH(NAME),fid FROM friend;
SELECT NAME,LENGTH(NAME) FROM friend;
SELECT LENGTH(NAME),NAME FROM friend;
--ROUND
SELECT * FROM friend;
SELECT ROUND(age,2) FROM friend;
SELECT ROUND(NAME,2) FROM friend;
ALTER TABLE friend ADD COLUMN number VARCHAR(50) DEFAULT NULL;
UPDATE `rock_sql`.`friend` SET `number` = '3.1415' WHERE `fid` = '1' L;
UPDATE friend SET `number` = 30.1415 WHERE fid = 2;
UPDATE friend SET `number` = 300.1415 WHERE fid = 3;
UPDATE friend SET `number` = 3000.1415 WHERE fid = 4;
UPDATE friend SET `number` = 3000.1415 WHERE fid = 5;
UPDATE friend SET `number` = 345.1415 WHERE fid = 6;
UPDATE friend SET `number` = 344.1415 WHERE fid = 7;
UPDATE friend SET `number` = 333.1415 WHERE fid = 8;
SELECT ROUND(number,2) FROM friend;
SELECT ROUND(number,3) FROM friend;
SELECT ROUND(number,11) FROM friend;
CREATE TABLE Persons
(
Id_P INT,
LastName VARCHAR(255),
FirstName VARCHAR(255),
Address VARCHAR(255),
City VARCHAR(255)
);
-- INSERT – 插入数据
INSERT INTO 表名称 VALUES (值1, 值2,....);
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);
-- SELECT – 查询数据 星号(*)是选取所有列的快捷方式
SELECT * FROM 表名称;
SELECT 列名称 FROM 表名称;
-- DISTINCT – 去除重复值
SELECT DISTINCT 列名称 FROM 表名称;
-- WHERE – 条件过滤
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值;
-- AND & OR – 运算符
SELECT * FROM 表名称 WHERE 列 运算符 值 AND 列 运算符 值;
/*ORDER BY – 排序
空值(NULL)默认排序在有值行之后
默认排序为 ASC 升序,DESC 代表降序。
*/
SELECT * FROM 表名称 ORDER BY 列1,列2 DESC;
-- UPDATE – 更新数据
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;
-- DELETE – 删除数据
-- 可以在不删除表的情况下删除所有的行。
-- 这意味着表的结构、属性和索引都是完整的:
DELETE FROM 表名称 WHERE 列名称 = 值;
-- TRUNCATE TABLE – 清除表数据
TRUNCATE TABLE 表名称;
-- LIKE – 查找类似值
/*
值处
'N%' “N” 开头
'%N' “N” 结尾
'%N%' “N” 中间
*/
SELECT 列名/(*) FROM 表名称 WHERE 列名称 LIKE 值;
-- IN – 锁定多个值
SELECT 列名/(*) FROM 表名称 WHERE 列名称 IN (值1,值2,值3);
-- BETWEEN – 选取区间数据
/*
操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。
这些值可以是数值、文本或者日期。
*/
SELECT 列名/(*) FROM 表名称 WHERE 列名称 BETWEEN 值1 AND 值2;
-- AS – 别名
SELECT 列名称/(*) FROM 表名称 AS 别名;
SELECT 列名称 AS 别名 FROM 表名称;
-- JOIN – 多表关联
/*
JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
JOIN: 如果表中有至少一个匹配,则返回行
INNER JOIN: 内部连接,返回两表中匹配的行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
*/
SELECT 列名
FROM 表A
INNER|LEFT|RIGHT|FULL JOIN 表B
ON 表A主键列 = 表B外键列;
-- UNION – 合并结果集
-- UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
SELECT 列名 FROM 表A
UNION
SELECT 列名 FROM 表B;
SELECT 列名 FROM 表A
UNION
SELECT 列名 FROM 表B;
-- NOT NULL – 非空
CREATE TABLE 表
(
列 INT NOT NULL
);
-- VIEW – 视图
CREATE VIEW 视图名 AS
SELECT 列名
FROM 表名
WHERE 查询条件;
/*如果需要更新视图中的列或者其他信息,
无需删除,使用 CREATE OR REPLACE VIEW 选项:*/
CREATE OR REPLACE VIEW 视图名 AS
SELECT 列名
FROM 表名
WHERE 查询条件;
-- 常用函数学习 NULL 值不包括在计算中
SELECT FUNCTION(列) FROM 表;
AVG(列名)
COUNT(列名)
COUNT(*)
COUNT(DISTINCT 列名)
MAX(列名)
MIN(列名)
SUM(列名)
-- GROUP BY – 分组
SELECT 列名A, 统计函数(列名B)
FROM 表名
WHERE 查询条件
GROUP BY 列名A;
-- HAVING – 句尾连接
SELECT 列名A, 统计函数(列名B)
FROM table_name
WHERE 查询条件
GROUP BY 列名A
HAVING 统计函数(列名B) 查询条件;
-- UCASE/UPPER – 大写
-- LCASE/LOWER – 小写
SELECT UPPER(列名) FROM 表名;
-- LEN/LENGTH – 获取长度
SELECT LENGTH(列名) FROM 表名;
-- ROUND – 数值取舍
SELECT ROUND(列名,精度) FROM 表名;