SQL编程语言1

1 SQL简介

SQL是一门操作关系型数据库的编程语言

SQL通用语法

  • SQL语句可以以单行或多行书写,以分号结尾。只有在读取到分号后系统才会默认你已经输入执行语句
  • MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
  • 注释
    单行注释:-- 注释内容 (两个横杠一个空格)或 #注释内容(MySQL特有)
    多行注释:/* 注释 */
    在这里插入图片描述

SQL分类:

  • DDL 数据定义语言,用来定义数据库对象;数据库,表,列等
  • DML 数据操作语言,用来对数据库中表的数据进行增删改
  • DQL 数据查询语言,用来查询数据库表的记录(数据)
  • DCL 数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户
    在这里插入图片描述

1.1 DDL 数据定义语言

DDL--------------------------操作数据库
1、查询

  • show databases;

2、创建

  • 创建数据库
    create database 数据库名称;
  • 创建数据库(判断,如果不存在则创建)
    create database if not exists 数据库名称;

3、删除

  • 删除数据库
    drop database 数据库名称;

  • 删除数据库(判断,如果存在则删除)
    drop database if exists 数据库名称;

4、使用数据库

  • 查看当前使用的数据库
    select database();
  • 使用数据库
    use 数据库名称;

DDL----------------------------------操作表

1、查询表:

  • 查询当前数据库下所有表名称
    show tables;
  • 查询表结构
    desc 表名称

2、创建表
CREATE TABLE 表名(
字段名1 数据类型1,
字段名2 数据类型2,

字段名n 数据类型n
);
注意:最后一行末尾不能加逗号

mysql> create table tb_user(
    -> id int,
    -> username varchar(20),
    -> password varchar(30)
    -> );

MySQL支持多种类型,可分为三类

  • 数值
  • 日期
  • 字符串

3、修改表

  • 修改表名
    alter table 表名 rename to 新的表名;
  • 添加一列
    alter table 表名 add 列名 数据类型;
  • 修改数据类型
    alter table 表名 modify 列名 新数据类型;
  • 修改列名和数据类型
    alter table 表名 change 列名 新列名 新数据类型;
  • 删除列
    alter table 表名 drop 列名;

4、删除表

  • 删除表
    drop table 表名;
  • 删除表时判断是否存在
    drop table if exists 表名;

1.2 DML 数据操作语言

添加数据

  • 给指定列添加数据
    insert into 表名(列名1,列名2,…) values(值1,值2,…);
  • 给全部列添加数据
    insert into 表名 values (值1,值2,…);
  • 批量添加数据
    insert into 表名(列名1,列名2,…) values(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
    insert into 表名 values(值1,值2,…),(值1,值2,…),(值1,值2,…)…;

修改数据

  • 修改表数据
    update 表名 set 列名1=值1,列名2=值2,…,[where 条件];
    注意:如果修改语句中不加条件,则将所有数据都修改!

删除数据

  • 删除数据
    delete from 表名 [where 条件];
    注意:删除语句中如果不加条件,则将所有数据都删除

1.3 DQL 数据查询语言(最重要)

1、基础查询

  • 查询多个字段
    select 字段列表 from 表名;
    mysql> select name,age from stu;
    select * from 表名; 查询所有数据
  • 去除重复记录
    select distinct 字段列表 from 表名;
    mysql> select distinct address from stu;
  • 起别名
    as:as 也可以省略
    mysql> select name,score as 数学成绩 from stu;

2、条件查询

  • 条件查询语法
    select 字段列表 from where 条件列表
    在这里插入图片描述
    mysql> select * from stu where age>20;
    mysql> select * from stu where age>20 and age<50;
    mysql> select * from stu where age between 20 and 50;

like模糊查询,通过某些字段进行查询,无需完整信息,_表示一个通配字符,%可以表示多个通配字符
查询姓马成员
mysql> select * from stu where name like ‘马%’;
查询第二个字是花的成员
mysql> select * from stu where name like ‘_花%’;
查询名字中包含云的成员
mysql> select * from stu where name like ‘%云%’;

3、排序查询

  • select 字段列表 from 表名 order by 排序字段名1 [排序方式1],排序字段名2 [排序方式2]…;

排序方式:
ASC:升序排序(默认值)
DESC:降序排序
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序。

按照分数进行升序排序
mysql> select * from stu order by score asc;
按照年龄降序排序
mysql> select * from stu order by age desc;
先按照成绩排列,成绩一样则按照年龄降序排列
mysql> select * from stu order by score asc,age desc;

4、分组查询

聚合函数概念:将一列数据作为一个整体,进行纵向计算。

聚合函数分类:

  • count(列名):统计数量
  • max(列名):最大值
  • min(列名):最小值
  • sum(列名):列求和
  • avg(列名):列平均值

聚合函数语法
select 聚合函数名(列名) from 表名;
注意:null值不参与所有聚合函数计算

统计学生数
mysql> select count(name) from stu;
查询最高分
mysql> select max(score) from stu;
查询总分
mysql> select sum(score) from stu;
查询最低分
mysql> select min(score) from stu;
查询平均分
mysql> select avg(score) from stu;

  • 分组查询语法
    select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];
    注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

where和having区别
执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
可判断的条件不一样:where 不能对聚合函数进行判定,having可以。
执行顺序:where>聚合函数>having

操作实例:
查询男同学和女同学各自的数学平均分
mysql> select sex,avg(math) from stu group by sex;
查询男同学和女同学各自的数学平均分,以及各自人数
mysql> select sex,avg(math),count() from stu group by sex;
查询男同学和女同学各自的数学平均分,以及各自人数,分数低于70分的不参与分组
mysql> select sex,avg(math),count(
) from stu where math>70 group by sex;
查询男同学和女同学各自的数学平均分,以及各自人数,分数低于70分的不参与分组,分组之后的人数大于2
mysql> select sex,avg(math),count() from stu where math>70 group by sex having count()>2;

5、分页查询

  • 分页查询语法
    select 字段列表 from 表名 limit 起始索引,查询条数目;

起始索引:从0开始。
计算公式:起始索引=(当前页码-1)*每页显示的条数

  • 分页查询limit是MySQL数据库特有的
  • Oracle分页查询使用rownumber
  • SQL server分页查询使用top

实例:
从0开始查询,查询3条数据
mysql> select * from stu limit 0,3;
每页显示3条数据,显示第一页
mysql> select * from stu limit 0,3;
每页显示3条数据,显示第二页
mysql> select * from stu limit 3,3;

1.4 DQL小结

  • select
    指定字段列表
  • form
    指定表名列表
  • where
    条件列表
  • group by
    完成分组字段
  • having
    完成分组之后条件限定
  • order by
    排序字段
  • limit
    分页限定
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值