MySQL数据库基本SQL语句教程之高级操作

目录
  • 前言:
  • 一.克隆表
    • 1.1克隆方法一(将表与内容分开克隆)
    • 1.2克隆方法二(将表与内容一起复制)
  • 二.清空表,删除表内的所有数据
    • 2.1方法一
    • 2.2方法二
    • 2.3小小结之drop,truncate,eleted的对比
  • 三.创建临时表
  • 四.用户管理
    • 4.1新建用户
    • 4.2使用明文密码创建用户
    • 4.3使用密文创建数据库
  • 五.查看用户信息
  • 六.重命名用户
  • 七.删除用户
  • 八.密码管理
    • 8.1修改当前用户密码
    • 8.2修改其他用户的密码
    • 8.3忘记root密码
      • 8.3.1给root设置密码
  • 九.数据库授权
    • 9.1关于授权
    • 9.2授权
      • 9.2.1授权列表
    • 9.3数据库授权
    • 9.4远程登陆授权(使用navicat远程登陆)
    • 9.5撤销权限
  • 十.总结

前言:

了解了一下MySQL数据库的基本语句,这章了解一下它的高级操作,包括用户增删除与给予相对应的权限

一.克隆表

1.1克隆方法一(将表与内容分开克隆)

#​create table 新表名 like 复制的表名;  ​
​复制格式,能将复制表的格式到新表,但是里面的内容无法复制​

​insert into 新表名 select * from 复制的表名; ​
​复制原表内容到新表

1.2克隆方法二(将表与内容一起复制)

create table 新表名 (select * from 复制的表名)
​数据结构和数据能一起复制

二.清空表,删除表内的所有数据

2.1方法一

delete from naixu1;
#DELETE清空表后,返回的结果内有删除的记录条目;
delete
工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM
删除所有记录后,在此添加的记录会从原来最大的记录id后面继续自增写入数据

2.2方法二

truncate table naixu1;
#TRUNCATE清空表后,没有返回被删除的条目:TRUNCATE
工作时是将表结构按原样重新建立
因此在速度上TRUNCATE会比DELETE清空表快
使用TRUNCATE TABLE 清空表内数据后,id会从1开始重新记录

2.3小小结之drop,truncate,eleted的对比

drop truncate delete
属于DDL 属于DDL 属于DML
不可回滚 不可回滚 可回滚
不可带where 不可带where 可带where
表内容和结构删除 表内容删除 表结构在,表内容要看where执行的情况
删除速度快 删除速度快 删除速度慢,需要逐行删除

总结:

不再需要一张表的时候用drop想删除部分数据行的时候用delete,并且带上where子句保留表而删除所有数据的时候用truncate删除速度:drop>truncate> delete安全性 delete 最好

三.创建临时表

##添加临时表niaxu3
create temporary table naixu3 (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));

## 查看当前库中所有表
show tables;
##在临时表中添加数据
insert into test03 values(1,'hehe',12345,'看美女');
##查看当前表中所有数据
select * from naixu3;
##退出数据库
quit      

##重新登录后进行查看
mysql -u root -p
##查看之前创建的临时表中所有数据,发现已经被自动销毁
select * from naixu3; 

四.用户管理

4.1新建用户

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];

#‘用户名':指定将创建的用户名
#‘来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
#‘密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
#######若使用加密密码,需要先使用SELECT PASSWORD(‘密码'); 获取密文,再在语句中添加 PASSWORD ‘密文';
#若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)

4.2使用明文密码创建用户

create user 'nannan'@'localhost' identified by '123455';

4.3使用密文创建数据库

五.查看用户信息

创建后的用户保存在 mysql 数据库的 user 表里

use mysql;   #使用mysql库
select User from user;

六.重命名用户

rename user 'nannan'@'localhost' to 'lnhs'@'localhost';
#将用户nannan改名为lnhs

七.删除用户

drop user 'chenchen'@'localhost';
#删除用户chenchen

八.密码管理

8.1修改当前用户密码

set password = password('123456');

8.2修改其他用户的密码

set password for 'naixu'@'localhost' = password('123456');

8.3忘记root密码

修改配置文件,添加配置,免密登录MySQL
vim /etc/my.cnf
skip-grant-tables #添加,使登录mysql不适用授权表

8.3.1给root设置密码

update mysql.user set authentication_string = password('123456') where user='root';
flush privileges;  #刷新 

登入数据库之后再次修改my.conf配置文件,注释掉之前添加的配置命令,并再次重启服务
使用新密码登录

九.数据库授权

9.1关于授权

  GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将    会创建新的用户;当指定的用户名存在时,GRANT 语句用于修改用户信息。

9.2授权

GRANT 权限列表 ON 数据库名/表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
权限列表 用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。
数据库名.表名 用于指定授权操作的数据库和表的名称,其中可以使用通配符
用户名@来源地址 用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.accp.com”、“192.168.80.%”等。
IDENTIFIED BY 用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分,则用户的密码将为空。

9.2.1授权列表

权限 功能
select 查询数据
insert 插入数据
update 更新数据
delete 删除数据
create 创建库、表
drop 删除库、表
index 建立索引
alter 更改表属性
event 事件
trigger on 创建触发器

9.3数据库授权

show grants for nannan@localhost;
#查看用户权限

指定用户可以查看哪个数据库或表,别的无法访问

grant select on hehe.* to nannan@localhost;
#用户nannan只有hehe库下所有表的查询权限

切换用户进行验证

9.4远程登陆授权(使用navicat远程登陆)

grant all on *.* to 'nannan'@'%' identified by '123456';

9.5撤销权限

revoke select on hehe.* from nannan@localhost;

再次切换访问,就已经没有权限了

十.总结

本章和拐友们讲解MySQL的高阶语句,包括了如何克隆表,如何进行用户的增删改以及用户的权限设置,总的来说就是只要记住3点增删改就行

到此这篇关于MySQL数据库基本SQL语句教程之高级操作的文章就介绍到这了,更多相关MySQL SQL语句高级操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL高级进阶sql语句总结大全

    目录 SELECT DISTINCT WHERE ANDOR IN BETWEEN 通配符 LIke ORDERBY 函数 city表格 字符串函数 常用函数实例: concat substr trim region replace groupby having 别名 子查询 exists 表链接 使用子查询实现多表查询 createview union 交集值 无交集值 case 空值(null)和无值(’')的区别 正则表达式 存储过程 创建存储过程 存储过程的参数 查看存储过程 删除存储过

  • MySQL一些常用高级SQL语句

    MySQL高级SQL语句 use kgc; create table location (Region char(20),store_name char(20)); insert into location values ('East','Boston') ; insert into location values ('East','New York'); insert into location values ('west','Los Angeles'); insert into locati

  • MySQL一些常用高级SQL语句详解

    目录 一.MySQL进阶查询 二.MySQL数据库函数 三.MySQL存储过程 总结 一.MySQL进阶查询 首先先创建两张表 mysql -u root -pXXX #登陆数据库,XXX为密码 create database jiangsu; #新建一个名为jiangsu的数据库 use jiangsu; #使用该数据库 create table location(Region char(20),Store_name char(20)); #创建location表,字段1为Region,数据类

  • MySQL数据库基本SQL语句教程之高级操作

    目录 前言: 一.克隆表 1.1克隆方法一(将表与内容分开克隆) 1.2克隆方法二(将表与内容一起复制) 二.清空表,删除表内的所有数据 2.1方法一 2.2方法二 2.3小小结之drop,truncate,eleted的对比 三.创建临时表 四.用户管理 4.1新建用户 4.2使用明文密码创建用户 4.3使用密文创建数据库 五.查看用户信息 六.重命名用户 七.删除用户 八.密码管理 8.1修改当前用户密码 8.2修改其他用户的密码 8.3忘记root密码 8.3.1给root设置密码 九.数

  • Navicat Premium操作MySQL数据库(执行sql语句)

    一. Navicat 简介 1. 什么是Navicat ? Navicat是一个强大的MySQL数据库管理和开发工具.Navicat为专业开发者提供了一套强大的足够尖端的工具,但它对于新用户仍然是易于学习.Navicat,使用了极好的图形用户界面(GUI),可以让你用一种安全和更为容易的方式快速和容易地创建.组织.存取和共享信息.用户可完全控制 MySQL 数据库和显示不同的管理资料,包括一个多功能的图形化管理用户和访问权限的管理工具,方便将数据从一个数据库移转到另一个数据库中(Local to

  • Mysql数据库之sql基本语句小结

    本文实例讲述了Mysql数据库之sql基本语句.分享给大家供大家参考,具体如下: SQL基本语句 1.登录退出及快捷键: (1)快捷键: ----快速回到行首 ctrl + a ----回到行末 ctrl + e ----清屏 ctrl + l ----结束 ctrl + c + 空格 (2)连接数据库: ----显示密码 mysql -uroot -pmysql ----不显示密码 mysql -uroot -p 输入密码 (3)退出数据库: quit/exit/ctrl + d (4)部分命

  • MySQL常用基本SQL语句总结

    1. 常见命令 连接本地数据库与远程数据库(172.16.xx.xx:3306): mysql -h localhost -u root -p123 mysql -h 172.16.xx.xx -P 3306 -u root -p 2. DDL 数据定义语言(Data Definition Lanuage, DDL)定义了数据库模式,包括CREATE.ALTER.DROP.TRUNCATE.COMMENT与RENAME语句. 创建(CREATE) create语句创建了一张表: CREATE T

  • Oracle数据库中SQL语句的优化技巧

    在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. /*+FIRST_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.

  • MySQL中使用SQL语句对字段进行重命名

    MySQL中,如何使用SQL语句来对表中某一个字段进行重命名呢?我们将使用alter table 这一SQL语句. 重命名字段的语法为:alter table <表名> change <字段名> <字段新名称> <字段的类型>. 现在我们来尝试把test表中的t_name字段重命名为t_name_new字段. 1.首先查看一下当前test表的结构 mysql> describe test; +------------+-------------+---

  • MySQL中使用SQL语句查看某个表的编码方法

    MySQL中,如何使用SQL语句来查看某个表的编码呢?我们使用show create table 这一SQL语句来解决这个问题. show create table可以查看创建这个表的SQL语句脚本,它的基本语法是: show create table <表名>; 我们用它看看test表的create脚本: mysql> show create table test; +-------+--------------------------------------------- -----

  • 详解JAVA生成将图片存入数据库的sql语句实现方法

    详解JAVA生成将图片存入数据库的sql语句实现方法 实现代码: 注释很清楚,不在重述~ public class Image2Hex { public static void main(String[] args) { try{ //存放图片的文件夹 File list = new File("d:/qmx"); File[] lists = list.listFiles(); String name; //生成的语句存放文件 PrintWriter pw = new PrintWr

  • mybatis 通过拦截器打印完整的sql语句以及执行结果操作

    开发过程中,如果使用mybatis做为ORM框架,经常需要打印出完整的sql语句以及执行的结果做为参考. 虽然mybatis结合日志框架可以做到,但打印出来的通常都是sql和参数分开的. 有时我们需要调试这条sql的时候,就需要把参数填进去,这样未免有些浪费时间. 此时我们可以通过实现mybatis拦截器来做到打印带参数的完整的sql,以及结果通过json输出到控制台. 直接看代码和使用方法吧: MyBatis拦截器打印不带问号的完整sql语句拦截器 import java.text.DateF

  • Oracle如何在SQL语句中对时间操作、运算

    目录 0.date与timestamp 1.获取系统当前时间 2.ORACLE里获取一个时间的年.季.月.周.日的函数: 3.日期操作 4.常用的时间戳 5.查询某时间范围 总结 0.date与timestamp 1)区别 date精确到年月日时分秒,timestamp更精确一些: 但这个不重要,重要的是,实践中我从Oracle数据库取date类型字段,前端展示时分秒都是0,网上说数据库类型是date取到前端就是这样,只能精确到日,后面都是默认填0:我给字段换成timestamp确实问题解决了,

随机推荐

其他