最近在学习mysql数据库的基础知识,看的是黑马的javaweb的网课,关于mysql的基本命令比较多,在这里记录下来,便于日后学习查询翻阅。
参考:
文章目录
前言
一. mysql的配置
1.1MySQL服务启动
1.2MySQL登录
1.3MySQL退出
二. sql常用命令
2.1sql语句分类
2.2DDL(操作数据库、表)
2.21 **操作数据库:增,删,改,查,用**
2.22 **操作表:增,删,改,查**
2.3DML(表中数据,增删改)
2.3.1增:
2.3.2删:
2.3.3改:
2.4DQL(查询表中数据)
2.4.1基础查询
2.4.2条件查询
2.4.3排序:
2.4.4聚合函数:
2.4.5分组查询:
2.4.6分页查询
2.5.DCL(管理用户,授权)
2.5.1管理用户
2.5.2授权
前言
我们常说的SQL,其英文全称为Structured Query Language(结构化查询语言),同编程语言一样,它定义操作所有关系型数据库的规则。换句话说,关系型数据库使用SQL语言作为其查询语言,但是不同的关系型数据库的SQL语法有些不同之处,如同中国各地的方言有很多种,但总的来说都是中文。
比较流行的数据库如下图:
mysql是关系型数据库的一种,我学习的是mysql。这里要知道,在mysql官网www.mysql.com下载的是mysql数据库服务器,安装之后要通过dos界面对数据库进行操作。除此之外还可以安装一个图形化的界面sqlyog来进行操作,就类似编程语言的IDE一样。
另外,在接触mysql基本命令之前,可以先看看mysql安装目录的结构,对其有一个大致认识。这里提一下数据库:文件夹;表:文件;数据:数据。表
一. mysql的配置
1.1MySQL服务启动
安装mysql后,一般来说在电脑中mysql的服务都是自动启动的。除此之外,也可以通过一下三种方式启动:(这一步仅理解就可以,一般在学习的时候用不着,服务都是一直开着的)
1.手动
2. cmd–> services.msc 打开服务的窗口
3. 使用管理员打开cmd
net start mysql : 启动mysql的服务
net stop mysql:关闭mysql服务
1.2MySQL登录
mysql -u用户名 -p密码 (密码可见)
mysql -hip -uroot -p (回车)输入密码 (密码不可见)
mysql --host=ip --user=root --password=连接目标的密码
1.3MySQL退出
exit
quit
二. sql常用命令
2.1sql语句分类
DDL(Data Definition Language)数据定义语言:故名思意,是对逻辑结构进行相关操作,其对象为:数据库,表,列等。关键字为:create,drop,alter等。
DML(Data Manipulation Language)数据操作语言:同理,是对数据库的表中的数据的增删改操作。关键字:insert, delete, update 等。
DQL(Data Query Language)数据查询语言:用来查询数据库中表的记录(数据)。关键字:select, where 等。
DCL(Data Control Language)数据控制语言(了解):用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等。
2.2DDL(操作数据库、表)
2.21 操作数据库:增,删,改,查,用
增:
create database 数据库名称;
create database if not exists 数据库名称;
create database 数据库名称 character set 字符集名。
删:
drop database 数据库名称;
drop database if exists 数据库名称;
改:
alter database 数据库名称 character set 字符集名称
仅修改名称:
查:
show databases;//查所有的数据库
show create database 数据库名称;//查某个数据库的字符集等。
用:
use 数据库名称;//使用数据库
select database();//查询当前正在使用的数据库名称,这条比较特殊。
2.22 操作表:增,删,改,查
增:
create table 表名(列名1 数据类型1,…,列名n 数据类型n);
数据类型:
create table 表名 like 被复制的表名;//复制表
删:
drop table 表名;
drop table if exists 表名 ;
改:
alter table 表名 rename to 新的表名;
alter table 表名 character set 字符集名称;
alter table 表名 add 列名 数据类型;//添加一列
alter table 表名 change 列名 新列别 新数据类型;
alter table 表名 modify 列名 新数据类型;
alter table 表名 drop 列名;
查:(注意这里不是查询表中的记录,对比2.4节)
show tables;//查询某数据库所有表名称。
desc 表名;//查询表结构
2.3DML(表中数据,增删改)
2.3.1增:
insert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n);//注意一一对应
2.3.2删:
delete from 表名 [where 条件]
如果不加条件,则删除表中所有记录。想要删除所有记录,推荐使用 TRUNCATE TABLE 表名。效率更高 先删除表,然后再创建一张一样的表。
2.3.3改:
update 表名 set 列名1 = 值1, 列名2 = 值2,… [where 条件];
2.4DQL(查询表中数据)
select * from 表名; //这里才是查询表中数据。
语法结构如下:
2.4.1基础查询
select 字段名1,字段名2… from 表名;//查询所有字段,可以使用*来替代字段列表。
select distinct 字段 from 表名 //去除重复的结果集
计算列 :SELECT name ,math,english,math+english FROM person;
as:可省略
2.4.2条件查询
where 条件;运算符:
> = <=
BETWEEN…AND //在…之间
IN( 集合)
LIKE:模糊查询。_:单个任意字符。%:多个任意字符。
and 或 && or 或 || not 或 !
IS NULL
2.4.3排序:
order by
select * from 表名 order by 排序字段1 排序方式1,…, 排序字段n 排序方式n; //排序查询,ASC:升序默认,DESC:降序。前面的条件优先。
2.4.4聚合函数:
以列为整体 ,进行相关计算。常用的有:count,max,min,sum,avg。
select count(列名) from 表名;排除null值
select count(ifnull(列名,替换表达式)) from 表名;不排除null值。
2.4.5分组查询:
group by 分组字段和聚合函数。
SELECT sex ,AVG(math),COUNT(id) FROM person GROUP BY sex;
想要加入分组限制条件,即不满足条件的不参加分组的话:
SELECT sex ,AVG(math),COUNT(id) FROM person WHERE math>30 GROUP BY sex HAVING COUNT(id)>2;
where 在分组之前限制,不满足则不参加分组,having在分组后限制,不满足则不被查询出来。where不能跟聚合函数,having可以。
as(别名):as也可以省略,可在聚合函数后面起别名,方便观看:SELECT sex ,AVG(math),COUNT(id) 人数 FROM person WHERE math>30 GROUP BY sex HAVING 人数>2;
2.4.6分页查询
语法:limit 开始的索引,每页查询的条数;limit是mysql的方言。
类似百度搜索,一页包含10(瞎说的)个结果,可以点下一页翻页。
select * from 表名 limit 0,3; //第一页
select * from 表名 limit 3,3; //第二页
公式:开始的索引=(当前页码-1)*每页显示的条数,例如百度,每页显示的条数和页码都是给定的,需要计算的就是开始的索引。
2.5.DCL(管理用户,授权)
2.5.1管理用户
查询用户:1.切换到mysql用户;2.查询user表:select * from user;(通配符:%表示可以在任意主机使用改用户登录数据库,localhost表示当前主机)
创建用户: CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;
删除用户:drop user ‘用户名’@‘主机名’;
修改用户密码:update user set password = password(‘新密码’) where user = ‘用户名’;
或:set password for ‘用户名’@‘主机名’ = password(‘新密码’);//这里的password函数用来加密。
2.5.2授权
查询权限:show grants for ‘用户名’@‘主机名’;//usage:表示登录权限;
授予权限:grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
授予所有权限:grant all on *.* to '用户名'@'主机名';
撤销权限:rework 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;