MySQL数据库基础第一篇(SQL通用语法与分类)


在当今数据库驱动的世界里,sql(结构化查询语言)作为一门管理数据的语言,对开发者而言极为关键。不论你是在做后端开发、数据科学,或者是设计和维护数据库,一个深入的SQL基础知识对你都大有裨益。
在这篇博客中,我将为你提供一个全套的SQL教程,涵盖了从最基础的SQL通用语法,到更复杂的DDL(数据定义语言),DML(数据操作语言)以及DQL(数据查询语言)等。每一部分都包含了相应的图解以及示例代码,以便于你更好地理解和掌握SQL语句的使用。
不论你是初学者还是有一些SQL使用经验的开发者,我希望这篇博客都能对你有所帮助。让我们一起深入到SQL的世界里,掌握这门强大的数据管理语言。

一、SQL通用语法

二、SQL分类

三、DDL语句



四、DML语句




1.案例代码

代码如下(示例):

INSERT 表_name VALUES (1,'小明',19,92,85,95),
                     (2,'小红',18,82,75,95),
                     (3,'小王',21,66,88,55),
                     (4,'小聪',20,92,84,95),
                     (5,'小东',20,98,95,65);
UPDATE  表_name SET name = '张三',age = 25 where ID=1;
UPDATE  表_name SET name = '王五',age = 35 where ID=3;
UPDATE  表_name SET name = '李四',age = 28 where ID=5;

2.读出结果

五、DQL语句


1.DQL-基本查询

2.DQL-条件查询

3.DQL-聚合函数


注意:null值不参与所有聚合函数运算。

4.DQL-分组查询

5.DQL-排序查询

6.DQL-分页查询

7.DQL语句-执行顺序

1.案例代码

代码如下(示例):

create table emp
(
    id          int ***ment '编号',
    workno      varchar(10) ***ment '工号',
    name        varchar(10) ***ment '姓名',
    gender      char(1) ***ment '性别',
    age         tinyint unsigned ***ment '年龄',
    idcard      char(18) ***ment '身份证号',
    workaddress varchar(50) ***ment '工作地址',
    entrydate   date ***ment '入职时间'
) ***ment '员工表';

insert into emp(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (1, '1', '柳岩', '女', 20, '123456789012345678', '北京', '2000-01-01'),
       (2, '2', '张无忌', '男', 18, '123456789012345670', '北京', '2005-09-01'),
       (3, '3', '韦一笑', '女', 38, '123456789012345670', '上海', '2005-08-01'),
       (4, '4', '赵敏', '女', 18, '123456789012345670', '北京', '2009-12-01'),
       (5, '5', '小昭', '女', 16, '123456789012345678', '上海', '2007-07-01'),
       (6, '6', '杨逍', '男', 28, '12345678901234567X', '北京', '2006-01-01'),
       (7, '7', '范瑶', '男', 40, '123456789012345670', '北京', '2005-05-01'),
       (8, '8', '黛绮丝', '女', 38, '123456789012345670', '天津', '2015-05-01'),
       (9, '9', '范凉凉', '女', 45, '123456789012345678', '北京', '2010-04-01'),
       (10, '10', '陈友谅', '男', 53, '123456789012345670', '上海', '2011-01-01'),
       (11, '11', '张士诚', '男', 55, '123456789012345670', '江苏', '2015-05-01'),
       (12, '12', '常遇春', '男', 32, '123456789012345670', '北京', '2004-02-01'),
       (13, '13', '张三丰', '男', 88, '123456789012345678', '江苏', '2020-11-01'),
       (14, '14', '灭绝', '女', 65, '123456789012345670', '西安', '2019-05-01'),
       (15, '15', '胡青牛', '男', 70, '12345678901234567X', '西安', '2018-04-01'),
       (16, '16', '周芷若', '女', 18, null, '北京', '2012-06-01');
- ------------------------------------ -> 查询需求 <- ----------------------------------------------


-- 基本查询

-- 1,查询指定字段 name ,woekno , age 返回

select name,workno,age from emp;

-- 2,查询指定所有字段 返回

select id, workno, name, gender, age, idcard, workaddress, entrydate from  emp;

select * from emp;

-- 查询所有员工的工作地址,起别名

select workaddress as '工作地址' from emp;

-- 查询所有员工的工作地址(不要重复)

select distinct workaddress as '工作地址' from emp;

-- 条件查询

-- 1,查询年龄等于 88 的员工

select * from emp where age = 88;

-- 2,查询没有身份证的员工信息

select * from emp where idcard is null;

-- 3,查询年龄在 1520 岁之间的员工

select * from emp where age >=15 && age <=20 ;

-- 4,查询性别为女年龄小于 25 岁的员工

select * from emp where gender = '女' && age < 25;

-- 5,查询年龄等于204018岁的员工

select * from emp where age iN(18,20,40);

-- 6,查询性别为两个字员工

select * from emp where name like '__';

-- 7.查询身份证号码最后一位为X的员工信息

select * from emp where idcard like '%X';

-- 聚合函数

-- 1,统计该企业员工数量

select count(*) from emp;
select count(idcard) from emp;

-- 2,统计该企业员工的平均年龄

select avg(age) from emp;

-- 3,统计该企业西安地区员工的年龄之和

select sum(age) from emp where workaddress = '西安';

-- 分组查询

-- 1,根据性别分组,统计男员工与女员工的数据

select gender, count(*) from emp group by gender;

-- 2,根据性别分组,统计男员工与女员工的平均成绩

select gender, avg(age) from emp group by gender;

-- 3,调查年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址

select workaddress, count(*) from emp where age<=45 group by  workaddress;

-- 排序查询

-- 1,根据性别分组,统计男员工与女员工的数据

 select  * from  emp order by  age asc ;

-- 2,根据入职时间对公司的员工,进行降序排序

 select  * from  emp order by  entrydate desc ;

-- 3,根据年龄对公司的员工进行升序排序,如果年龄相同,再根据入职时间进行降序排序

 select  * from  emp order by  age asc , entrydate desc ;

-- 分页查询

-- 1,查询第一页的员工数据,每页展示10条记录

select  *  from  emp limit 0,10;

-- 2,查询第二页的员工数据,每页展示10条记录

select  *  from  emp limit 10,10;

2.读出结果

– 1,查询指定字段 name ,woekno , age 返回

– 2,查询指定所有字段 返回

– 查询所有员工的工作地址,起别名

– 查询所有员工的工作地址(不要重复)

– 1,查询年龄等于 88 的员工

– 2,查询没有身份证的员工信息

– 3,查询年龄在 15 到 20 岁之间的员工

– 4,查询性别为女年龄小于 25 岁的员工

– 4,查询年龄等于20或40或18岁的员工

– 6,查询性别为两个字员工

– 7.查询身份证号码最后一位为X的员工信息


– 聚合函数

– 1,统计该企业员工数量


– 2,统计该企业员工的平均年龄

– 3,统计该企业西安地区员工的年龄之和


– 分组查询

– 1,根据性别分组,统计男员工与女员工的数据


– 2,根据性别分组,统计男员工与女员工的平均成绩


– 3,调查年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址


– 分组查询

– 1,根据年龄对公司的员工进行升序排序


– 2,根据入职时间对公司的员工,进行降序排序


– 3,根据年龄对公司的员工进行升序排序,如果年龄相同,再根据入职时间进行降序排序


– 分页查询

– 1,查询第一页的员工数据,每页展示10条记录

– 2,查询第二页的员工数据,每页展示10条记录

六、DCL语句

1.DCL-管理用户

2.DCL-权限控制


1.案例代码

代码如下(示例):

-- 创建用户 itcast ,只能够在当前主机localhost访问,密码123456;

create user 'itcast'@'localhost' identified by '123456';

-- 创建用户 heima ,可以在任意主机访问数据库,密码123456;

create user 'heima'@'%' identified by '123456';

-- 修改用户 heima 密码,为 1234 ;

alter user 'heima'@'%' identified with mysql_native_password by '1234';

-- 删除用户 'itcast'@'localhost'用户

drop user 'itcast'@'localhost';

-- 查询权限

show grants for 'heima'@'%';

-- 授予权限

grant all on itcast.* to 'heima'@'%';

-- 撤销权限

revoke all on itcast.*from 'heima'@'%';
转载请说明出处内容投诉
CSS教程_站长资源网 » MySQL数据库基础第一篇(SQL通用语法与分类)

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买