SQL语句

本文详细介绍了如何在Linux系统中通过命令行启动和停止MySQL8.0服务,以及涉及数据库操作(DDL)、数据操作语言(DML)、查询语言(DQL)和数据控制语言(DCL),包括创建用户、管理权限和基本SQL语句等。
摘要由CSDN通过智能技术生成

启动与停止

启动:net start mysql80

停止:net stop mysql80

注意:mysql默认是开机自启动的。

客户端连接 

法二:命令行输入mysql -u root -p

但使用这种方式需要配置PATH环境变量

DDL

DDL - 数据库操作

查询

查询所有数据库

show databases;

查询当前数据库

select database();

创建数据库

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

删除数据库

drop database [if exists] 数据库名;

使用数据库

use 数据库名

DDL - 表操作-查询

查询当前数据库所有表

show tables;

查询表结构

desc 表名;

查询指定表的建表语句

show create table 表名;

DDL - 表操作-创建

DDL - 表操作-数据类型

char 定长字符串

varchar 变长字符串

数值类型

字符串类型

日期时间类型

DDL - 表操作-修改

添加字段

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

修改数据类型

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

修改字段名和字段类型

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

删除字段

alter table 表名 drop 字段名;

修改表名

alter table 表名 rename to 新表名;

DDL - 表操作-删除

删除表

drop table [if exists] 表名;

删除指定表,并重新创建该表

truncate table 表名;

DML数据操作语言

用来对数据库中表的数据记录进行增删改操作

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,...);

注意:字符串和日期型数据应该包含在引号中

DML-修改数据

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

DML-删除数据

delete from 表名 [where 条件]

DQL数据库查询语言

用来查询数据库表中的记录

  • 基本查询

  • 条件查询 (where)

  • 聚合查询 (count、max、min、avg、sum)

  • 分组查询 (group by)

  • 排序查询 (order by)

  • 分页查询 (limit)

DQL-基本查询

查询多个字段

select * from 表名;

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

设置别名

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

去除重复记录

select distinct 字段列表 from 表名;

DQL-条件查询

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

eg.

查询年龄等于18或20或40的员工信息

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

查询姓名为两个字的员工信息

select * from emp where name like '__';

查询身份证号最后一位是X的员工信息

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

DQL-聚合函数

聚合函数:count 统计数量

max、min、avg、sum

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

注意:所有聚合函数运算时不计算null值

eg.

统计西安地区员工的年龄之和

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

DQL-分组查询

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

where与having的区别

执行时机不同:where在分组之前过滤;having在分组之后过滤

判断条件不同:where不能对聚合函数进行判断,而having可以对聚合函数进行判断

eg.

根据性别分组,统计男性员工和女性员工的数量

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

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

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

根据工作地址进行分组,然后获取到每一个工作地址的员工数量

DQL-排序查询

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

排序方式

asc:升序 默认值

desc: 降序

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

DQL-分页查询

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

注意:

起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数

如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10

eg.

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

select * from emp limit 10,10;

查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序

select * from emp where gender = '男' and age between 20 and 40 order by age asc,entrydate asc limit 5;

DCL数据控制语言

主要用来管理数据库用户、控制数据库的访问权限

DCL-管理用户

查询用户

use mysql;

select * from user;

创建用户

create user '用户名'@'主机名' identified by '密码';

修改用户密码

alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';

删除用户

drop user '用户名'@'主机名'

eg.

创建用户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

DCL-权限控制

查询权限

show grants for '用户名'@'主机名';

授予权限

grants 权限列表 on 数据库名.表名 to '用户名'@'主机名';

eg. grants all on itcast.* to 'heima'@'%'

授予所有表所有权限

授权时,数据库名和表名可以使用*进行通配,代表所有

撤销权限

revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值