Mysql数据库(三)——mysql数据库高级操作
Mysql数据库(三)——mysql数据库高级操作
- 一、指定主键的另一种方式
- 二、克隆/复制一个表
- 1、方法一
- 2、方法二
- 三、清空表,删除表内数据
- 1、方法一
- 2、方法二
- 3、方法三
- 4、三个删除方法的对比
- 四、创建临时表
- 五、mysql常见约束
- 六、外键约束
- 1、外键的定义
- 2、作用
- 3、主表和从表
- 4、主表和从表的操作原则和示范
- ①、首先创建两张表,并且其中一张表的字段和另一张表的主键相同
- ②、向表内添加数据内容
- ③、为主表添加主键约束,并为从表添加外键
- ④、查看结构情况显示外键关联
- ⑤、插入数据(先主表,再从表)
- ⑥、删除数据记录(先从表,后主表)
- ⑦、如果要删除外键约束字段(先删除外键约束,再删除外键名)
- 七、数据库用户管理
- 1、新建用户
- 2、查看用户信息
- 3、重命名用户
- 4、删除用户
- 5、修改当前登录用户密码
- 6、修改其他用户密码
- 7、mysql的root登录密码忘记了处理办法
- ①、修改配置文件,改成免密登录,并重启mysql服务
- ②、免密登录mysql,使用 update 修改 root 密码,并刷新数据库
- ③、退出数据库,注释掉配置文件中的免密登录项,并重启mysql服务
- 八、数据库用户授权
- 1、授予权限
- 2、查看权限
- 3、撤销权限
- 总结
- 1、需要了解的5个项:
- 2、关于克隆一个表的操作
- 3、清空表操作
- 4、临时表
- 5、mysql的6个常见约束方式
- 6、关于外键的定义、作用和主表从表的一些操作注意点
- 7、用户管理
一、指定主键的另一种方式
use lucien;create table if not exists ljm (
id int(4) zerofill primary key auto_increment,
student_name varchar(20) not null,
cardid varchar(18) not null unique key,
hobby varchar(50));
if not exists | 表示检测要创建的表是否存在,如果不存在就创建表 |
---|---|
int(4) zerofill | 表示若数值不满4位数,则前面用“0”填充 |
auto_increment | 表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次 |
unique key | 表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键 |
not null | 表示此字段不允许为NULL |
二、克隆/复制一个表
1、方法一
create table 新表名 like 复制的表名; #复制格式,能够复制表的格式到新表,但是没有内容
insert into 新表名 select * from 复制的表名; #复制原表内容到新表
2、方法二
create table 新表名 (select * from 复制的表名)
三、清空表,删除表内数据
1、方法一
delete from 表名;#delete清空表后,返回的结果内有删除的记录条目;delete工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用delete from 删除所有记录后,再次新添加的记录会从原来最大的记录 ID 后面继续自增写入记录
2、方法二
truncate table 表名;#truncate 清空表后,没有返回被删除的条目;truncate 工作时是将表结构按原样重新建立,因此在速度上 truncate 会比 delete 清空表快;使用 truncate table 清空表内数据后,ID 会从 1 开始重新记录。
3、方法三
drop table [数据库名.]表名;#drop 属于直接删除表,比较暴力
4、三个删除方法的对比
- 论删除速度而言:
- drop 为直接删除表
- truncate 为直接摧毁重构
- delete 为逐条删除
- 因此 drop > truncate > delete
- 就安全性而言:
- drop 和 truncate 都是不保留有记录的,不便于数据的恢复
- delete 因为有删除操作的每一个步骤,因此当误删的时候可以根据日志进行恢复操作
- 因此 delete 的安全性最好
四、创建临时表
- 临时表创建成功之后,使用 show tables 命令是看不到创建的临时表的,临时表会在连接退出后被销毁。
- 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 drop table 语句手动直接删除临时表。
- 同时,临时表也无法创建外键。
create temporary table 表名 (字段1 类型,字段2 类型 [,primary key (主键名)]);
五、mysql常见约束
主键约束 | primary key |
---|---|
外键约束 | foreign key |
非空约束 | not null |
唯一约束 | unique [key |
默认值约束 | default |
自增约束 | auto_increment |
六、外键约束
1、外键的定义
- 外键的定义:如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外键。
2、作用
- 创建外键约束的作用:保证数据的完整性和一致性
3、主表和从表
1、以公共关键字作为主键的表为主键表(父表、主表)
2、以公共关键字作为外键的表为外键表(从表、外表)
注意:与外键关联的主表的字段必须设置为主键,要求从表不能是临时表,主从表的字段具有相同的数据类型、字符长度和约束
4、主表和从表的操作原则和示范
①、首先创建两张表,并且其中一张表的字段和另一张表的主键相同
②、向表内添加数据内容
③、为主表添加主键约束,并为从表添加外键
④、查看结构情况显示外键关联
⑤、插入数据(先主表,再从表)
⑥、删除数据记录(先从表,后主表)
⑦、如果要删除外键约束字段(先删除外键约束,再删除外键名)
七、数据库用户管理
1、新建用户
create user '用户名'@'来源地址' [identified by [passwd] '密码'];
- 用户名:指定将创建的用户名
- 来源地址:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录
- 可用通配符%
- 可使用通配符 %
- 密码’:若使用明文密码,直接输入’密码’,插入到数据库时由Mysql自动加密;
- 若使用加密密码,需要先使用SELECT PASSWORD(‘密码’); 获取密文,再在语句中添加 PASSWORD ‘密文’;
- 若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)
2、查看用户信息
use mysql;select User,authentication_string,Host from user;
3、重命名用户
rename user 'lisi'@'localhost' to 'wangwu'@'localhost';select User,authentication_string,Host from user;
4、删除用户
drop user 'wangwu'@'localhost';select User,authentication_string,Host from user;
5、修改当前登录用户密码
set password = password('123456');
quit
mysql -u root -p
6、修改其他用户密码
set password for 'zhangsan'@'localhost' = password('111111');
use mysql;
select User,authentication_string,Host from user;
7、mysql的root登录密码忘记了处理办法
①、修改配置文件,改成免密登录,并重启mysql服务
②、免密登录mysql,使用 update 修改 root 密码,并刷新数据库
③、退出数据库,注释掉配置文件中的免密登录项,并重启mysql服务
八、数据库用户授权
1、授予权限
grant 提权
grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' [identified by '密码'];
- 权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如 “select,insert,update” 。使用 “all” 表示所有权限,可授权执行任何操作。
- 数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符 * 。lucien.* 表示授权操作的对象为lucien数据库中的所有表。
- ‘用户名@来源地址’:用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP 地址,还可以使用 “%” 通配符,表示某个区域或网段内的所有地址,如 “%.lucien.com” 、“192.168.184.%” 等。
- identified by:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略 “identified by” 部分, 则用户的密码将为空。
2、查看权限
show grants for 用户名@来源地址;
3、撤销权限
revoke 权限列表 on 数据库名.表名 from 用户名@来源地址;
总结
- 这一章节,我们需要了解一些简单的 DBA 的高级操作
1、需要了解的5个项:
- if not exists:表示检测要创建的表是否存在,如果不存在就创建表
- int(4) zerofill:表示若数值不满4位数,则前面用“0”填充
- auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
- unique key:表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键
- not null:表示此字段不允许为NULL
2、关于克隆一个表的操作
- 有两种方法可进行克隆/复制一个表
- 方法一:先复制格式再复制内容
- create table 新表名 like 复制的表名;
- insert into 新表名 select * from 复制的表名;
- 方法二:直接全部复制(包括格式和内容)
- create table 新表名 (select * from 复制的表名)
3、清空表操作
- 有三种方式:delete、truncate 和 drop
- 三种操作的对比:
- 删除速度:drop > truncate > delete
- 安全性:delete 最好
4、临时表
- 临时表创建成功之后,使用 show tables 命令是看不到创建的临时表的,临时表会在连接退出后被销毁。
- 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 drop table 语句手动直接删除临时表。
- 同时,临时表也无法创建外键。
- 创建方式:
- create temporary table 表名 (字段1 类型,字段2 类型 [,primary key (主键名)]);
5、mysql的6个常见约束方式
- 主键约束:primary key
- 外键约束:foreign key
- 非空约束:not null
- 唯一约束:unique [key
- 默认值约束:default
- 自增约束:auto_increment
6、关于外键的定义、作用和主表从表的一些操作注意点
- 定义:我把外键简单理解为外部表格的主键。
- 作用:保证数据的完整性和一致性。能更好的避免误删的情况出现。
- 添加主键约束:
- alter table fengchu add constraint PK_cardid primary key(cardid);
- 添加外键:
- alter table wolong add constraint FK_card foreign key(cardid) references fengchu(cardid);
- 主表和从表:
- 主表:公共关键字作为主键的表
- 从表:公共关键字作为外键的表
- 操作注意点:
- 插入数据时,先主表,后从表
- 删除数据时,先从表,后主表
- 删除约束字段:先删除外键约束,再删除外键名
- alter table wolong drop foreign key FK_card;
- alter table wolong drop key FK_card;
7、用户管理
- ‘用户名’@'来源地址’是一个整体,不管是创建、删除、重命名、改密码等操作
- 所有的 mysql 用户信息都存放在 mysql 库的 user 表中,可使用 select User,authentication_string,Host from user;查看
- 关于root龙湖忘记登录数据库的密码,修改完配置文件后,免密登录mysql之后,并没有提权,所以我们不能直接使用set 来修改密码,需要使用 update mysql.user set authentication_string = password(‘010230’) where user=‘root’;
- 在给用户授权的时候,可以使用通配符代表所有。
- 不建议省略 “identified by” 部分,因为这样就代表不需要密码登录,会很不安全。
- 才进行撤销权限操作的时候,最后剩下的USAGE代表登录权限,为不可回收权限。
Mysql数据库(三)——mysql数据库高级操作相关推荐
- MySQL默认INFORMATION_SCHEMA,MySQL,TEST三个数据库用途(转)
本文简要说明了MySQL数据库安装好后自带的INFORMATION_SCHEMA,MySQL,TEST三个数据库的用途. 第一个数据库INFORMATION_SCHEMA:提供了访问数据库元数据的方式 ...
- 【MySQL 第三天数据库表 增删改查】
[MySQL 第三天数据库表 增删改查]] [1]mysql数据库表创建命令 [2]mysql查看数据库下的表命令 [3]mysql查看表内容命令 [4]mysql修改数据库表 [4.1]mysql添 ...
- oracle mssql 实例,oracle,mysql,SqlServer三种数据库的分页查询的实例
MySql: MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了. LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数, ...
- MySQL(三)数据库的六种约束、表的关系、三大范式
文章目录 数据库约束 NOT NULL(非空约束) UNIQUE(唯一约束) DEFAULT(缺省约束) PRIMARY KEY(主键约束) AUTO_INCREMENT 自增 FOREIGN KEY ...
- mysql单表操作_深入学习之mysql(三)单表操作
1.创建表的结构和数据 CREATE TABLE `t_student`( `id` INT PRIMARY KEY, `stuName` VARCHAR(10) NOT NULL, `age` IN ...
- mysql(三)表的操作
写在前面,因为通常sql中使用的注释在这里会显示成"–"所以用Java中的单行注释//来代替注释. 1.创建表: 创建表的语法形式: CREATE TABLE table_name ...
- MongoDB数据库(二:高级操作)
练习一.完成使用Java代码连接MOngoDB,创建集合,获取集合,插入文档,检 索所有文档,更新文档,删除第一个文档. a)连接MOngoDB b)创建集合 c)获取集合 d)插入文档 e)检索所有 ...
- Hive(三)hive的高级操作
一.hive的各种join操作 语法结构: join_table: table_reference JOIN table_factor [join_condition] | table_referen ...
- 转载: 8天学通MongoDB——第三天 细说高级操作
今天跟大家分享一下MongoDB中比较好玩的知识,主要包括:聚合,游标. 一: 聚合 常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce. &l ...
- 8天学通MongoDB——第三天 细说高级操作
原文地址:http://www.cnblogs.com/huangxincheng/archive/2012/02/21/2361205.html 今天跟大家分享一下mongodb中比较好玩的知识,主 ...
最新文章
- CentOS 安装docker.ce报错提示containerd.io >= 1.2.2-3问题
- ACR2010_依那西普改善RA患者骨代谢
- 异步消息队列zeromq实现服务器间高性能通信
- java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句
- MINA系列学习-IoAccpetor
- 利用commons-fileupload 上传图片(包含表单数据)
- (原)给定输入,输出全排列
- pppoe移植到arm上 1.0
- 按钮旁边加一个提示_地铁站的那些“红色按钮”,你知道是干啥用的吗?乱按可能被拘留...
- 按月拆分数据库表--oracle
- 利用计算机语言实现ID3算法,机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf...
- day69 Django--Form组件
- power bi 背景图_Power BI桌面脉冲图
- 快速ping_PING你真的会用么?
- hadoop大数据概述
- 什么是DC-DC转换器?DC-DC转换器是如何命名的?
- rstp 小米网络摄像头_小蚁摄像头实时同步视频到群晖 nas(2)—— 使用 rtsp 协议同步...
- 阳春3月,这个技术博客要暂停1月!!!!
- android使用磁场传感器和加速度传感器确定当前朝向(即:方位角),以及常见问题的解决办法
- Mac安装brew/yum