MySQL学习:MySQL常用命令

jupiter
2022-01-11 / 0 评论 / 882 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年01月11日,已超过829天没有更新,若内容或图片失效,请留言反馈。

1.连接MySQL

1.1 连接到本机上的MySQL

mysql -u root -p # 如果刚安装好MySQL,root是没有密码的

1.2 连接到远程主机上的MySQL

  • 假设远程主机的IP为:192.168.206.100,用户名为root,密码为12345678
mysql -h 192.168.206.100 -u root -p 12345678; 

1.3 退出MySQL

exit;
# or
quit;

2. 修改root密码与简单权限管理

2.1 修改root密码

方法1: 用SET PASSWORD命令

mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

方法2:用mysqladmin

mysqladmin -u root password "newpass"
# 如果root已经设置过密码,采用如下方法
mysqladmin -u root password oldpass "newpass"

方法3: 用UPDATE直接编辑user表

mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;

方法4:在丢失root密码的时候

mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;

2.2 允许用户远程登录

允许root使用密码admin123从任何主机连接到mysql服务器

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin123' WITH GRANT OPTION;
-- 其中"*.*"代表所有资源所有权限, “'root'@%”其中root代表账户名,%代表所有的访问地址,也可以使用一个唯一的地址进行替换,只有一个地址能够访问。如果是某个网段的可以使用地址与%结合的方式,如10.0.42.%。IDENTIFIED BY 'root',这个root是指访问密码。WITH GRANT OPTION允许级联授权。
flush privileges;
-- 刷新访问权限表

允许用户root使用密码admin123从ip为192.168.12.16的主机连接到mysql服务器

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.16'   IDENTIFIED BY 'admin123' WITH GRANT OPTION;
flush privileges;

3.库操作

create database db_name;  -- 创建数据库
show databases;           -- 显示所有的数据库
drop database db_name;    -- 删除数据库
use db_name;              -- 使用数据库

4.表操作

建表与删表

create table tb_name (字段名 varchar(20), 字段名 char(1));   -- 建表
show tables;              -- 显示数据表
desc tb_name;            -- 显示表结构
drop table tb_name;      -- 删除表

eg:

-- 创建学生表
create table Student(
     Sno char(10) primary key,
     Sname char(20) unique,
     Ssex char(2),
     Sage smallint,
     Sdept char(20)
);

修改表结构

-- 增加字段
alter table table_name add field_name field_type;

-- 删除字段
alter table table_name drop field_name;

-- 修改字段的注释
alter table `student` modify column `id` comment '学号';

-- 修改原字段名称及类型
alter table table_name change old_field_name new_field_name field_type;

-- 加索引
alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
-- 删除某个索引
alter table employee drop index emp_name;

-- 设置主关键字
alter table 表名 add primary key (字段名);

-- 设置唯一限制条件
alter table 表名 add unique 索引名 (字段名);

5.数据操作

5.1 插入数据(Add)

-- 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
insert into tb_name values (value1,value2,value3,...);
-- 第二种形式需要指定列名及被插入的值:
insert into tb_name (column1,column2,column3,...) values (value1,value2,value3,...);

eg:

insert into Student values ( 20180001,张三,男,20,CS);
insert into Student values ( 20180002,李四,男,19,CS);
insert into Student (Sno,Sname,Ssex,Sage,Sdept) values ( 20180003,王五,男,18,MA);
insert into Student (Sno,Sname,Ssex,Sage,Sdept) values ( 20180004,赵六,男,20,IS);

5.2 查询数据(Select)

select 语句的一般格式如下:

select <目标列表达式列表>
[into 新表名]
from 表名或视图名
[where <条件>]
[group by <分组表达式>]
[having <条件>]
[order by <排序表达式>[ASC|DESC]]

查询所有

-- 查询表中所有列
select * from tb_name;
-- 查询表中指定的列
select tb_name.<字符型字段>,<字符型字段> ... from  tb_name;
-- 指定查询结果中的列名
select <字符型字段> as 列标题1,<字符型字段> as 列标题2, <字符型字段> as 列标题3 from bt_name;
-- 查询经过计算的列(即表达式的值)
select <字符型字段>,<字符型字段>,列标题 = <字符型字段> * n from tb_name;

消除查询结果中的重复行

select distinct <字符型字段>[,<字符型字段>,...] from tb_name;

限制查询结果中的返回行数

select  top n from tb_name; -- 查询前 n 的数据
select top n percent from tb_name; -- 查询前 n% tb_name的数据

对查询结果排序

select * from tb_name order by <排序表达式> <排序方法>;

查询满足条件的行

  • 模板
select [all|distinct] [top n[percent]]<目标列表达式列表> from 表名 where <条件>;
-- 说明:在查询条件中可使用以下运算符或表达式:
    -- 比较运算符         <=,<,=,>,>=,!=,<>,!>,!<
    -- 范围运算符         between... and,not between... and
    -- 列举运算符         in,not in
    -- 模糊匹配运算符        like,not like
    -- 空值运算符         is null,is not null
    -- 逻辑运算符         and,or,not
  • 具体应用
-- 使用比较运算符
select * from tb_name where <字段> >= n ;
-- 指定范围
select * from tb_name where <字段> [not] between <表达式1> and <表达式2>;
-- 使用列举
select * from tb_name where <字段> [not] in(值1,值2,...,值n);
-- 使用通配符进行模糊查询  匹配串中通常含有通配符%和_(下划线)。
select * from tb_name where <字符型字段> [not] like <匹配串>; 
-- 使用null的查询
select * from tb_name where <字符型字段> is [not] null;
-- 多重条件查询:使用逻辑运算符
select * from tb_name where <字符型字段> = 'volues' and <字符型字段> > n;

使用统计函数

-- 求指定的数值型表达式的和或平均值
select avg(<字符型字段>) as 平均数,sum(<字符型字段>) as 总数 from tb_name where <字符型字段> ='字符串';
-- 求指定表达式的最大值或最小值。
select max(<字符型字段>) as 最大值,min(<字符型字段>) as 最小值 from tb_name;
-- 统计记录总数。
select count(*) as 总数 from tb_name;
-- 统计指定字段值不为空的记录个数
select count(<字符型字段>) as 总数 from tb_name;

对查询结果分组

--  group by子句用于将查询结果表按某一列或多列值进行分组,列值相等的为一组,每组统计出一个结果。该子句常与统计函数一起使用进行分组统计。格式为:
--  group by 分组字段[,...n][having <条件表达式>];
--  1.在使用group by子句后
    --  select列表中只能包含:group by子句中所指定的分组字段及统计函数。
--  2.having子句的用法
    --  having子句必须与group by 子句配合使用,用于对分组后的结果进行筛选(筛选条件中常含有统计函数)。
--  3. 分组查询时不含统计函数的条件
    --  通常使用where子句;含有统计函数的条件,则只能用having子句。
    select <字符型字段>,count(*) as 列标题 from tb_name where <字符型字段>='字符串' group by <字符型字段>;

5.3 修改数据(Update)

update tb_name set 列名称 = 新值 where 列名称 = 某值;

5.4 删除数据(Delete)

-- 条件删除
delete from tb_name where 列名称 = 某值;
-- 删除所有行
delete * from tb_name;
    -- 或 
delete from tb_name;

参考资料

  1. mysql修改root密码和设置权限
  2. MySQL允许root远程登录
  3. MySQL基础 — 常用命令
0

评论 (0)

打卡
取消