返回顶部
首页 > 资讯 > 数据库 >MySQL的进阶部分
  • 601
分享到

MySQL的进阶部分

2024-04-02 19:04:59 601人浏览 泡泡鱼
摘要

1.Mysql的表的约束 (1)数据完整性的介绍:   所谓的数据的完整性就是,数据的准确性和可靠性。可以通过添加完整性约束来提高数据的完整性: 实体完整性:为每一个实体(记录)确定一个唯一标识。 实现

1.Mysql的表的约束

(1)数据完整性的介绍:

  所谓的数据的完整性就是,数据的准确性和可靠性。可以通过添加完整性约束来提高数据的完整性:

  • 实体完整性:为每一个实体(记录)确定一个唯一标识。
    • 实现方式:主键约束、唯一约束、主键自增
  • 域完整性:表示字段是完整的
    • 实现方式:字段的类型、非空约束、默认值
  • 引用完整性:参照表和被参照表
    • 实现方式:外键约束
  • 自定义完整性:自定义某些字段的范围
    • 实现方式:检查约束(mysql暂不支持)

(2)表字段添加约束和删除

主键约束
  要求:要求主键列数唯一,并且不能为空,主键可以包含表的一列或多列(可以是一个列成为主键,也可以是几个列组合成为主键)。尽量不要选择业务数据为主键。
   作用:主键是唯一能确定一行数据的字段。
创建主键的三种方式:

#例1:
#创建字段的时候添加约束
create table stu(
id int primary key ,
sname varchar(20));
#例2:
#最后添加约束
create table stu(
id int ,
sname varchar(20),
primary key(id));
#例3
#表已经创建,然后添加约束
create table stu(
id int  ,
sname varchar(20));
alter table stu add constraint ky_id primary key(id);

ps:如果想加入主键自增,只需要在primary key 后面加入:auto_increment

删除主键约束:

#删除主键约束,首先要删除他的主键自增,然后在删除:
alter table stu modify id int //删除主键自增
alter table stu drop primary key;  //删除主键约束

唯一约束
  要求:要求该列唯一,允许为一个空。

#例:
alter table stu add constraint unique(sname) 

删除唯一约束

#在删除唯一约束时,首先需要删除索引,因为在创建唯一约束时默认会创建一个索引
alter table stu drop index sname
alter table stu drop index 唯一约束名

非空约束
  要求:某类内容不允许为空
  语法:name varchar(50) not null
默认值
  要求:当字段没有给固定的值得时候,自动赋初值。
  语法:name varchar(50) default ‘zs’;
外键约束
  要求:一个表中的某个字段必须与另一张表中的某个字段相等,如果不相等,或者另一张表没有这个值,则存储失败。
  语法:foreign key(表的字段) references 外表名(字段)

#例:添加外键约束
alter table table1 add constraint foreign key(需要设为外键的字段) references  table2(父表的关联字段)

(3) 举例:

CREATE TABLE `t_book` (
  `bid` int(10) NOT NULL,
  `bname` varchar(50) NOT NULL,
  `price` double DEFAULT NULL,
  `author` varchar(50) DEFAULT NULL,
  `authorid` int(10) DEFAULT NULL,
  PRIMARY KEY (`bid`),
  UNIQUE KEY `author` (`author`)
) ;

2.Mysql的索引

  描述:在数据库中用来加速对表的查询,通过使用快速路径访问的方法,快速定位数据,减少了磁盘的io
  类型:B-Tree索引、位图索引、哈希索引。在不同的存储引擎中对索引的存储策略不同:
    - Myisam引擎:叶子节点中保存记录的地址
    - Innodb引擎:叶子节点中直接保存相应的数据。(B+树索引)
   索引的优点:建立索引可以加快查询的速度,而降低增、删、改的效率。
   索引的创建:索引的创建分为两种:自动创建和手动创建:
     - 自动创建:当在表中定义了一个主键,或者唯一约束时,数据库会自动的创建一个对应的唯一索引。
     - 手动创建:

#普通索引
create index index_name on t_name(field)
#唯一索引
create unique index index_name on t_name(field)
#复合索引
create  index index_name on t_name(field1,field2)

   索引的使用条件:当通过设置索引的字段作为过滤条件时查询的语句,才会用到索引。
   索引的效率
在查询时使用:explain select * from emp where ename='scott'; explain关键字用于查看索引的效率:
MySQL的进阶部分
关于type的级别:
MySQL的进阶部分
   使用索引的注意点
    - 索引与表是分开保存的,会占用大量的磁盘空间
    - 索引改善了检索数据的性能,但是降低了增、删、改数据的性能。
    - 限制索引中索引数目。索引越多,数据库的工作量越大
    - 索引用于数据过滤和数据排序(表的数据量比较大,经常使用某些字段做排序和查询,建立索引)

3.MySQL的视图

   介绍:视图是从若干个表和其他视图中构造出来的虚表,并非是以物理文件保存数据,在执行过程中动态从基表中获取数据,以表为底层。

#例:创建视图
create view v_viem as select * from emp1 where deptno =20;
#修改视图:
update v_viem set deptno=10;
#查询视图
select * from v_viem;
注意:视图一般不建议进行删除、修改操作,因为他会影响到基表。以上的案例表示:如果修改了创建视图的条件字段,但是视图在查询时还按照原有的条件查询,会导致查询的数据不准确。
# 控制视图 不能修改字段:
CREATE 
    OR REPLACE VIEW v_emp AS SELECT
    * 
FROM
    emp 
WHERE
    deptno = 20 WITH CHECK OPTION;
    注意:使用上面的方式,创建视图,如果想对视图的条件字段进行修改,就会出现:
1369 - CHECK OPTION failed 'db1807.v_emp',错误。

   对视图的操作

#查询视图
select * from v_emp;
#在视图中插入数据
insert into v_emp(field1,field2,field3) values(value1,value2,value3)
#重建视图
create or REPLACE view t_view as select * from emp where sal >2000
#销毁视图
drop view view_name

   视图的优点:
    - 安全性:bao保密敏感字段
    - 提高查询效率
    - 定制化SQL:可以将多张表中经常被使用的数据放置在视图中,快速查询。

4.MySQL的创建用户与授权

  本来以为这部分不重要,不,应该说不会是自己去操作MySQL的DCL,因为公司都有自己的数据库管理员,咱们使用MySQL都会有特殊的权限限制,能通过特定的用户,但是经过几次的安装集群后发现,最初hadoop平台搭建的时候,这个MySQL的授权操作还得自己来,每次都会因为Hive初始化元数据库、Azkaban组件安装纠结半天。得嘞,自己总结下吧,以免下次在纠结。

(1)MySQL创建&&删除用户

语法:

CREATE USER 'username'@'host' IDENTIFIED BY 'passWord';
  • username:你将创建的用户名
  • host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
  • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
CREATE USER 'hadoop'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'hive'@'192.168.1.101' IDENDIFIED BY '123456';
CREATE USER 'hadoop'@'%' IDENTIFIED BY '123456';
CREATE USER 'hive'@'%' IDENTIFIED BY '';
CREATE USER 'azkaban'@'%';

创建用户成功后,就可以通过这个用户登录:

$mysql -hmysql_host -uhadoop -p123456

删除用户:

    DROP USER 'username'@'host';

(2)MySQL授权

  只有拥有特定权限的用户才能执行特定的操作。
语法:

GRANT privileges ON dbname.tableanme TO 'username'@'host';
  • privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
  • databasename:数据库名
  • tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如 *.*
    例:
GRANT SELECT, INSERT ON test.user TO 'hadoop'@'%';
GRANT ALL ON *.* TO 'hadoop'@'%';
GRANT ALL ON maindataplus.* TO 'hadoop'@'%';

授权之后一般都会刷新该操作:

mysql>flush privileges;

撤销授权

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

其中的内容与授权操作类似。

(3)设置和修改MySQL用户密码

命令:

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果修改当前用户的密码则:

SET PASSWORD = PASSWORD("newpassword");

举例:

SET PASSWORD FOR 'hadoop'@'%' = PASSWORD("123456");
您可能感兴趣的文档:

--结束END--

本文标题: MySQL的进阶部分

本文链接: https://lsjlt.com/news/36675.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL的进阶部分
    1.MySQL的表的约束 (1)数据完整性的介绍:   所谓的数据的完整性就是,数据的准确性和可靠性。可以通过添加完整性约束来提高数据的完整性: 实体完整性:为每一个实体(记录)确定一个唯一标识。 实现...
    99+
    2024-04-02
  • 常用Linux Shell进阶部分小结
    如何计算当前目录下的文件数和目录数 # ls -l * |grep "^-"|wc -l ---- to count files # ls -l * |grep "^d"|wc ...
    99+
    2022-06-04
    进阶 小结 常用
  • MySQL分布式恢复进阶
    目录1. 概述2. 分布式恢复的连接2.1分布式恢复端地址的查找2.2分布式恢复压缩2.3分布式恢复的用户2.4分布式恢复和SSL认证3. 利用克隆插件进行分布式恢复3.1克隆的基本条件3....
    99+
    2022-07-21
    MySQL分布式恢复 MySQL分布式
  • Mysql进阶
    一、约束 目的:使得数据更准确,更完整。 约束的分类: 键约束 主键约束 唯一键约束 外键约束 非空约束 默认值约束 自增约束 检查约束(mysql暂时没有支持) 二、主键约束 (一)概述 关键字 :primary key 特点...
    99+
    2015-09-13
    Mysql进阶
  • 如何理解常用Linux Shell进阶部分
    这篇文章主要讲解了“如何理解常用Linux Shell进阶部分”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解常用Linux Shell进阶部分”吧!如何计算当前目录下的文件数和目录数...
    99+
    2023-06-09
  • MySQL-进阶CRUD
    进阶增删查改 一.数据库约束1.约束类型2.null约束3.unique:唯一约束4.default:默认值约束5.primary key:主键约束6.foreign key:外键约束7.ch...
    99+
    2023-09-16
    数据库 mysql java
  • Perfetto分析进阶
    一、Perfetto介绍 Perfetto是Android Q中引入的全新下一代平台级跟踪工具,为Android、Linux和Chrome平台提供了一种通用的性能检测和跟踪分析工具集。其核心是引入了一种全新的用户空间到用户空间的跟...
    99+
    2023-09-12
    可视化 java python linux 大数据
  • mysql操作进阶
    # ### part1 单表查询# sql 查询语句的完整语法 """ select .. from .. where .. group by .. having .. order by .. limit .....
    99+
    2021-04-20
    mysql操作进阶
  • MySQL-进阶知识
    存储引擎 连接层:最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限 服务层:第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询...
    99+
    2015-05-17
    MySQL-进阶知识
  • MySQL进阶SELECT篇(转)
    MySQL进阶SELECT篇(转)[@more@]MySQL中SELECT语句的基本语法是: SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_R...
    99+
    2024-04-02
  • MYSQL进阶怎么学
    这篇文章主要介绍MYSQL进阶怎么学,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!文章目录1 影响性能的几个方面1.1 硬件方面1.2 服务器系统1.3 数据库存储引擎的选择1.4 ...
    99+
    2024-04-02
  • MySQL进阶之索引
    目录索引概述介绍特点索引结构索引进化的过程B-Tree索引概述 介绍 索引(index)是帮助mysql高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些数据结构以某种方式引...
    99+
    2023-04-09
    MySQL索引
  • MySQL进阶——触发器
    1.触发器定义 同存储过程和函数类似,MySQL中的触发器也是存储在系统内部的一段程序代码,可以把它看作是一个特殊的存储过程。所不同的是,触发器无需人工调用,当程序满足定义条件时就会被MySQL自动调用。这些条件可以称为触发事件,包括INS...
    99+
    2023-10-28
    数据库
  • 【MySQL】 MySQL的增删改查(进阶)--壹
    文章目录 🛫数据库约束🌴约束类型🎋NOT NULL约束🎍UNIQUE:唯一约束🌳DEFAULT:默认值约束&#x...
    99+
    2023-09-23
    mysql android 数据库 约束
  • 【MySQL】 MySQL的增删改查(进阶)--贰
    文章目录 🛫新增🛬查询🌴聚合查询🚩聚合函数🎈GROUP BY子句📌HAVING &...
    99+
    2023-09-24
    mysql 数据库 开发语言
  • 【MySQL】MySQL表的增删改查(进阶)
    ✨个人主页:bit me👇 ✨当前专栏:MySQL数据库👇 ✨算法专栏:算法基础👇 ✨每日一语:悟已往之不谏,知来者之可追。实迷途其未远,觉今是而...
    99+
    2023-09-04
    mysql 数据库 java
  • 【MySQL】MySQL数据库的进阶使用
    别灰心,一切都会好起来的… 文章目录 一、MySQL基本查询1.对表内容进行Create(增加)1.1 insert语句的使用1.2 插入查询结果(删除表中的重复记录) 2.对表内容进行Retrieve(读取)3.对表内容进...
    99+
    2023-08-17
    数据库 mysql
  • Redis笔记整理(三):进阶操作与高级部分
    [TOC] Redis发布订阅 Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis客户端可以订阅任意数量的频道。 下图展示了频道cha...
    99+
    2024-04-02
  • 【MySQL进阶教程】MySQL管理
    前言 本文为 【MySQL进阶教程】MySQL管理 相关知识,下边将对系统数据库,常用工具(包括:mysql、mysqladmin、mysqlbinlog、mysqlshow、mysqldump、mysqlimport/source)等进...
    99+
    2023-08-16
    mysql 数据库 服务器
  • mysql表的增删改查(进阶)
     目录 🥬新增 🥬聚合查询 🥬分组查询 🥬条件查询 🥬联合查询  🥬自连接 🥬合并查询 🥬小结 ...
    99+
    2023-09-10
    mysql 数据库 database
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作