SQL语句总结

本文详细介绍了数据库操作,涵盖SELECT、INSERT、UPDATE等语句,以及约束、索引等概念。还介绍了MySQL和SQL Server的日期函数,以及SQL函数如AVG、COUNT等的使用,包括分组、过滤等操作,对数据库开发和管理有重要参考价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、SELECT

从数据库中选取数据;

如:SELECT * FROM CLASS 或者 SELECT ID,NAME FROM CLASS(ID和NAME为表CLASS中的属性)。

2、SELECT DISTINCT

一列中可能含有多个重复的值,DISTINCT可以返回唯一的值;

如:SELECT DISTINCT ID,NAME FROM CLASS(ID和NAME为表CLASS中的属性)。

3、WHERE

条件语句,取得满足条件的信息;

如:SELECT * FROM CLASS WHERE ID > 5。

4、AND & OR

逻辑表达符,作用与其他语言相同;

如:SELECT * FROM CLASS WHERE ID > 5 AND NAME="LiMing" 或者 SELECT * FROM CLASS WHERE ID > 5 OR NAME="LiMing"。

5、ORDER BY

排序,默认为升序,如需要使用降序,则添加DESC关键字;

如:SELECT * FROM CLASS ORDER BY ID 或者 SELECT * FROM CLASS ORDER BY ID DESC。

6、INSERT INTO

插入语句,用于向表中插入新数据,共分为两种形式,(1)不指定列名,直接插入新的值;(2)需要指定列名和新的值;

如:INSERT INTO CLASS VALUES ("1","LiMing") 或者 INSERT INTO CLASS (ID,NAME) VALUES ("1","LiMing")。

7、UPDATE

对于表中的数据进行更新操作,需要使用WHERE关键字,否则会对表中所有相关记录进行更新;

如:UPDATE CLASS SET NAME="LIMING" WHERE ID="1"。

8、DELETE

删除语句,用于对于表中的数据进行删除操作,操作时,需要使用WHERE关键字,否则会对相关内容全部进行删除;

如:DELETE FROM CLASS WHERE ID="1"。

9、SELECT TOP

可以规定要返回的记录的数据,还可以使用PERCENT关键字指定返回的记录的百分比;

如:SELECT TOP 5 * FROM CLASS 或者 SELECT TOP 5 PERCENT * FROM CLASS。

10、LIKE

用于在WHERE子句中搜索列中的指定模式;

如:SELECT * FROM CLASS WHERE NAME LIKE "Bai%" 或者 SELECT * FROM CLASS WHERE ID LIKE "%0%"。

11、IN

可以使用IN在WHERE子句中指定多个值;

如:SELECT * FROM CLASS WHERE ID IN ("1","2")。

12、BETWEEN

可以使用BETWEEN在WHERE子句中划定两个值的范围;

如:SELECT * FROM CLASS WHKERE ID BETWEEN 1 AND 20。

13、别名

可以为表名或者列名指定别名;

如:SELECT NAME AS N, ID AS I FROM CLASS。

14、JOIN

JOIN可以把两个或多个表的行进行连接,分为INNER JOIN(在表中存在至少一个匹配时返回行)、LEFT JOIN(即使右表中没有匹配,也会返回左表中的所有行)、RIGHT JOIN(即使左表中没有匹配,也会从右表中返回所有的行)、FULL JOIN(只要其中一个表中存在匹配,则返回行)

(1)、以INNER JOIN为例,其余与其相似;

如:SELECT CLASS.NAME, SCORE.SCORE FROM CLASS INNER JOIN SCORE ON CLASS.ID=SCORE.ID ORDER BY SCORE.ID。

15、UNION

UNION操作符用于合并两个或者多个SELECT的结果;

如:SELECT ID FROM CLASS UNION ALL SELECT ID FROM SCORE。

16、SELECT INTO

从一个表中复制,然后把数据插入到另一个新表中;

如:SELECT * INTO CLASS_1 FROM CLASS。

17、INSERT INTO SELECT

从一个表复制信息然后插入到一个已存在的表中;

如:INSERT INTO SCORE SELECT * FROM CLASS。

18、CREATE DATABASE

用于创建数据库;

如:CREATE DATABASE AAA。

19、CREATE TABLE

用于创建表,需指定列名、数据类型、最大长度;

如:CREATE TABLE CLASS { ID int, NAME varchar(255) };

20、约束

用于约束表中的数据规则,可以在创建表时规定(通过CREATE TABLE),或者表创建之后(通过ALTER TABLE);

约束共包含以下几种:(1)、NOT NULL:指示某列不能存储NULL值;(2)、UNIQUE:保证某列的每行必须有唯一的值;(3)、PRIMARY KEY:主键,一个表只能含有一个主键,并且主键的列不能为NULL;(4)、FOREIGN KEY:外键,一个表中的FOREIGN KEY指向另一个表中的UNIQUE KEY(唯一约束的键);(5)、CHECK:保证列中的值符合指定的条件;(6)、DEFAULT:规定没有给列赋值时的默认值。

比如:

学生表(学号,姓名,性别,班级)

    其中每个学生的学号是唯一的,学号就是一个主键;

课程表(课程编号,课程名,学分)

    其中课程编号是唯一的,课程编号就是一个主键;

成绩表(学号,课程号,成绩)

    成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以,学号和课程号的属性组是一个主键。

21、CREATE INDEX

在表中创建索引,索引是一种特殊的查询表,简单来说,索引就是指向表中数据的指针,例如,如果想要查阅一本书中与某个特定主题相关的所有页面,你会先去查询索引(索引按照字母表顺序列出了所有主题),然后从索引中找到一页或者多页与该主题相关的页面。

索引能够提高SELECT查询和WHERE子句的速度,但是却降低了包含UPDATE语句或INSERT语句的数据输入过程的速度。索引的创建和删除不会对表中的数据产生影响。

CREATE INDEX语句允许对索引命名,指定要创建索引的表以及对哪些表进行索引,还可以指定索引按照升序或者降序排列。

同UNIQUE约束一样,索引可以是唯一的。这种情况下,索引会阻止列中(或者列的组合,其中某些列有索引)出现重复的条目。

索引包含以下几种:

(1)、单列索引——基于单一的字段创建:CREATE INDEX INDEX_NAME ON TABLE_NAME (COLUMN_NAME);

(2)、唯一索引——不允许向表中插入任何重复值:CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME (COLUMN_NAME);

(3)、聚簇索引——在表中两个或更多的列的基础上建立:CREATE INDEX INDEX_NAME ON TABLE_NAME (COLUMN1,COLUMN2);

(4)、隐式索引——由数据库服务器在创建某些对象时自动生成。例如,对于主键约束和唯一约束,数据库服务器就会自动创建索引。

索引可以使用DROP INDEX命令进行删除,但是删除索引时应当小心,数据库的性能可能会因此而降低或提高:DROP INDEX INDEX_NAME。

22、ALTER TABLE

用于在已有的表中添加、删除或修改列;

(1)、添加列:ALTER TABLE TABLE_NAME ADD COLUMN_NAME DATATYPE;

(2)、删除列:ALTER TABLE TABLE_NAME DROP COLUMN COLUMN_NAME;

(3)、改变列的数据类型:ALTER TABLE TABLE_NAME ALTER COLUMN COLUMN_NAME DATATYPE。

23、AUTO INCREMENT

在新纪录插入表时产生一个唯一的数字,MYSQL中是AUTO INCREMENT,SQLSERVER中是INDENTITY;

如:CREATE TABEL A { ID int INDENTITY (1,1) PRIMARY KEY  } (表示从1开始,每次递增1)。

24、视图

https://blog.youkuaiyun.com/eff666/article/details/76389143

25、日期

MySQL Date 函数

下面的表格列出了 MySQL 中最重要的内建日期函数:

函数描述
NOW()返回当前的日期和时间
CURDATE()返回当前的日期
CURTIME()返回当前的时间
DATE()提取日期或日期/时间表达式的日期部分
EXTRACT()返回日期/时间的单独部分
DATE_ADD()向日期添加指定的时间间隔
DATE_SUB()从日期减去指定的时间间隔
DATEDIFF()返回两个日期之间的天数
DATE_FORMAT()用不同的格式显示日期/时间

 


SQL Server Date 函数

下面的表格列出了 SQL Server 中最重要的内建日期函数:

函数描述
GETDATE()返回当前的日期和时间
DATEPART()返回日期/时间的单独部分
DATEADD()在日期中添加或减去指定的时间间隔
DATEDIFF()返回两个日期之间的时间
CONVERT()

用不同的格式显示日期/时间

26、SQL函数

(1)、AVG,返回列的平均值:SELECT AVG (COLUMN_NAME) FROM TABLE_NAME;

(2)、COUNT,返回匹配指定条件的行数:SELECT COUNT (COLUMN_NAME) FROM TABLE_NAME;

(3)、FIRST,返回指定的列中第一个记录的值:SELECT FIRST (COLUMN_NAME) FROM TABLE_NAME;

(4)、LAST,返回指定的列中最后一个记录的值:SELECT LAST (COLUMN_NAME) FROM TABLE_NAME;

(5)、MAX,返回指定的列中的最大值:SELECT MAX (COLUMN_NAME) FROM TABLE_NAME;MIN,最小值;

(6)、SUM,返回数值列的总数:SELECT SUM (COLUMN_NAME) FROM TABLE_NAME;

(7)、GROUP BY,根据指定的规则对于数据进行分组,一般是和聚合函数配合使用:SELECT COLUMN_NAME, AGGREGATE_FUNCTION (COLUMN_NAME) FROM TABLE_NAME WHERE COLUMN_NAME OPERATOR VALUE GROUP BY COLUMN_NAME;

(8)、HAVING,WHERE的作用是在对查询结果进行分组前,将不符合WHERE条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用WHERE条件显示特定的行;HAVING子句的作用是筛选符合条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用HAVING条件显示特定的组,也可以使用多个分组标准进行分组。

HAVING的语法为: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;

(9)、UCASE,将字段的值转为大写:SELECT UCASE (COLUMN_NAME) FROM TABLE_NAME;LCASE:小写;

(10)、MID,从文本字段中提取字符:SELECT MID (COLUMN_NAME, START [, LENGTH]) FROM TABLE_NAME,

其中,COLUMN_NAME代表需提取字符的字段,START是规定开始的位置(起始值为1),LENGTH是要返回的字符数,如果省略则返回剩余文本;

(11)、LEN,返回文本字段中值的长度:SELECT LEN (COLUMN_NAME) FROM TABLE_NAME;

(12)、ROUND,把数值字段舍入为指定的小数位数:SELECT ROUND (COLUMN_NAME, DECIMALS) FROM TABLE_NAME,

其中,DECIMALS是要返回的小数位数;

(13)、FORMAT,用于对字段的显示进行格式化:SELECT FORMAT (COLUMN_NAME, FORMAT) FROM TABLE_NAME,

其中,COLUMN_NAME是要格式化的字段,FORMAT是规定的格式,

FORMAT格式为:SELECT NAME, URL DATE_FORMAT (Now(), '%Y-%m-%d') AS DATE FROM WEBSITES;

(14)、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值