SQL语法实践(二)

练习代码

根据一个大佬写得非常详细的SQL语法入门所练习,强烈推荐,链接如下:
跳转原文处

SQL语法实践(二)_第1张图片

--此表根据后面内容所补,供练习使用是没有问题的。
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 BY1,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 列名称 BETWEEN1 AND2;

-- 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 表名;

你可能感兴趣的:(#,数据库技术及应用,sql,数据库)