MySQL基础

SQL分类

DDL语句

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

DDL(Data Definition Languages)语句:数据定义语⾔,这些语句定义了不同的数据段、数据库、表、列、索 引等数据库对象。常⽤的语句关键字主要包括create、drop、alter等。

DML(Data Manipulation Language)语句:数据操纵语句,⽤于添加、删除、更新和查询数据库记录,并检查 数据完整性。常⽤的语句关键字主要包括   insert、delete、update和select等。

DCL(Data Control Language)语句:数据控制语句,⽤于控制不同数据段直接的许可和访问级别的语句。这 些语句定义了数据库、表、字段、⽤户的访问权限和安全级别。主要的语句关键字包括grant、revoke等。

1.如果需要知道系统中都存在哪些数据库,可以⽤以下命令来查看

show databases

2.知道系统中的有哪些数据库后,可以用 use dbName 切换到要操作的数据库。例如:use test1

3. 查看当前数据库中有哪些表  show tables 

4.删除数据库  drop database dbName 

5.创建表语句。例如,创建⼀个名称为 emp 的表。表中包括 ename(姓名)、hiredate(雇⽤⽇

期)和 sal (薪⽔)3个字段,字段类型分别为varchar(10)、date、int(2)

create table emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2));

表创建完毕后,如果需要查看⼀下表的定义,可以使⽤如下命令:

DESC tablename 例如,查看emp表

6.查看创建表的语句。可以看到用的字符集和存储引擎

show create table emp \G;

7.删除表语句 drop table emp;

8.修改表

(1)修改表类型,语法如下:例如,修改表emp的ename字段定义,将varchar(10)改为varchar(20):

alter table emp modify ename varchar(20); 

(2)增加表字段,语法如下:例如,在表emp中新增加字段age,类型为int(3):

alter table emp add column age int(3); 

(3)删除表字段,语法如下:将字段age删除掉:  alter table emp drop column age; 

(4)字段改名,语法如下:将age改名为age1,同时修改字段类型为int(4):

alter table emp change age age1 int(4) ; 

注意:change和modify都可以修改表的定义,不同的是change后⾯需要写两次列名,不⽅便。但是change的优 点是可以修改列名称,modify则不能。

5)修改字段排列顺序。例如,将新增的字段 birth date加在 ename之

 alter table emp add birth date  after ename; 

修改字段age,将它放在最前⾯:alter table emp modify age int(3) first; 

6)更改表名,语法如下:例如,将表emp改名为emp1,命令如下:

mysql> alter table emp rename emp1; ​​​​​​​

​​​​​​​DML语句

DML  操作是指对数据库中表记录的操作,主要包括表记录的插⼊(  insert  )、更

新(update)、删除(delete)和查询(select),是开发⼈员⽇常使⽤最频繁的操作.这里略过。。。

这里只做聚合函数讲解。

SELECT [field1,field2,…,fieldn] fun_name FROM tablename

[WHERE where_contition] [GROUP  BY field1,field2,…,fieldn

[WITH ROLLUP]]

[HAVING  where_contition]

fun_name 表⽰要做的聚合操作,也就是聚合函数,常⽤的有 sum(求和)、count(*) (记录数)、max(最⼤ 值)、min(最⼩值)。

GROUP   BY关键字表⽰要进⾏分类聚合的字段,⽐如要按照部门分类统计员⼯数量,部门就应该写在  group  by

后⾯。

WITH ROLLUP是可选语法,表明是否对分类聚合后的结果进⾏再汇总。 HAVING关键字表⽰对分类后的结果再进⾏条件的过滤。 注意:having和where的区别在于,having是对聚合后的结果进⾏条件的过滤,⽽where是在聚合前就对记录进

⾏过滤,如果逻辑允许,我们尽可能⽤where先过滤记录,这样因为结果集减⼩,将对聚合的效率⼤⼤提⾼,最后 再根据逻辑看是否⽤having进⾏再过滤。

 

表连接。 当需要同时显⽰多个表中的字段时,就可以⽤表连接来实现这样的功能。从⼤类

上分,表连接分为内连接外连接,它们之间的最主要区别是,内连接仅选出两张表 中互相匹配的记录,⽽外连接会选出其他不匹配的记录。我们最常⽤的是内连接。

例如,查询出所有雇员的名字和所在部门名称,因为雇员名称和部门分别存放在 表   emp和dept中,因此,需要使⽤表连接来进⾏查询:

外连接又分为左连接右连接,具体定义如下。

左连接:包含所有的左边表中的记录甚⾄是右边表中没有和它匹配的记录。 右连接:包含所有的右边表中的记录甚⾄是左边表中没有和它匹配的记录。

⽐较这个查询和上例中的查询,都是查询⽤户名和部门名,两者的区别在于本例 中列出了所有的⽤户名,即使有的⽤户名(dony)并不存在合法的部门名称(部门号 为4,在dept中没有这个部门);⽽上例中仅仅列出了存在合法部门的⽤户名和部门名 称

6)⼦查询。

某些情况下,当进⾏查询的时候,需要的条件是另外⼀个select语句的结果,这个

时候,就要⽤到⼦查询。⽤于⼦查询的关键字主要包括 in、not in、=、!=、exists、not exists等。

7)记录联合。

我们经常会碰到这样的应⽤,将两个表的数据按照⼀定的查询条件查询出来后, 将结果合并到⼀起显⽰出来,这个时候,就需要⽤ union和 union all关键字来实现这样 的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值