MySQL基本命令总结

一. 基本命令
1. 启动服务
    windows: net start mysql
    linux: service mysqld start
    mac: /usr/local/mysql/support-files/mysql.server start  (gz解压包方式安装,路径按照解压安装时的目录查找)
         brew services start mysql  (brew install mysql方式安装启动方式)
    为了方便操作,可以自定义启动命令,修改~/.bash_profile文件,添加以下内容:

    # mysql快捷命令
    alias mysqlstart=‘sudo /usr/local/mysql/support-files/mysql.server start‘  # 启动服务
    alias mysqlstop=‘sudo /usr/local/mysql/support-files/mysql.server stop‘  # 停止服务
    alias mysqlstatus=‘sudo /usr/local/mysql/support-files/mysql.server status‘  # 查看状态
    alias mysqlrestart=‘sudo /usr/local/mysql/support-files/mysql.server restart‘  # 重启服务
    添加完成后,可以直接执行mysqlstart,mysqlstop命令启动停止服务.
2. 停止服务
    windows: net stop mysql
    linux: service mysqld stop
    mac: /usr/local/mysql/support-files/mysql.server stop
         brew services stop mysql
3. 连接数据库
    mysql -u root -p
4. 退出登录
    exit;
5. 查看数据库版本
   select version();
6. 查看当前时间
   select now();
7. 远程链接
   mysql -h 远程ip -u 用户名 -p 密码
8. 更改密码
    下面几种方法都可以:
    SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘newpass‘);
    mysqladmin -u root password "newpass";  # 更改前root密码为空时使用此命令
    mysqladmin -u root password "oldpass" "newpass";  # 更改前root已经设置过密码
    update mysql.user set authentication_string=password(‘新密码‘) where User=‘root‘;
    UPDATE mysql.user SET Password = PASSWORD(‘newpass‘) WHERE user = ‘root‘;

二. 数据库操作
1. 创建数据库
    格式: create database 数据库名 charset=utf8;
2. 删除数据库
    格式: drop database 数据库名;
3. 切换数据库
    格式: use 数据库名;
4. 查看当前选择的数据库
    格式: select database();

三. 表操作
1. 查看数据库中所有表
    show tables;
2. 创建表
    格式: create table 表名(列及类型);
    示例: create table student(id int auto_increment primary key, name varchar(20) not null, age int not null, gender bit default 1, address varchar(64), isDelete bit default 0);
    1) 创建表时,直接引用其他数据库中的表结构及数据:
    create table tablename select * from otherdb.othertable;
    2) 创建表时,直接引用其他数据库中的表结构,不引入表中数据:
    reate table tablename select * from otherdb.othertable where 1>2;  # 指定一个为假的条件,则只引用表结构
3. 删除表
    格式: drop table 表名;
    示例: drop table student;
4. 查看表结构
    desc 表名;
    desc student;
5. 查看建表语句
    格式: show create table 表名;
    示例: show create table student;
6. 重命名表名
    格式: rename table 原表名 to 新表名;
    示例: rename table student to newstudent;
7. 修改表结构
    格式: alter table 表名 add|change|drop 列名 类型;
          alter table 表名 add|change|drop 列名 类型 default 默认值;  (有默认值方式)

四. 数据操作
1. 增
    a. 全列插入
        格式: insert into 表名 values(...);
        说明: 主键列是自动增长的,但是在全列插入时需要占位,通常使用0,插入成功后以实际数据为准
        示例: insert into student values(0,"jason",20,1,"BJ",0);
    b. 缺省插入
        格式: insert into 表名(列1,列2...) values(值1,值2...);
        示例: insert into student(name,age,address) values("tom",18,"上海");
    c. 同时插入多条数据
        格式: insert into 表名 values(...),(...),(...)...
        示例: insert into student values(0,"jackson",22,1,"SH",0), (0,"lily",20,0,"GZ");
2. 删
    格式: delete from 表名 where 条件;
    示例: delete from student where id=2;
    注意: 没有条件是全部删除,谨慎使用
3. 改
    格式: update 表名 set 列1=新值,列2=新值 where 条件;
    示例: update student set age=25 where name="jason";
    注意: 没有条件是全部列都修改,谨慎使用
4. 查
    说明:查询表中的全部数据
    格式: select * from 表名;
    示例: select * from student;

五. 查
1. 基本语法
    格式: select * from 表名;
    说明:
        1) from关键字后面是表名,表示数据来源于这张表
        2) select后面写表中的列名,如果是*表示在结果集中显示表中的所有列
        3) 在select后面的列名部分,可以使用as为列名起别名,这个别名显示在结果集中
        4) 如果要查询多个列,中间使用逗号分隔
    示例:
        select * from student;
        select name, age from student;
        select name, address as addr from student;
2. 消除重复行
    在select后面列前面使用distinct可以消除重复的行
    示例:
        select gender from student;
        select distinct gender from student;
3. 条件查询
    a. 语法
        格式: select * from 表名 where 条件;
    b. 比较运算符
        等于              =
        大于              >
        小于              <
        大于等于          >=
        小于等于          <=
        不等于            != 或 <>
        需求: 查询id大于5的所有学生
        示例: select * from student where id>5;
    c. 逻辑运算符
        and    并且
        or     或
        not    非
        需求: 查询id大于5的男同学
        示例: select * from student where id>5 and gender=1;
    d. 模糊查询
        like
        % 表示任意多个任意字符
        _ 表示任意一个任意字符
    e. 范围查询
        in                  表示在一个非连续的范围内
        between...and...    表示在一个连续的范围内
        需求: 查询编号为8,10,12的学生
        示例: select * from student where id in (8,10,12);
        需求: 查询编号为6到10的学生
        示例: select * from student where id between 6 and 10;
    f. 空判断
        注意: null与""不同
        判断空: is null
        判断非空: is not null
    g. 优先级
        小括号, not 比较运算符, 逻辑运算符
        and比or优先级高,如果同时出现并希望先执行or,需要配合小括号使用
4. 聚合
    为了快速得到统计数据,提供了5个聚合函数
    a. count(\*)     表示计算总行数,括号中可以写*或列名
    b. max(列)       表示求此列的最大值
    c. min(列)       表示求此列的最小值
    d. sum(列)       表示求此列的和
    e. avg(列)       表示求此列的平均值
    需求: 查询学生总数
    示例: select count(*) from student;
    需求: 查询女生编号的最大值
    示例: select max(id) from student where gender=0;
    需求: 查询所有学生的年龄和
    示例: select sum(age) from student;
    需求: 查询所有学生的年龄平均值
    示例: select avg(age) from student();
5. 分组
    按照字段分组,表示此字段相同的数据会放到一个集合中.
    分组后,只能查询出相同的数据列,对于有差异的数据列无法显示在结果中.
    可以对分组后的数据进行统计,做聚合运算
    语法: select 列1,列2,聚合... from 表名 group by 列1,列2...
    需求: 查询男女生总数
    示例: select gender,count(*) from student group by gender;

    分组后的数据筛选,使用having,表示对分组后的结果再过滤.
    示例: select gender,count(*) from student group by gender having gender;

    where与having区别:
    where是指对from后面指定的表进行筛选,属于对原始数据的筛选;
    having是对group by的结果进行筛选
6. 排序
    语法: select * from 表名 order by 列1 asc|desc, 列2 asc|desc, ...
    说明:
        a. 将数据按照列1进行排序,如果某些列1的值相同,则按照列2进行排序
        b. 默认按照从小到大的顺序排序
        c. asc 升序
        d. desc 降序
    需求: 将没有被删除的数据按照年龄排序
    示例:
        select * from student where isDelete=0 order by age desc;
        select * from student where isDelete=0 order by age desc, id desc;
7. 分页
    语法: select * from 表名 limit start,count;
    说明: start 索引从0开始; count 结果集中显示个数
    示例:
        select * from student limit 0,3;
        select * from student limit 3,3;
        select * from student where gender=0 limit 0,3;

六. 关联
    一对多示例
    建表语句:
    1. create table class(id int auto_increment primary key, name varchar(20) not null, stuNum int not null);
    2. create table students(id int auto_increment primary key, name varchar(20) not null, gender bit default 1, classid int not null, foreign key(classid) references class(id));
    # 使用外键关联班级表的主键. 注: 表的外键必须是另一张表的主键

    插入一些数据:
    insert into class values(0, "python01", 45), (0, "python02", 50), (0, "python03", 60);
    insert into students values(0, "jason", 1, 1);
    insert into students values(0, "lily", 1, 10);  # 此条语句报错
    insert into students values(0, "curry", 1, 2);
    关联查询:
    select students.name,class.name from class inner join students on class.id=students.classid;
    select students.name,class.name from class left join students on class.id=students.classid;

    分类:
    1. 表A inner join 表B
        表A与表B匹配的行会出现在结果集中
    2. 表A left join 表B
        表A与表B匹配的行会出现在结果集中,外加表A中独有的数据,未对应的数据使用null填充
    3. 表A right join 表B
        表A与表B匹配的行会出现在结果集中,外加表B中独有的数据,未对应的数据使用null填充

七. 数据备份,恢复
1. 数据备份
    1) 备份表结构+数据
        mysqldump -u root -p test > test.dump  # 备份test数据库
    2) 只备份表结构
        mysqldump --no-data --databases db1 db2 eb3 > test.dump  # 备份db1,db2,db3的表结构
        或
        mysqldump -u root -p -d test > test.dump  # 备份test的表结构
    3) 备份所有数据库
        mysqldump --all-databases > test.dump
2. 数据恢复
    1) 系统命令行恢复
        mysqldump -u root -p test > test.dump  # 执行这条语句备份(有问题,暂时情况是终端没报错,但数据没有恢复到db2中)
        mysqldump -uroot -p -d db2 < test.dump  # 将备份的数据恢复到本地的db2数据库(db2已经存在且为空,新建的即可)
    2) mysql命令行恢复
        mysqldump -u root -p test > test.dump # 执行这条语句备份
        mysql> use db1;
        Database changed
        mysql> show tables;
        Empty set (0.00 sec)
        mysql> source test.dump;  # source后可以接绝对路径,如果不用绝对路径,那么要先切换到test.dump所在的目录
        mysql> show tables;  # 可以看到备份文件中的表已经恢复
        +---------------+
        | Tables_in_db1 |
        +---------------+
        | class         |
        | juniorStus    |
        | student       |
        +---------------+
        3 rows in set (0.00 sec)

八. 补充内容
    1. 重置密码
    1)windows
        net stop mysql  # 停止服务
        mysqld --skip-grant-tables  # 以跳过授权表的方式启动服务
        mysql -uroot -p  # 直接回车登录不需要输入密码
        update mysql.user set authentication_string =password(‘新密码‘) where User=‘root‘;  # 设置新密码
    2)linux/mac
        ./mysqld_safe --skip-grant-tables  # 安装mysql的bin目录下执行
        mysql -uroot -p  # 直接回车登录
        update mysql.user set authentication_string =password(‘新密码‘) where User=‘root‘;
    2. 创建用户and授权
    root身份登录,然后进入mysql数据库下操作
    mysql> use mysql
    Database changed
    1)新用户的增删改
        新增: create user ‘用户名‘@‘ip地址‘ identified by ‘用户密码‘;
        删除: drop user ‘用户名‘@‘ip地址‘;
        修改:
            rename user ‘用户名‘@‘IP地址‘ to ‘新用户名‘@‘IP地址‘;
            set password for ‘用户名‘@‘IP地址‘=Password(‘新密码‘);
        示例:
        # 指定允许ip:192.118.1.1的jason用户登录
        create user ‘jason‘@‘192.168.1.10‘ identified by ‘123‘;
        # 指定允许ip:192.118.1.开头的jason用户登录
        create user ‘jason‘@‘192.168.1.%‘ identified by ‘123‘;
        # 指定允许任何ip的jason用户登录
        create user ‘jason‘@‘%‘ identified by ‘123‘;
    2)用户权限管理
        新增用户默认是没有任何权限的,不能查看数据库,表...
        查看权限: show grants for ‘用户名‘@‘ip地址‘;
        授予权限: grant operation on dbname.tablename to ‘用户名‘@‘ip地址‘;
        取消权限: revoke operation on dbname.tablename from ‘用户名‘@‘ip地址‘;
        示例:
        # 授权jason用户仅对test.students文件有查询、插入和更新的操作
        grant select,insert,update on test.students to "jason"@‘%‘;
        # 表示有所有的权限,除了grant这个命令,这个命令是root才有的. jason用户对test下的students文件有任意操作
        grant all privileges on test.students to "jason"@‘%‘;
        # jason用户对test数据库中的文件执行任何操作
        grant all privileges on test.* to "jason"@‘%‘;
        # jason用户对所有数据库中文件有任何操作
        grant all privileges  on *.*  to "jason"@‘%‘;
        # 取消权限
        # 取消jason用户对test的students文件的任意操作
        revoke all on test.students from ‘jason‘@"%";
        revoke all on test.* from ‘jason‘@"%";
        revoke all on *.* from ‘jason‘@"%";

原文地址:https://www.cnblogs.com/xiao-xue-di/p/9673974.html

时间: 2024-10-03 01:00:25

MySQL基本命令总结的相关文章

MySQL基本命令脚本

MySQL基本命令脚本:  一.基本命令 1.启动服务: 说明:以管理员身份运行cmd 格式:net start 服务名称 示例:net start mysql57; 2.停止服务: 说明:以管理员身份运行cmd 格式:net stop 服务名称 示例:net stop mysql57; 3.连接数据库: 格式:mysql -u 用户名 -p 示例:mysql -u root -p; 输入密码(按照mysql时设置的) 4.退出登录(断开连接): quit;或exit; 5.查看版本(连接后可以

2. mysql 基本命令

1. 连接登录 mysql   [-h 主机地址 ]  -u用户名  -p用户密码 mysql   -S   /var/lib/mysql/mysql.sock                //对于多个数据库时,可以指定sock文件来连接相应的数据库 也可直接将它写入:/etc/my.cnf [ mysql ] prompt=\[email protected]\h(\d)>                           //指定提示符 socket=/var/run/mysqld/my

mysql初学,mysql修改,mysql查找,mysql删除,mysql基本命令

Mysql 下载地址https://dev.mysql.com/downloads/mysql/ 1.连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码. 如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,M

MySQL基本命令

Mysql安装方式 MySQL安装方式有三种,一种是RPM方式安装,一种是源码编译安装,一种是通用二进制格式包安装. RPM方式安装,可以直接使用yum命令安装或者下载RPM包后再安装 yum安装命令: yum -y install mysql-server 系统会自动解决依赖关系,并将mysql客户端也安装上. mysql交互模式中的命令类别: 客户端命令:在客户端执行的命令 服务器命令:在服务器上执行,并将结果返回给客户端.必须使用语句结束符,默认为封号";" MySQL数据库:

linux下mysql基本命令

1, 创建mysqld数据库的管理用户:   要把root用户设置为管理员,我们应该运行下面的命令: # mysqladmin -u root password 123456 一般情况下,mysqladmin所在目录已经加到$PATH中,如果该命令没有找到,查看软件包安装是否正确 确保Mysql-server和Mysql-client两个软件包都已经安装成功 然后可以rpm -qf Mysql-client查看该命令安装到那个目录中,将该目录加到$PATH变量中,或者使用全路径. 这里的root

MySQL基本命令操作

操作系统:CentOS 数据库系统:MySQL [[email protected]~]# mysql -h localhost  -P  3306 -uroot –p    #注意端口号前的P是大小 mysql>select version(),current_date;   #检索当前数据库版本和当前时间 +----------------+--------------+ |version()      | current_date | +----------------+---------

mysql 基本命令(3)-数据类型和运算符

一.数值类型 1.数据类型有:数值类型.日i期类型.字符串类型. 2.int(20),int 指整数的取值范围,里面的参数20,只是表示数据显示的宽度.显示宽度和数据类型的取值范围是无关的.显示宽度只是指明mysql最大可能显示的宽度,如果插入的数据大于显示宽度的值,只要该值不超过 该数据类型的取值范围,数值依然可以插入,而且还能全部显示出来.例如:规定 id int(4),插入一个数值123456到id,显示的还是123456,和宽度无关.数据类型的宽度可以指定也可以不指定,不指定,系统会根据

MySql 基本命令

一 MySQL命令行工具  (查看帮助 ---help,或 -?) 1)MySQL MySQL是一个简单的SQL外壳(有GNU readline功能).它支持交互式和非交互式使用.当交互使用时,查询结果采用ASCII表格式.当采用非交互式(例如,用作过滤器)模式时,结果为tab分割符格式.可以使用命令行选项更改输出格式.如果由于结果较大而内存不足遇到问题,使用--quick选项.这样可以强制MySQL从服务器每次一行搜索结果,而不是检索整个结果集并在显示之前不得不将它保存到内存中.(MySQLD

mysql基本命令(转)

1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码. 如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql> 2.连接到远程主机上的MYSQL.假设远程主机的IP为:11