JavaWeb学习--MySql 01 DDL、DML、DQL

一、概述

        最近还在继续学习JavaWeb,曾经学习过数据库,这次就当是复习学过的知识了。由于自己学识浅薄,文章中可能出现错误或不足之处,恳请读者批评指正。

二、SQL简介

        sql是结构化查询语言。一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。

2.1语法结构

1、SQL语句可以单行或多行书写,以分号结尾。

如上图中两种形式都是可以的,但第一种形式可读性更强,另外需要注意的是在语句的结尾后要加上分号,证明语句的结束

2、SQL语句可以使用空格/缩进来增强语句的可读性

3、MySQL数据库的SQL语句不区分大小写。

4、注释

        单行注释:-- 注释内容 或 # 注释内容(MySQL特有)

        多行注释: /* 注释内容 */

2.2数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

数值类型

 字符串类型

        char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。

日期时间类型

2.3分类

SQL语句根据其功能被分为四大类:DDL、DML、DQL、DCL

我们只需要关注前三类即可,最后一类通常由数据库管理员使用

2.4DDL

        2.3.1数据库操作

查询数据据库:

-- 显示所有的数据库,上面已演示过

show databases;

查询当前的数据库:

select database(); 

 创建数据库:

语法:

create database [ if not exists ] 数据库名;

 [ ]中的内容可以省略,但当被创建的数据库已存在是会报错:

使用数据库:

use 数据库名; 

删除数据库:

drop database [if exists] 数据名;

 当要删除的数据库不存在时,会报错,添加‘if exists’会避免报错;

上述所有的语句中,'database',可以换成schema 或 ‘databases’换成‘schemas’;

2.3.2表操作

DDL中关于表操作包括:创建表、删除表、查询表、修改表

创建表:

        语法:

create table 表名(

        字段1 字段1类型 [约束] [comment 字段1注释],

        字段2 字段2类型 [约束] [comment 字段2注释],

......

        字段n 字段n类型 [约束] [comment 字段n注释]

)[comment  表注释 ];

注意: [ ] 中的内容为可选参数; 最后一个字段后面没有逗号

下面用语句创建如下表:

建表语句:

create table tb_user (
    id int comment 'ID,唯一标识',   # id是一行数据的唯一标识(不能重复)
    username varchar(20) comment '用户名',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) comment '性别'
) comment '用户表';

创建的表结构如下:

我们添加数据时,可以发现ID这个唯一标识可以存在相同的值:

这是因为,虽然我们给id字段的注释了是唯一标识符,但我们并没有真正规定它是唯一不能重复的,这就要用到我们下面要讲到的约束。

约束

概念:约束就是作用在表中字段上的规则,用于限制存储在表中的数据。

在MySQL数据库当中,提供了以下5种约束:

案例:

创建表语句:

create table tb_user (
    id int primary key comment 'ID,唯一标识', 
    username varchar(20) not null unique comment '用户名',
    name varchar(10) not null comment '姓名',
    age int comment '年龄',
    gender char(1) default '男' comment '性别'
) comment '用户表';

当我们在添加id相同的信息是就会报错,因为主键约束 规定字段唯一且非空:

修改表:

        添加字段:

        语法

alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];

举例

alter table tb_user add qq varchar(11) comment 'QQ号';

 执行完上述语句后,表头多出qq字段:

        修改数据类型:

   alter table 表名 modify 字段名 新数据类型(长度);

   alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];

 将qq字段由varchar(11)修改为varchar(13)

alter table tb_user modify qq varchar(13);

 将qq字段名改为QQ,类型改为varchar(11)

alter table tb_user change qq QQ varchar(13);

        删除字段: 

alter table 表名 drop 字段名;

删除qq字段

alter table tb_user drop qq;

         修改表名

rename table 表名 to 新表名;

将表名tb_user改为tb_user_1

 rename table tb_user to tb_user_1;

 删除

drop table [ if exists ] 表名;

删除表tb_user

drop table if exists tb_user; 

2.5DML 

        DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。

2.5.1增加

向指定字段添加数据:

insert into 表名 (字段名1, 字段名2) values (值1, 值2);

向所有字段添加数据:

insert into 表名 values (值1, 值2, ...); 

向指定字段批量添加数据:

insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);

向所有字段批量添加数据:

insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);

 2.5.2修改

update语法:

update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [where 条件] ;

 2.5.3删除

delete语法:

delete from 表名 [where 条件] ;

 2.6DQL

        DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。在实际的业务中查询占有比重很多,所以非常重要。

语法结构:

SELECT

        字段列表

FROM

        表名列表

WHERE

        条件列表

GROUP BY

        分组字段列表

HAVING

        分组后条件列表

ORDER BY

        排序字段列表

LIMIT

        分页参数

2.6.1基本查询(不带条件的查询)

语法:

# 查询多个字段

select 字段1,字段2 from 表名;

# 查询所有字段

select * from 表名;

# 设置别名

select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] from 表名;

# 去除重复记录

select distinct 字段列表 from 表名;

2.6.2条件查询

语法:

select 字段列表 from 表名 where 条件列表 ;

在sql中构建条件的运算符分为比较运算符和逻辑运算符:

        常用的比较运算符如下:

常用的逻辑运算符如下:

2.6.3聚合函数

        之前我们做的查询都是横向查询,就是根据条件一行一行的进行判断,而使用聚合函数查询就是纵向查询,它是对一列的值进行计算,然后返回一个结果值。

语法:

select 聚合函数(字段列表) from 表名 ;

常用的聚合函数:

2.6.4分组查询

        分组就是按列进行分类(指定列下相同的数据归为一类),然后可以对分类完的数据进行合并计算。分组查询通常会使用聚合函数进行计算。

语法:

select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

2.6.5排序查询

 select

        字段列表

from

        表名

[where 条件列表]

[group by 分组字段 ]

order by

        字段1 排序方式1 , 字段2 排序方式2 … ;

排序方式:ASC:升序, DESC:降序 。默认情况下是升序排序

注意事项:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

2.6.6分页查询

语法:

select 字段列表 from 表名 limit 起始索引, 查询记录数 ;

索引从0开始,查询语句的意思即为从起始索引开始,查询“查询记录数”个记录

第i页的起始索引=(i-1)*  查询记录数 ,i=1时起始索引可以省略

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值