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

来源:互联网 发布:windows无法访问\\ 编辑:程序博客网 时间:2024/05/16 18:41

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
原创粉丝点击