SQL基础语句

本文详细介绍了SQL语句的三大类别:DML(数据操作语句)、DDL(数据定义语句)和DCL(数据控制语句)。分别阐述了各类别中的关键操作,如创建、修改和删除数据库及表,以及如何添加、更新和查询数据。

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

SQL分类

SQL语句主要可以划分为3个类别。

  1. DML(数据操作语句):用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用关键字有 insertupdatedeleteselect等。
  2. DDL(数据定义语句):用于定义了不同的数据段、数据库、表、列、索引等数据库对象。常用关键字有createalterdroptruncate等。
  3. DCL(数据控制语句):用于控制不同数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的关键字有grantrevoke等。

DDL语句

用于定义了不同的数据段、数据库、表、列、索引等数据库对象

创建数据库

创建数据库

CREATE DATABASE dbname;

显示所有数据库

SHOW DATABASES;

选择要操作的数据库

USE dbname;

显示一个数据库的所有表

SHOW TABLES;

删除数据库

DROP DATABASE dbname;

创建表

创建表语句

CREATE TABLE tablename(
    column_name_1 column_type_1 constraints, # column_name是列的名字
    column_name_1 column_type_1 constraints, # column_type是列的数据类型
    ... 
    column_name_1 column_type_1 constraints  # constraints是列的约束条件
);

查看表的定义

DESC tablename;

删除表

DROP TABLE tablename;

修改表

  • 修改表类型
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST|AFTER col_name];

例如将student表的name字段类型由varchar(10)改为varchar(20)

ALTER TABLE student MODIFY name varchar(20);
  • 增加表字段
ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST|AFTER col_name];

例如在student表增加一个sex字段,类型为varchar(2)

ALTER TABLE student ADD column sex varchar(2);
  • 删除表字段
ALTER TABLE tablename DROP [COLUMN] col_name;

例如删除刚刚的sex

ALTER TABLE student DROP COLUMN sex;
  • 字段改名
ALTER TABLE tablename CHANGE [COLUMN] old_name column_definition [FIRST|AFTER col_name];

例如

ALTER TABLE student CHANGE name student_name varchar(20);
  • 修改字段排序顺序

增加一个字段放在最前面

ALTER TABLE student ADD age int(4) FIRST;

增加一个字段放在name前面

ALTER TABLE student ADD age int(4) AFTER name;
  • 更改表名
ALTER TABLE tablename RENAME [TO] new_tablename;

DML语句

用于添加、删除、更新和查询数据库记录,并检查数据完整性。

插入记录

INSERT INTO tablename(field1, field2, ..., fieldn) VALUES(value1, value2, ..., valuen);

也可以一次插入多条记录

INSERT INTO tablename(field1, field2, ..., fieldn) 
VALUES
(record1_value1, record1_value2, ..., record1_valuen),
(record2_value1, record2_value2, ..., record2_valuen),
...
(recordn_value1, recordn_value2, ..., recordn_valuen)
;

更新记录

UPDATE tablename SET field1 = value1, field2 = value2, ..., fieldn = valuen [WHERE CONDITION];

更新多个表中的数据

UPDATE t1, t2, ..., tn SET t1.field1 = expr1, tn.fieldn = exprn [WHERE CONDITION];

删除记录

DELETE FROM tablename [WHERE CONDITION];

删除多个表中的记录

DELETE t1, t2, ..., tn FROM t1, t2, ..., tn [WHERE CONDITION];

查询记录

最基本的查询

SELECT * FROM tablename [WHERE CONDITION]; # *表示查找所有,也可以查找特定的字段
  • 查找不重复的记录,利用DISTINCT关键字
SELECT DISTINCT name FROM student;
  • 条件查询,利用WHERE关键字
SELECT * FROM WHERE name = 'zheng';
  • 排序与限制
SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC], field2 [DESC|ASC],..., fieldn [DESC|ASC]];
# 数据库的排序操作可以用关键字ORDER BY实现
# DESCASC是排序顺序关键字,DESC表示按照字段进行降序排序,ASC则表示升序排序,默认为升序

排序后若只想显示一部分,则可以用LIMIT关键字实现

SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC], field2 [DESC|ASC],..., fieldn [DESC|ASC]] [LIMIT offset_start, row_count];
  • 聚合
# 一般用于汇总查询
SELECT [field1, field2, ..., fieldn] fun_name
FROM tablename
[WHERE CONDITION] # 聚合前过滤
[GROUP BY field1, field2, ..., fieldn
[WITH ROLLUP]]
[HAVING CONDITION]; # 聚合后过滤
# fun_name表示要做的聚合操作,也就是聚合函数,常用的有SUM(求和)、COUNT(*)(记录数)、max(最大值)、min(最小值)。
# GROUP BY关键字表示要进行分类聚合的字段,比如按照班级分类统计学生数量,班级就应该写在GROUP BY后面。
# WITH ROLLUP是可选语法,标明是否对分类聚合后的结果进行再汇总。
# HAVING关键字表示对分类后的结果再进行条件的过滤。
  • 子查询

进行查询时,需要的条件是另外一个SELECT语句的结果,这个时候就要用到子查询,主要的关键字有IN、NOT IN、 =、 !=、EXISTS、NOT EXISTS等。

  • 记录联合
# 将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,这个时候就需要用到UNION和UNION ALL关键字。
SELECT * FROM t1
UNION|UNION ALL
SELECT * FROM t2
UNION|UNION ALL
...
SELECT * FROM tn
# UNION ALL是把结果集直接合并在一起,而UNION是将UNION ALL后的结果进行一次DISTINCT去重。

参考书籍:《深入浅出MySQL》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值