MySQL学习笔记(一)--SQL语句

MySQL学习笔记(一)–SQL语句

SQL语句主要可以划分为以下3个类别:
(1)DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字主要包括create、drop、alter等。
(2)DML(Data Manipulation Languages)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。
(3)DCL(Data Control Languages)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别,主要的语句关键字包括grant、revoke等。

一、关于DDL语句

1、创建数据库

CREATE DATABASE dbname;
在查看了系统中已有的数据库后,可以用如下的命令选择要要操作的数据库:
USE dbname;

2、删除数据库

DROP DATABASE dbname;
注意:数据库删除后,下面的所有表数据都会全部删除,所以删除前一定要仔细检查并做好相应备份。

3、创建表

CREATE TABLE tablename(
column_name_1 columen_type_1 constraints,
column_name_2 columen_type_2 constraints,
……
column_name_n columen_type_n constraints,
);
column_name为列的名字,columen_type为列的数据类型,constraints是这个列的约束条件。
表创建完毕后,如果需要查看一下表的定义,可以使用如下命令:
DESC tablename;
查看创建表的SQL:
SHOW CREATE TABLE EMP \G;

4、删除表

DROP TABLE tablename;

5、修改表

(1)修改表类型
ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST|AFTER col_name]
(2)增加表字段
ALTER TABLE TABLENAME ADD [COLUMN] column_definition [FIRST|AFTER col_name]
(3)删除表字段
ALTER TABLE TABLENAME DROP [COLUMN] col_name
(4)字段改名
ALTER TABLE TABLENAMECHANGE [COLUMN] OLD_COL_NAME COLUMN_DEFINITION [FIRST|AFTER col_name]
注意:change和modify都可以修改表的定义,不同的是change后面需要写两次列明,不方便。但是change的优点是可以修改列名称,modify则不能。
(5)修改字段排列顺序
在字段增加和修改语法(ADD/CHANGE/MODIFY)中,都有一个可选项first|after column_name,这个选项可以用来修改字段在表中的位置,ADD增加的新字段默认是加在表的最后位置,而CHANGE/MODIFY默认都不会改变字段的位置
(6)更改标明
ALTER TABLE TABLENAME RENAME [TO] NEW_TABLENAME;

二、关于DML语句

1、插入记录

INSERT INTO TABLENAME (FIELD1,FIELD2…FIELDN) VALUES (VALUE1,VALUE2…VALUEN);
含可空字段、非空但是含有默认值的字段、自增字段,可以不用在INSERT后的字段列表里面出现,VALUES后面只写对应字段名称的value。

2、更新记录

UPDATE TABLENAME SET FIELD1=VALUE1,FIELD2=VALUE2,…,FIELDN=VALUEN [WHERE CONDITION];

3、删除记录

DELETE FROM TABLENAME [WHERE CONDITION];

4、查询记录

SELECT * FROM TABLENAME [WHERE CONDITION];
(1)查询不重复的记录
有时需要将表中的记录去掉重复后显示出来,可以用distinct关键字来实现。
(2)条件查询
在很多情况下,用户并不需要查询所有的记录,而只是需要更具限定条件来查询一部分数据,用where关键字可以来实现这样的操作。
(3)排序和限制
取出按照某个字段进行排序后的记录结果集,这就用到了数据库的排序操作,用关键字order by来实现:
SELECT * FROM TABLENAME [WHERE CONDITION] [ORDER BY FIELD] [DESC/ASC];
DESC和ASC是排序顺序关键字,DESC表示按照字段进行降序排列,ASC则表示升序排列,如果不写此关键字默认是升序排序。
对排序后的记录,如果只希望显示一部分,而不是全部,就可以使用LIMIT关键字实现:
SELECT … [LIMIT OFFSET_START,ROW_COUNT];
offset_start表示记录的起始偏移量,row_count表示显示的行数,在默认情况下,起始偏移量为0,只需要写记录行数就可以。
limit经常和order by一起配合使用来进行记录的分页显示。
(4)聚合
SELECT [FUN_NAME] FROM TABLENAME [WHERE CONDITION] [GROUP BY FIELDS] [WITH ROLLUP] [HAVING WHERE_CONDITION];
FUN_NAME表示要做聚合操作,也就是聚合函数,常用的有sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)。
GROUP BY关键字表示要进行分类聚合的字段。
WITH ROLLUP是可选语法,标明是否对分类聚合后的结果进行汇总。
HAVING关键字表示对分类后的结果再进行条件的过滤。
注意:having和where的区别在于,having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤,如果逻辑允许,我们尽可能用where先过滤记录,这样因为结果集减小,将对距离的效率大大提高,最后在根据逻辑看是否用having进行在过滤。

(5)表连接

表连接分为内连接和外连接,内连接仅选出两张表中互相匹配的记录,外连接会选出其他不匹配的记录。最常用的是内连接。外连接又分为左连接和右连接,左连接包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录,右连接包含所有的右表中的记录甚至是左表中没有和它匹配的记录。

(6)子查询

某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就要用到子查询,用于子查询的关键字主要包括in、not in、=、!=、exists、not exists等。如果子查询记录数唯一,还可以用=代替in。

(7)记录联合

将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示,需要union和union all关键字来实现:
SELECT … [UNION|UNION ALL] SELECT …;
union 和 union all 的主要区别是union all是把结果集直接合并在一起,而union是将union all后的结果进行一次distinct,去除重复记录后的结果。

三、关于DCL语句

DCL语句主要是DBA用来管理系统中的对象权限时使用,一般的开发人员很少使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值