数据库语句学习
摘要:文章主要内容是数据库语句的基本操作,以及一些基本的数据库标准库函数
重点:SQL语句对大小写不敏感
数据库操作语句
- SELECT - 从数据库表中获取数据
- UPDATE - 更新数据库表中的数据
- DELETE - 从数据库表中删除数据
- INSERT INTO - 向数据库表中插入数据
字句与附加内容
SELECT list1,list2 FROM table;//输出某几个表
SELECT * FROM table;//输出表中全部内容
SELECT DISTINCT list1 FROM table;//输出列中内容,但每个值只出现一次
SELECT * FROM table WHERE id=2;//查找id为2的那一行,注意等号为单个,并且如果查找内容非数值,需要加单引号eg:WHERE name='alice'
SELECT * FROM table WHERE id=2 AND name='alice';//他的意思和你想的一样,同样的用法还有OR
SELECT * FROM table ORDER by id;//查找以后的结果按照id正序输出
INSERT INTO table(list1,list2) VALUES('alice','bob')
UPDATE table SET list1='alice',list2='bob' WHERE id=1;
DELETE FROM table WHERE id=1;
DELETE * FROM table;
数据库定义语句
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
oracle数据库标准库函数(math库)(DML库-操作游标 json)
1. 单行函数
字符函数
CONCAT('Hello', 'World'): 结果为'HelloWorld'。SUBSTR('HelloWorld', 6, 5): 从第6位开始取5个字符,结果为'World'。LENGTH('Hello'): 返回字符串'Hello'的长度,结果为5。TRIM('H' FROM 'HHHelloHH'): 移除字符串两侧的 'H',结果为'Hello'。LOWER('HELLO'): 将字符串转换为小写,结果为'hello'。UPPER('hello'): 将字符串转换为大写,结果为'HELLO'。REPLACE('2024 Happy New Year', '2024', '2025'): 将字符串中的2024替换为2025,结果为'2025 Happy New Year'。
数值函数
ROUND(123.4567, 2): 将123.4567四舍五入到小数点后2位,结果为123.46。TRUNC(123.4567, 2): 将123.4567截断到小数点后2位,结果为123.45。ABS(-123.45): 返回-123.45的绝对值,结果为123.45。CEIL(123.45): 返回大于等于123.45的最小整数,结果为124。FLOOR(123.45): 返回小于等于123.45的最大整数,结果为123。
日期函数
SYSDATE: 返回当前系统日期和时间,结果取决于系统时刻。ADD_MONTHS('01-JAN-2024', 1): 在日期01-JAN-2024上加1个月,结果为01-FEB-2024。LAST_DAY('15-JAN-2024'): 返回JAN-2024的最后一天,结果为31-JAN-2024。MONTHS_BETWEEN('01-JAN-2024', '01-MAR-2024'): 计算从01-MAR-2024到01-JAN-2024之间的月份差异,结果为-2。NEXT_DAY('01-JAN-2024', 'FRIDAY'): 返回01-JAN-2024后的第一个星期五,日期取决于当年日历。
2. 聚合函数(详细)(三个不同)
SUM(column): 计算某列的总和。例如,在收入列上使用,可以计算总收入。AVG(column): 计算某列的平均值。例如,计算所有员工的平均薪资。MAX(column): 找出某列的最大值。例如,找出最高的订单金额。MIN(column): 找出某列的最小值。例如,找出最低的库存量。COUNT(column): 计算某列的非空值数量。例如,计算有多少员工有邮箱地址。
3. 转换函数
TO_CHAR(SYSDATE, 'YYYY-MM-DD'): 将当前日期转换为'YYYY-MM-DD'格式的字符串。TO_NUMBER('123.45', '999.99'): 将字符串'123.45'转换为数字。TO_DATE('01-JAN-2024', 'DD-MON-YYYY'): 将字符串'01-JAN-2024'转换为日期类型。
4. 分析函数
ROW_NUMBER() OVER (ORDER BY salary DESC): 对所有员工按薪资降序排列,并给每个员工分配一个唯一的行号。RANK() OVER (ORDER BY score DESC): 在成绩表中,对学生的分数进行排名,相同分数的学生排名相同。DENSE_RANK() OVER (ORDER BY score DESC): 类似RANK,但排名将连续不留空。
5. 空值处理函数(详细)
NVL(NULL, 'default'): 如果第一个表达式是NULL,返回'default'。COALESCE(NULL, NULL, 'first_non_null'): 返回参数列表中的第一个非空表达式,结果为'first_non_null'。NULLIF('A', 'B'): 如果两个表达式不相等,返回第一个表达式,结果为'A';如果相等,则返回NULL。
MySQL数据库函数
1. 字符串函数
CONCAT(str1, str2, ...): 连接两个或多个字符串。例如:CONCAT('Hello', ' ', 'World')返回'Hello World'。LENGTH(str): 返回字符串的长度。例如:LENGTH('Hello')返回5。LOWER(str): 将字符串转换为小写。例如:LOWER('HELLO')返回'hello'。UPPER(str): 将字符串转换为大写。例如:UPPER('hello')返回'HELLO'。REPLACE(str, from_str, to_str): 在字符串中替换子串。例如:REPLACE('Hello World', 'World', 'MySQL')返回'Hello MySQL'。SUBSTRING(str, pos, len): 从字符串中提取子串。例如:SUBSTRING('Hello World', 7, 5)返回'World'。TRIM(str): 去除字符串两侧的空格。例如:TRIM(' Hello ')返回'Hello'。
2. 数值函数
ROUND(number, decimals): 对数值进行四舍五入。例如:ROUND(123.4567, 2)返回123.46。FLOOR(number): 返回不大于数值的最大整数。例如:FLOOR(123.45)返回123。CEIL(number): 返回不小于数值的最小整数。例如:CEIL(123.45)返回124。ABS(number): 返回数值的绝对值。例如:ABS(-123)返回123。
3. 日期和时间函数
CURDATE(): 返回当前日期。例如,如果今天是 2024-04-10,则CURDATE()返回2024-04-10。NOW(): 返回当前日期和时间。例如,如果现在是 2024-04-10 12:34:56,则NOW()返回2024-04-10 12:34:56。DATEDIFF(date1, date2): 返回两个日期之间的天数。例如:DATEDIFF('2024-04-10', '2024-04-01')返回9。DATE_ADD(date, INTERVAL expr type): 给定日期加上一个时间间隔。例如:DATE_ADD('2024-01-01', INTERVAL 1 MONTH)返回2024-02-01。
4. 条件表达式
IF(expr1, expr2, expr3): 如果expr1为真,则返回expr2;否则返回expr3。例如:IF(1>0, 'true', 'false')返回'true'。CASE WHEN condition THEN result [WHEN ...] [ELSE result] END: 条件选择语句。例如:CASE WHEN 1>0 THEN 'true' ELSE 'false' END返回'true'。
5. 聚合函数
SUM(column): 计算数值列的总和。例如,在销售表中,SUM(price)可以计算总销售额。AVG(column): 计算数值列的平均值。例如:AVG(price)可以计算平均销售价格。MAX(column): 返回列中的最大值。例如:MAX(price)可以找到最高的销售价格。MIN(column): 返回列中的最小值。例如:MIN(price)可以找到最低的销售价格。COUNT(column): 返回列中非NULL值的数量。例如:COUNT(*)可以计算表中的行数。
6. 其他有用的函数
COALESCE(value1, value2, ...): 返回参数列表中的第一个非NULL值。例如:COALESCE(NULL, NULL, 'first_non_null', NULL)返回'first_non_null'。NULLIF(value1, value2): 如果两个值相等则返回NULL,否则返回第一个值。例如:NULLIF('A', 'B')返回'A';NULLIF('A', 'A')返回NULL。
PostgreSQL数据库函数
1. 字符串函数
CONCAT(str1, str2, ...): 连接两个或多个字符串。例如:CONCAT('Hello', ' ', 'World')返回'Hello World'。LENGTH(str): 返回字符串的长度。例如:LENGTH('Hello')返回5。LOWER(str): 将字符串转换为小写。例如:LOWER('HELLO')返回'hello'。UPPER(str): 将字符串转换为大写。例如:UPPER('hello')返回'HELLO'。REPLACE(str, from_str, to_str): 在字符串中替换子串。例如:REPLACE('Hello World', 'World', 'PostgreSQL')返回'Hello PostgreSQL'。SUBSTRING(str FROM start FOR length): 从字符串中提取子串。例如:SUBSTRING('Hello World' FROM 7 FOR 5)返回'World'。TRIM([LEADING | TRAILING | BOTH] [characters] FROM str): 去除字符串两侧的指定字符。例如:TRIM(' Hello ')返回'Hello'。
2. 数值函数
ROUND(value, precision): 对数值进行四舍五入到指定的小数位数。例如:ROUND(123.4567, 2)返回123.46。FLOOR(value): 返回不大于数值的最大整数。例如:FLOOR(123.45)返回123。CEILING(value): 返回不小于数值的最小整数。例如:CEILING(123.45)返回124。ABS(value): 返回数值的绝对值。例如:ABS(-123)返回123。
3. 日期和时间函数
CURRENT_DATE: 返回当前日期。例如:CURRENT_DATE。CURRENT_TIMESTAMP: 返回当前日期和时间。例如:CURRENT_TIMESTAMP。AGE(timestamp1, timestamp2): 返回两个日期之间的间隔。例如:AGE(TIMESTAMP '2024-04-10', TIMESTAMP '2024-01-01')返回'3 mons 9 days'。DATE_PART('field', timestamp): 提取日期的指定部分。例如:DATE_PART('year', TIMESTAMP '2024-04-10')返回2024。
4. 条件表达式
CASE WHEN condition THEN result [WHEN ...] [ELSE result] END: 条件选择语句。例如:CASE WHEN 1>0 THEN 'true' ELSE 'false' END返回'true'。COALESCE(value1, value2, ...): 返回参数列表中的第一个非NULL值。例如:COALESCE(NULL, NULL, 'first_non_null', NULL)返回'first_non_null'。NULLIF(value1, value2): 如果两个值相等则返回NULL,否则返回第一个值。例如:NULLIF('A', 'B')返回'A';NULLIF('A', 'A')返回NULL。
5. 聚合函数
SUM(column): 计算数值列的总和。例如,SUM(price)可以计算总销售额。AVG(column): 计算数值列的平均值。例如:AVG(price)可以计算平均销售价格。MAX(column): 返回列中的最大值。例如:MAX(price)可以找到最高的销售价格。MIN(column): 返回列中的最小值。例如:MIN(price)可以找到最低的销售价格。COUNT(column): 返回列中非NULL值的数量。例如:COUNT(*)可以计算表中的行数。
6. 数组函数
ARRAY_LENGTH(array, dimension): 返回数组在指定维度的长度。例如:ARRAY_LENGTH(ARRAY[1,2,3,4], 1)返回4。ARRAY_APPEND(array, element): 向数组添加元素。例如:ARRAY_APPEND(ARRAY[1,2,3], 4)返回{1,2,3,4}。
7. 地理空间函数(GIS)
ST_Area(geom): 计算地理对象的面积。例如:ST_Area(ST_GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'))返回1.0。