首页 文章 精选 留言 我的

精选列表

搜索[dba],共1759篇文章
优秀的个人博客,低调大师

mysql 基础操作全覆盖(适用与兼职DBA,不定期更新)

1.mysql版本应该怎么选择 由于5.5-5.6对mysql性能做了较大优化,所以一般选择mysql 5.5 或者 5.6 mysql 5.5.xx -5.6.xx 产品的特殊性,所以编译方式也和早期的产品安装方式不同,采用cmake或者gmake方式进行编译安装。即 ./cmake ; make ; make install ,生产场景的具体命令及参数为详见mysql 一键安装脚本 一键安装脚本下载链接 http://down.51cto.com/data/2228998 2.设置mysql的初始密码 mysql 安装完毕后是没有初始用户名密码的,所以我们要为mysql设置一个初始密码 mysqladmin -uroot password 1qaz@WSX? --(备注,是mysqladmin,而不是mysql) 3.查看数据库 show databases ; 4.使用某个库 use 库名 ; 5.查看当前数据库 select database (); 6.删除一个库 drop database test(库名称为test) ; 7.使用某个库 use 库名 ; 8.进入库后查看表 show tables ; 9.查看表结构 desc table名 ; 或者select * from table 名 10.查看所有用户 select host,user from mysql.user ; 11.删除用户 一般删除用户就用drop ,但是如果名字中有大写或者特殊字符,drop可能会有问题,会用delete dropuser''@'localhost';dropuser""@"localhost.localdomain";或者deletefrommysql.userwherehost="127.0.0.1";flushprivileges; 12.新建用户并为用户赋权/新建管理员 grant all on *.* to 'dailiang'@'%' identified by '1qaz@WSX?'; flush privileges; 这样这个用户与管理员的差别就是没有grant权限 grant all on *.* to 'dailiang'@'%' identified by '1qaz@WSX?' with grant option; 13.只设置查询权限 grant select on *.* to 'dailiang'@'%' identified by '1qaz@WSX?' ; flush privileges; grant select on *.* to 'dailiang'@'10.0.0.%' identified by '1qaz@WSX?' ; 表示对10.0.0.x 网段授权 13.查看用户权限 show grants for 'dailiang'@'%'; 或者 select * from mysql.user where user='dailiang'\G; 14. 收回权限之revoke help revoke; REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost'; 15.交互式执行sql,不用登陆数据库 mysql -uroot -p1qaz@WSX? -e "show grants for 'dailiang'@'%';" 16.mysql用户一共18个权限 Select Insert Update Delete Create Drop Grant References Index Alter 17.修改用户密码 UPDATE mysql.user SET password=PASSWORD('新密码') WHERE user='用户名 update mysql.user set password=PASSWORD('111') where user='dailiang' and host='%'; flush privileges; 注意: 1.如果不加WHERE 条件,则会把所有用户的密码都修改为’新密码’ 密码修改完成后,需要进行权限刷新操作才能生效,FLUSH PRIVILEGES; ROOT用户可以修改自己的密码,也可以修改其他用户的密码 其他用户只能修改自己的密码 2.PASSWORD函数 mysql> SELECT PASSWORD('111'); 用于把密码明文进行加密,所得到的密码为原密码的哈希值。 mysql> SELECT PASSWORD('111'); +-------------------------------------------+ | PASSWORD('111') | +-------------------------------------------+ | *832EB84CB764129D05D498ED9CA7E5CE9B8F83EB | +-------------------------------------------+ 1 row in set (0.00 sec) 18.建表语句 建表格式为: create table 表名( 字段名1 类型1, 字段名2 类型2, 地段名3 类型3 ); 备注:注意逗号的位置 建表例子: CREATE table student( id int(4) NOT NULL, name CHAR(20) NOT NULL, age TINYINT(2) NOT NULL DEFAULT '0', dept VARCHAR(16) DEFAULT NULL ); int 整数类型 (4)是指长度 not null 是指不允许是空的 查看表结构如下: mysql> desc student; 查看当初建表语句: show create table student\G; mysql> show create table student\G; *************************** 1. row *************************** Table: student Create Table: CREATE TABLE `student` ( `id` int(4) NOT NULL, `name` char(20) NOT NULL, `age` tinyint(2) NOT NULL DEFAULT '0', `dept` varchar(16) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) 解释:mysql 5.5以后使用的是innoDB引擎,mysql5.1及以前默认引擎为MyISAM MYSQL表的字段类型: int 整数类型 char 定长字符串类型,当存储时,总是用空格填满右边到指定的长度 varchar 变长字符串类型 19.索引(主键)相关知识 索引就像书的目录一样,如果在字段上建立了索引,那么以索引列为查询条件时可以加快查询速度,这是mysql的优化的重要内容之一 主键索引: 查询数据库,按主键查询是最快的,每个表只能有一个主键列,但是可以有多个普通索引列,主键列要求所有内容必须唯一,而索引列不要求内容必须唯一 主键就类似我们在学校的学号或者×××号一样,是唯一的,索引类是不唯一的 可以这样说: 主键是一个特殊的索引 建立索引: 首先无论建立主键索引还是普通索引,都要在表的对应列上创建,可以对单列创建索引,也可以对多列创建索引 CREATE table student02( id int(4) NOT NULL AUTO_INCREMENT, name CHAR(20) NOT NULL, age TINYINT(2) NOT NULL DEFAULT '0', dept VARCHAR(16) DEFAULT NULL, PRIMARY KEY(id), KEY INDEX_NAME(NAME) ); 解析: AUTO_INCREMENT → 自增 PRIMARY KEY(id) → PRI主键,以id列为主键 KEY INDEX_NAME(NAME) → 普通索引 mysql> desc student02; PRI是主键索引 MUL是普通索引 建表后可以通过alter命令增加主键索引,但是一般不建议这样干 alter table student change id id int primary key auto_increment; 增加主键前: 增加主键后: 查看某个表的索引和主键: Show index from 表名\G; 建表后删除普通索引: alter table student02 drop index index_name ;index_name是索引的名字 建表后增加普通索引: alter table student02 add index index_name(name);index_name 是指索引的名字 name 是这行的名字,就是对name 这行添加 创建联合索引: Create index id_name_dept on student(name,dept); 注:红色为索引名称可以随便起啊,但是为了以后好改还是按标准比较好 创建唯一索引: Create unique index index_ind_name on student(name); 建出来时会是UNI OK,最后我们来说一下索引的具体应用 问题一:既然索引可以加快查询速度,那么为啥不把所有列建立索引啊? 解答:因为索引不但占用系统空间,更新数据库时还需要维护索引数据,因此索引是一把双刃剑,并不是越多越好,例如比较小的表就不需要建索引了,写频繁读少的业务要少建立索引,因为写一次就需要更新一下索引 因为就像word目录一样,你写入一些东西之后就需要更新目录啊,不然是乱的,这就是为什么写频繁的数据库增加索引会很麻烦的原因,表更新了,就需要更新索引 问题二:在哪些列上创建索引更好呢? select host,user from mysql.user where user='xxx';索引一般都会建在where后的条件列上 20.mysql插入之insert 先建一个简单的测试表 create table test (id int(4) NOT NULL AUTO_INCREMENT ,name varchar(20) NOT NULL ,PRIMARY KEY (id)); ok,准备工作做好了,开始插入第一条 插入单条数据: insert into test(id,name) value (1,'dailiang'); 插入多条数据: insert into test(id,name) value (2,'dailiang02'), (3,'dailiang03'); 注意: 数字 2 之类的不需要加单引,但是字符串系列如 dailiang 就需要加单引了 插入数据最好批量插入,不要一条一条的插入 21.mysql之select语句 limit用法: select id,namefrom test limit 2 只查两行 select id,namefrom test limit 0,2; 只查0到2行 条件查询: mysql> selectid,name from test where id=1; mysql> selectid,name from test where name='oldgirl'; Attention: 字符串要接引号 后面加where条件语句:and or mysql> selectid,name from test where name='oldgirl'and id=3; mysql> selectid,name from test where name='oldgirl' or id=1; 范围查询: Select id,name from test where id >2 and id<1 Select id,name from test where id >2 or id<1 排序: 默认是正序 Select id,name from test order by id asc; 正序 Select id,name from test order by id desc; 倒序 22.连表查询: 首先先建三张表做实验: create table student ( Sno int(10) NOT NULL COMMENT '学号',Sname varchar(16) NOT NULLCOMMENT '性名',Ssex char(2) NOT NULL COMMENT '性别',Sage tinyint(2) NOT NULL default '0' COMMENT '学生年龄',Sdept varchar(16) default NULL COMMENT '学生所在系别',primary key (Sno),key index_Sname (Sname) ); create table course(Cno int(10) NOT NULL COMMENT '课程号',Cname varchar(64) NOT NULL COMMENT '课程名',Ccredit tinyint(2) NOT NULL COMMENT '学分',PRIMARY KEY (Cno))ENGINE=InnoDB AUTO_INCREMENT=1 ; create table SC (SCid int(12) not null auto_increment comment '主键',Cno int(10) not null comment '课程号',Sno int(10) not null comment '学号',Grade tinyint(2) not null comment '学生成绩',primary key (SCid))ENGINE=innodb ; 插入内容: insert into student values(0001,'代亮','男',18,'清华计算机'); insert into student values(0002,'张峰来','女',68,'野鸡管理'); insert into student values(0003,'管建宇','女',28,'野鸡管理'); insert into student values(0004,'周新宇','女',19,'野鸡管理'); insert into student values(0005,'林绅武','女',31,'野鸡管理'); insert into student values(0006,'胡麒','女',38,'野鸡管理'); insert into student values(0007,'李楠','女',40,'野鸡管理'); insert into course values(1001,'LINUX高级',1); insert into course values(1002,'小学数学',1); insert into course values(1003,'小学语文',1); insert into course values(1004,'小学英语',1); insert into course values(1005,'大保健培训',6); insert into SC(Sno,Cno,Grade) values (0001,1001,1);insert into SC(Sno,Cno,Grade) values (0002,1002,1);insert into SC(Sno,Cno,Grade) values (0002,1003,1);insert into SC(Sno,Cno,Grade) values (0002,1004,1);insert into SC(Sno,Cno,Grade) values (0002,1005,6);insert into SC(Sno,Cno,Grade) values (0003,1002,1);insert into SC(Sno,Cno,Grade) values (0003,1003,1);insert into SC(Sno,Cno,Grade) values (0003,1004,1);insert into SC(Sno,Cno,Grade) values (0003,1005,6);insert into SC(Sno,Cno,Grade) values (0004,1002,0);insert into SC(Sno,Cno,Grade) values (0004,1003,0);insert into SC(Sno,Cno,Grade) values (0004,1004,0);insert into SC(Sno,Cno,Grade) values (0004,1005,6);insert into SC(Sno,Cno,Grade) values (0005,1002,0);insert into SC(Sno,Cno,Grade) values (0005,1003,0);insert into SC(Sno,Cno,Grade) values (0005,1004,0);insert into SC(Sno,Cno,Grade) values (0005,1005,6); 经典连表查询: select student.Sname,student.Ssex,student.Sage,student.sdept ,course.Cname,SC.Grade from student,course,SC where student.Sage >1 and student.Sno<100; 23.explain命令 用explain命令来查看某个select命令是不是走了索引了啊,如果没有走索引,我们可以见一个啊 但是索引不是乱建的,建索引原则,请看上文 mysql> explain select Sage from student where Sage=18\G; 可以看出where后面的Sage不是索引。。 为这一列添加普通索引:mysql> Alter table student add index index_Sage(Sage); 这下就使用索引了额。。 24.修改表中的数据 更改表数据: update student set Sname='张来' where Sno=2 强烈备注:千万不要忘记where,如果忘记where,那么整个表Sname就全部变了,容易造成生产事故 25.删除整个表 drop tablename 26.删除表内容,但保持表结构 delete table名 或者 truncat table名 两种都是清空表内数据,但是保留表的内容 **删除了指定表中的所有行,但表的结构及其列,约束,索引等保持不变** 27.mysql停从库操作 show processlist; show slave status\G; slave stop; service mysqld stop

优秀的个人博客,低调大师

DBA必备工具,一个SQL语句查询多个异构数据源

随着企业数据量呈现出爆炸式增长,跨部门、跨应用、跨平台的数据交互需求越来越频繁,传统的数据查询方式已经难以满足这些需求。同时,不同数据库系统之间的数据格式、查询语言等都存在差异,直接进行跨库查询十分困难。 原生跨库查询的局限性 虽然 MySQL、Oracle、PostgreSQL 等数据库系统都提供了自身的跨库查询功能,但是存在诸多局限性: 数据库类型限制:MySQL 的 Federated、Oracle 的 Database Links 功能均要求目标数据库也必须是相同类型的数据库,这限制了跨库查询功能的适用范围,不适用于异构数据库的跨库查询。 额外性能损耗:自带的跨库查询功能可能会有 JOIN 操作带来的额外性能损耗,特别是在大规模数据查询或数据传输时,会增加系统负担,影响其他查询的效率。 这些局限性意味着数据库系统自带的跨库查询功能可能无法满足复杂多样的数据分析需求,特别是在异构数据库、大规模数据查询、有高性能高安全性方面需求等场景。 为解决这些问题,NineData DSQL 应运而生。 什么是 NineData DSQL ? NineData DSQL 是针对多个同异构数据库系统进行跨库查询的功能,当前支持对表和视图进行 SELECT 操作。您可以在一个查询中访问多个数据库,获取分散在各个数据库中的有用信息,并且将这些信息聚合为一份查询结果返回,轻松实现跨多个库、多个数据源,乃至跨多个异构数据源的数据查询。 NineData DSQL 具有如下特性: 连接多个数据库系统:支持连接多个数据库系统,并确保这些数据库系统之间的兼容性。这些数据库系统可以来自不同的厂商或平台,且数据格式、存储方式、查询语言等可以存在差异。 统一的查询语法:DSQL 提供了统一的查询语法,您仅需使用一种语法即可跨多个异构或同构数据库进行查询,系统会自动将该语法解析并转换成不同类型数据源的查询语法进行下发查询。 结果整合和输出:整合同异构数据库系统的查询结果,并统一输出格式,方便您获取所需信息。您无需关心数据存储在哪个数据库中,只需通过一个查询就可以获得所需的结果。 数据隐私和安全保护:基于 NineData 的权限管控功能,支持对敏感数据进行脱敏处理、对访问权限进行控制等,保护数据的隐私和安全,防止数据泄露和非法访问。 图形化界面支持:提供一目了然的图形化界面,方便您进行可视化的查询和管理,提高您的工作效率。 易于记忆的 DSQL 查询语法 在 DSQL 中,无论是执行联表(视图)查询还是单表(视图)查询,指定来源数据源时都需要采用三段式语法,即<DBLINK 名称>.<库名|Schema 名>.<表名(视图名)>。 示例 1:跨异构源查询,从 DBLINK1(MySQL) 和 DBLINK2(Oracle) 中查询数据。 SELECT * FROM DBLINK1.database_name.table_name a, DBLINK2.schema_name.table_name b WHERE a.id=b.id; 示例 2:单表(视图)查询,从 DBLINK1 中查询数据。 SELECT * FROM DBLINK1.database.table_name WHERE id=1; 如果您的库名或表(视图)名以数字开头,或使用了预留字段,则需要使用双引号("")包裹该名称,否则查询失败。例如: SELECT * FROM dblink_mysql_3451."9zdbtest3".sbtest1; 什么情况下需要使用 DSQL? 企业级数据整合:企业经常需要从多个部门或系统中整合数据,以提供更全面的视角。通过 DSQL ,企业可以在一个查询中访问多个数据库,获取分散在各个数据库中的有用信息,然后将其整合在一起,方便数据分析和决策。 数据挖掘与分析:数据挖掘和分析需要大量的数据支持。通过 DSQL ,您可以在多个数据库中检索需要的数据,然后使用挖掘和分析工具对数据进行深入的研究和分析。 数据仓库:数据仓库是用于存储和管理大量数据的系统。通过 DSQL ,您无需搭建数据仓库,即可实现数据仓库的功能。 操作示例 5.1 查看需要查询的库表列信息 您可以在左侧导航栏查看需要查询的 DBLink 名、库名|Schema 名、表名、视图名、列名等信息,无需摸黑操作。 查看需要查询的库表列信息 5.2 编写跨库查询语句并执行 通过简单的查询 SQL 即可对多个同、异构数据源进行查询,支持对查询结果中的敏感字段进行脱敏。 编写跨库查询语句并执行 5.3 整合多表查询结果并导出 执行跨库查询后,系统会整合查询结果到一张表中,您可以对结果集执行导出操作。同时,还支持对结果集进行搜索。 整合多表查询结果并导出 5.4 收藏常用 DBLink 如果 DBLink 很多,您可以收藏常用的几个 DBLink,方便查找。 收藏常用 DBLink 综上所述,NineData DSQL 提供了全局视角审视您的数据,在减少了数据处理的复杂性的同时,提高了数据利用率,为企业提供了更灵活、高效和安全的方式来处理数据,可促进数据驱动的决策和业务发展,助力企业降本增效。

优秀的个人博客,低调大师

DBA必备的Mysql知识点:数据类型和运算符

摘要:本文主要为大家带来Mysql中的3种数据类型和3种运算符。 本文分享自华为云社区《Mysql中的数据类型和运算符》,作者: 1+1=王。 Mysql的数据类型 Mysql支持数值型、文本型和日期时间型三大数据类型。 数值型数据 数值型是描述定量数据的数据类型,包括整数型数据类型和浮点型数据类型。 整数型数据类型 整数型数据类型包括INTEGER、SMALLINT、TINYINT、MEDIUMINT和BIGINT五种长度不同的类型。 根据占用字节数可以求出每一种数据类型的取值范围,例如: TINYINT需要1字节(即8bits),那么TINYINT无符号数的取值的最大值为2^8^-1=255;有符号数的最大值为2^7^-1=127。 浮点型型数据类型 Mysql中浮点型数据类型包括浮点型(单精度FLOAT、双精度DOUBLE)和定点型(DECIMAL)。 此类数据可以用(M,N)来表示,其中M称为精度,表示总位数;N称为标度,表示小数的位数。 例如: FLAOT(8,3)表示是FLOAT类型,数据长度为8,小数点后保留3位。 字符型数据 字符型数据可以用来存储字符串、图片和声音的二进制数据。 MYsql中的字符型数据有CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM、SET和二进制形式文本数据等。 字符串数据 定长字符串CHAR(M):固定长度的字符串。在定义的时候需要定义字符串长度为M(0~255),==保存时,在右侧填充空格已达到指定长度。== 变长字符串VARCHAR(M),长度可变的字符串。M(0~65535)表示最大长度,实际占用为字符串的实际长度加1。 文本类型数据 文本类型可以保存非二进制字符串。当保存或查询文本类型的值时,不删除尾部空格。 枚举类型数据 枚举字符串(ENUM)是一个字符串对象,语法格式如下: <字段名> ENUM('值 1', '值2', ..., '值n') ENUM的特点如下: 取值时,在指定的枚举列表中获取,一次只能获取一个。 如果创建的成员中有空格,尾部的空格将被自动删除。 ENUM值的内部用整数表示(索引编号),最多可以有65535个元素。 ENUM值按照索引顺序排列,空字符串排在非空字符串前面,NULL值排在其他所有枚举值之前。 ENUM存在默认值。声明为NULL时,默认值为NULL;声明为NOT NULL时,默认值为允许的值列表的第一个元素。 SET类型数据 SET是一个字符串对象,语法格式如下: <字段名> SET('值 1', '值2', ..., '值n') SET的特点如下: SET内部用整数表示(索引编号),最多可以有64个元素; SET成员中有空格,尾部的空格将被自动删除。 SET的值可以从定义的元素值中选择多个联合。 二进制形式的文本数据 二进制数据类型用于存储图像、有格式的文本(Word、Excel等)、音频等数据。 日期时间型数据 Mysql中的日期和时间数据包括YEAR、TIME、DATE、DATETIME和TIMESTAMP。 Mysql的运算符 算数运算符 比较运算符 逻辑运算符 点击关注,第一时间了解华为云新鲜技术~

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册