常用的sql函数------sql学习随手笔记

什么是 SQL?

SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。

  • SQL 指结构化查询语言
  • SQL 使我们有能力访问数据库
  • SQL 是一种 ANSI 的标准计算机语言

SQL 能做什么?

  • SQL 面向数据库执行查询
  • SQL 可从数据库取回数据
  • SQL 可在数据库中插入新的记录
  • SQL 可更新数据库中的数据
  • SQL 可从数据库删除记录
  • SQL 可创建新数据库
  • SQL 可在数据库中创建新表
  • SQL 可在数据库中创建存储过程
  • SQL 可在数据库中创建视图
  • SQL 可以设置表、存储过程和视图的权限

SQL DML 和 DDL

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

SQL 中最重要的 DDL 语句:

  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

sql常用语法

CREATE INDEX 语句用于在表中创建索引。

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

索引

您可以在表中创建索引,以便更加快速高效地查询数据。

用户无法看到索引,它们只能被用来加速搜索/查询。

**注释:**更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

本例会创建一个简单的索引,名为 “PersonIndex”,在 Person 表的 LastName 列:

如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC

CREATE INDEX PersonIndex
ON Person (LastName DESC) 

假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:

CREATE INDEX PersonIndex
ON Person (LastName, FirstName)

ALTER TABLE 语句

ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

如需在表(person)中添加列(history datatype是类型,比如date),请使用下列语法:

ALTER TABLE persons
ADD history datatype

要删除表中的列,请使用下列语法:

ALTER TABLE table_name 
DROP COLUMN column_name

我们希望改变 “Persons” 表中 “Birthday” 列的数据类型。

ALTER TABLE Persons
ALTER COLUMN Birthday year

Microsoft Access 数据类型

在 MySQL 中,有三种主要的类型:文本、数字和日期/时间类型。

Yes/No逻辑字段,可以显示为 Yes/No、True/False 或 On/Off。在代码中,使用常量 True 和 False (等价于 1 和 0)注释:Yes/No 字段中不允许 Null 值

sql中char和varchar的区别:

CHAR(size)保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR(size)保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。

GROUP BY 语句

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

实例:
在这里插入图片描述

我们想要使用 GROUP BY 语句对学生按照“学生姓名”进行组合。

在这里插入图片描述

用sql语句查询出课程总分最高的学生姓名:

思路,

  • 1,计算出各个学生的总分并排序好,
  • 2,查询出最高分的学生
    在这里插入图片描述

用sql语句查询出每门课程都小于70分的学生姓名(是每门课程都小于70分的学生,注意审题)

在这里插入图片描述

DISTINCT 关键字(去重)

个人理解为去除重复。用法:

SELECT DISTINCT 列名称 FROM 表名称

AVG 函数(平均值)

AVG 函数返回数值列的平均值。NULL 值不包括在计算中。

SELECT AVG(column_name) FROM table_name

Count()函数(返回列数)

函数返回指定列的值的数目(NULL不计入):

SELECT COUNT(column_name) FROM table_name

FIRST() 函数( 字段中第一个记录 )

FIRST() 函数返回指定的字段中第一个记录的值。

**提示:**可使用 ORDER BY 语句对记录进行排序。

SELECT FIRST(column_name) FROM table_name

LAST() 函数( 字段中最后一个记录 )

LAST() 函数返回指定的字段中最后一个记录的值。

**提示:**可使用 ORDER BY 语句对记录进行排序。

SELECT LAST(column_name) FROM table_name

MAX() 函数( 一列中的最大值 )

MAX 函数返回一列中的最大值。NULL 值不包括在计算中。

SELECT MAX(column_name) FROM table_name

Min()函数( 一列中的最小值 )

Min函数返回一列中的最小值.空值不包括在计算中

SELECT MIN(column_name) FROM table_name

SUM() 函数( 数值列的总数 )

SUM 函数返回数值列的总数(总额)。

SELECT SUM(column_name) FROM table_name

HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

在这里插入图片描述

UCASE()函数( 把字段的值转换为大写 )

UCASE函数把字段的值转换为大写.

SELECT UCASE(column_name) FROM table_name

LCASE() 函数( 把字段的值转换为小写 )

LCASE 函数把字段的值转换为小写。

SELECT LCASE(column_name) FROM table_name

MID() 函数( 从文本字段中提取字符 )

MID 函数用于从文本字段中提取字符。

SELECT MID(column_name,start[,length]) FROM table_name

Len()函数( 返回文本字段中值的长度 )

Len函数返回文本字段中值的长度.

SELECT LEN(column_name) FROM table_name

ROUND() 函数( 把数值字段舍入为指定的小数位数 )

ROUND 函数用于把数值字段舍入为指定的小数位数。

SELECT ROUND(column_name,decimals) FROM table_name

NOW() 函数( 返回当前的日期和时间 )

NOW 函数返回当前的日期和时间。

提示:如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间

SELECT NOW() FROM table_name

FORMAT() 函数( 对字段的显示进行格式化 )

FORMAT 函数用于对字段的显示进行格式化。

SELECT FORMAT(column_name,format) FROM table_name

每次执行都会出现类似报错

Sql报错:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggreg

解决办法

在Navicat工具里面执行下面语句:

show variables like “sql_model”;
set sql_mode=’’;
set sql_mode=‘no_engine_substitution,strict_trans_tables’;

在这里插å¥å›¾ç‰‡æè¿°

然后再去操作数据库,就没任何问题了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值