MySQL基础---------SQL语言

一.MySQL基础

MySQL是二十世纪九十年代开发的一个关系型数据库, MySQL5.0增加了对视图,  数据库存储过程,  触发器,  服务器端游标,  以及分布式事务协议等高级特性的支持.

MySQL优势:  开源,  免费,  跨平台,  性能高,  用户较多

 弱点:  SQL标准符合性差.

当面对一个陌生的数据库时,  通常需要一种方式与它进行交互,  就用到了 SQL语言.

SQL语言是 (Structure  Query  Language)结构化查询的缩写. 它是使用关系模型的数据库应用语言. 大多数关系型数据库系统都支持SQL语言.

关系型数据库是建立在关系模型基础上的数据库,  关系模式就是以二维表形式存储处理数据,  关系型数据库就是由多张能互相连接的二维行列表格组成的数据库.

二.SQL语言的分类.

SQL语言可以划分为三类: 

一.DDL语句:  数据定义语言.  定义了不同的数据段, 数据库, 表, 列, 索引等数据库对象. 常用语句关键字包括 create, drop, alter.

对数据库内部的对象进行创建, 删除, 修改等操作的语言.

1.创建数据库

启动MySQL服务之后, 输入命令连接到 MySQL服务器.

以上命令中,  mysql代表客户端命令.  -u 后面跟连接的数据库用户,  -p 表示需要输入密码.

客户端的连接ID, 这个数字记录了MySQL服务到目前为止的连接次数,  每个新连接都会自动加1.

创建新的数据库 test, 并指定字符集为 utf8.

2.删除数据库

删除了新建的数据库 test.

3.创建表

在 test数据库中创建了 名为 t1 的表,  并指定字段,  字段类型.

使用 desc 命令查看表的结构.

查看创建表的 SQL语句.  可以看到表的 engine (存储引擎)和 charset(字符集) 等信息.  "\G" 的含义是使得记录能够按照字段竖向排列, 以便更好的显示内容较长的记录.

4.删除表

5.修改表

对于已创建好的表,  如果需要修改表的一些结构,  在大多数情况下都使用  alter  table 语句.

(1)修改表类型

将表中 aname 字段的数据类型修改为  varchar(20).

(2)增加表字段

alter  table  t1  add  column des  varchar(20) 向表中增加新的字段.

(3)删除表字段

alter  table  t1  drop column  des;  删除表中 des 字段.

(4)字段改名

change 和 modify 都可以修改表的定义,  不同的是 change 后面需要写两次列名, 但change 的优点是可以修改字段名称,  而 modify 则不能.

(5)修改字段排列顺序

ADD新增字段默认是加在表的最后位置, CHANGE/MODIFY 修改表的结构默认都不会改变字段的位置.

新增字段 des 放在 aname 字段后面.

将 age1 字段放在表的最前面.

CHANGE/FIRST|AFTER  COLUMN  都属于MySQL在标准 SQL上的扩展,  在其他数据库上不一定适用.

(6)修改表名.

将表 t1 改名为 test1.

 

 

二. DML 语句

DML 操作是指对数据库中表记录的操作,   主要包括表记录的插入(insert),  更新(update),  删除(delete),  查询(select).

1.插入表记录

insert  into tablename(字段) values(值)

对于可空字段,  自增字段,  可以不用在 insert 后面的字段类表中出现,  values 后面只写对应字段名称的value.  可空字段可以自动设置为 NULL, 自增字段默认自增.

insert 可以一次性插入多条记录

 

2.更新语句

将表中 age 值为2的aname字段更改为 'cde'

update 可以同时更新多个表中的数据

3.删除记录

删除多个表中的记录

 

4.查询记录

(1)查询不重复记录

使用  distinct  关键字来实现

(2)条件查询

(3)排序和限制

数据库排序操作用  ORDER  BY 来实现.  DESC和ASC是排序顺序关键字,  DESC按照字段进行降序排列,  ASC按照升序排列,  不写此关键字默认是升序排列.   OERDER  BY 后面可以跟多个不同的排序字段,  并且每个排序字段可以有不同的排序顺序.  如果排序字段的值一样, 则值相同的字段按照第二个排序字段进行排序,  如果只有一个排序字段, 则这些字段相同的记录将会无序排列.

对于排序后的记录,  如果只希望显示一部分,  则使用 LIMIT 关键字就可以.  

SELECT  ...  [LIMIT offset_start,row_count]

offset_start  表示记录的起始偏移量,  row_count  表示显示的行数.  在默认情况下,  起始偏移量为0, 只需写记录行数就行.

limit  属于 MySQL扩展的语法,  在其他数据库上并不能通用.

(4)聚合

聚合语法如下:  SELECT [field1,field2,field3..]  fun_name  FROM  tablename WHERE ....  [GROUP  BY field1,field2...] [WITH ROLLUP]  [HAVING where_contitional]

fun_name 表示要做的聚合操作, 就是聚合函数.  常用的有 sum(求和),  count(*),  max(最大值),  min(最小值).

GROUP  BY关键字表示要进行分类聚合的字段. 比如按照部门分类统计员工数量,  部门就应该写在  group by  后面.

WITH  ROLLUP 是可选语法, 表示对分类聚合后的结果进行再汇总.

HAVING 关键字表示对分类后的结果再进行条件的过滤.

(5)表连接

表连接分为内连接和外连接.  它们之间最主要的区别是:  内连接仅选出两张表中互相匹配的记录,  而外连接不仅包含符合连接条件的行,还包含自身不符合条件的行.

内连接示例:

外连接又分为左连接和右连接.

左连接:  包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录. 左边表数据行全部保留,  右边表仅保留符合连接条件的行.

右连接:  包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录.  右边表数据全部保留,  左边表保留符合连接条件的行.

左连接:  

右连接:

(6)子查询

用于子查询的关键字主要包括  in, not in, =, !=,  exists,  not exists.

将子查询转换为表连接:

(7)记录联合

将两个表中的数据按照一定的查询条件查询出来后,  将结果合并到一起显示出来,  需要使用  union 和 union  all  关键字来实现.

union  和  union all 的区别是:  union  会去除表中的重复项.

 

三. DCL语句

数据控制语句,  主要是DBA用来管理系统中的对象的权限使用,  一般开发人员很少使用。这里暂不做介绍。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值