正文
学mysql怎么用 mysql怎么学好
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
MySQL 安装与使用方法的具体简介
MySQL 安装与使用 一 什么是 MySQL MySQL (发音为 My Ess Que Ell )是 Tcx 公司()开发学mysql怎么用的一个多人使用 多执行绪的 SQL 资料库 Server MySQL 主要的目标在快速 稳定和容易使用 MySQL 可在此 取得 二 MySQL 的安装 本文所使用的 MySQL 版本为 mysql tar gz(原始码档) 作业环境为 RedHat +CLE MySQL 预设情况下会安装至 /usr/local 目录下 不过为了日后移除方便 建议将 mysql 独立安装在 /usr/local/mysql 目录 底下为安装 MySQL 的步骤 取得 mysql tar gz 后 于 /usr/local 目录下解开 # cd /usr/local# tar zxvf mysql tar gz# cd mysql 设定 configure 安装选项 选择安装目录 (prefix)以及支援中文 Big 码(with charset=big ) # /configure prefix=/usr/local/mysql # with charset=big 开始编译并安装 # make# make install# scripts/mysql_install_db最后一个步骤是用来产生 MySQL grant tables(会建立一个 mysql 资料库和一些 tables 用来管理使用 MySQL 的授权资讯 也就是使用者有哪些使用资料库的权限) 三 启动 停止 MySQL 要启动 MySQL 的方法 (以本文将 MySQL 安装在 /usr/local/mysql 为例)# /usr/local/mysql/share/mysql server start注意在第一次执行前 须将 mysql server 设成可执行(chmod mysql server) 另外可将这行指令加在 /etc/rc d/rc local 档中 让 MySQL 在开机时自动启动 要停止 MySQL 的方法 # /usr/local/mysql/bin/mysqladmin shutdown如果学mysql怎么用你为 MySQL Administrator root 帐号(非作业系统的 root)设了密码 要停止 MySQL 则必须像下列这样做 MySQL 会询问你 root 的密码后才会执行 shutdown 的工作 # /usr/local/mysql/bin/mysqladmin u root p shutdown 四 管理与使用 MySQL 简介 在你开始前MySQL 提供了许多工具 (Client Tools)来与 MySQL 资料库 Server 连线 其中最主要的为 mysql 交谈式连线工具与 mysqladmin 公用程式 大部份时候使用者会用 mysql 来和资料库 Server 交谈 底下就以 mysql 连线工具来介绍如何维护与使用 MySQL (以本文安装为例 mysql 工具位于 /usr/local/mysql/bin/mysql) mysql 的使用语法如下 mysql [ u username] [ h host] [ p[password]] [dbname]MySQL 资料库有自己一套使用者帐号与权限管控方法 所以这边所指定的 username 与 password 是 MySQL 的使用者与密码 而不是作业系统的使用者与密码(当然任何使用者都能执行 mysql 然后以 MySQL 的任何帐号进入使用) 在你第一次安装好 MySQL 时 MySQL 的管理帐号为 root 没有设定密码 (非作业系统的 root) 所以在开始前 请先照下列步骤为 root 设好密码 使用 mysql 与 MySQL 资料库 Server 连线 # /usr/local/mysql/bin/mysql u root mysqlReading table information for pletion of table and column namesYou can turn off this feature to get a quicker startup with AWele to the MySQL monitor Commands end with ; or \g Your MySQL connection id is to server version: Type help for help mysql在下了 mysql u root mysql 指令 指定以 root 帐号并开启 mysql 系统资料库 连线至 MySQL 后 会看到一些提示讯息与 mysql 工具的提示符号 以后大部份的工作皆在此提示符号下完成 更改 MySQL系统管理者 root 密码 mysql update user set password=password( 新密码 ) where user= root ;Query OK rows affected ( sec)Rows matched: Changed: Warnings: mysql FLUSH PRIVILEGES;Query OK rows affected ( sec)mysql quitBye注意每个指令后要加上一个分号 ; 才会让 mysql 开始执行 而第二道指令会让已载入记忆体的 mysql 系统资料库更新 最后离开 mysql 工具程式 在更新 root 密码后 日后要与 MySQL 连线的方法为 mysql u root p新密码或者是这样 让 mysql 询问 root 的密码 mysql u root p资料库维护接下来 我们以简单的通讯录资料库作为例子 来介绍如何用 mysql 工具程式来做资料库的维护(新增 授权 资料表维护等) 首先 以 MySQL root 帐号连线后建立一 addbook 资料库 # /usr/local/mysql/bin/mysql u root pEnter password:Wele to the MySQL monitor Commands end with ; or \g Your MySQL connection id is to server version: Type help for help mysql create databae addbook;Query OK row affected ( sec)指定使用 addbook 资料库 并建立一个 friends 资料表 mysql use addbook;Database changedmysql create table friends ( name Char( ) telphone VarChar( ) icq Char( ) address VarChar( ) );Query OK rows affected ( sec)新增几笔资料 并查询看看 mysql insert into friends values( maa 台北县新庄市 );Query OK row affected ( sec)mysql insert into friends (name icq telphone address ) Values ( cxlin 台北县 );Query OK row affected ( sec)mysql select * from friends;+ + + + +| name | telphone | icq | address |+ + + + +| maa | | | 台北县新庄市 || cxlin | | | 台北县 |+ + + + + rows in set ( sec)第二个 insert 指令指定了资料栏位的插入顺序 用法较第一个为弹性 而第一个指令必须依资料表建立结构时的顺序插入资料 更新 删除资料表记录 mysql update friends set address = 桃园县 where name = cxlin ;Query OK row affected ( sec)Rows matched: Changed: Warnings: mysql select * from friends where name = cxlin ;+ + + + +| name | telphone | icq | address |+ + + + +| cxlin | | | 桃园县 |+ + + + + row in set ( sec)mysql delete from friends where name = maa ;Query OK row affected ( sec)mysql select * from friends;+ + + + +| name | telphone | icq | address |+ + + + +| cxlin | | | 桃园县 |+ + + + + row in set ( sec)最后 建好资料库与资料表后 把 addbook 资料库中所有资料表的使用权限(select insert update delete)授权给 maa@localhost(再次提醒 此处的 maa 为 MySQL 的使用者帐号 而非作业系统的 maa 帐号) mysql grant select insert update delete on addbook * to maa@localhost identified by ;Query OK rows affected ( sec)之后 可用 maa 的身份进入 MySQL 存取 addbook 资料库 # /usr/local/mysql/bin/mysql u maa p addbookEnter password:Reading table information for pletion of table and column namesYou can turn off this feature to get a quicker startup with AWele to the MySQL monitor Commands end with ; or \g Your MySQL connection id is to server version: Type help for help mysql status /mysql Ver Distrib for pc linux gnu (i )Connection id: Current database: addbookCurrent user: maa@localhostServer version Protocol version Connection Localhost via UNIX socketUNIX socket /tmp/mysql sockUptime: hours min secThreads: Questions: Slow queries: Opens: Flush tables: Open lishixinzhi/Article/program/MySQL/201311/29503
零基础如何自学使用MySQL数据库?
对于非计算机出身的我,大学只会hello word和跑马灯,期间过程确实非常曲折,分享下我的自学过程:
1、 自己在windows和linux上安装了mysql,自学linux的基础知识,学习mysql的最基础的知识,即怎么写sql,存储过程,表的设计等,从0到熟悉大概花了3个月 ,推荐《mysql入门很简单》。
2、系统地较为深入地学习mysql的sql优化,备份和恢复,参数优化,架构优化,硬件层面的优化,高可用方案,复制技术等等,这段时间你不一定能实际接触到这些,就像我当初那样,肯定没什么公司招一个小白。 我选择自己看书,推荐《高性能mysql》,里面所有的章节都需要看一遍,以现在的水平肯定看不懂,但需要知道大概怎么回事,为后续的找mysql初级dba的工作打一个铺垫,这个过程大概也需要3个月。
3、 纸上得来终觉浅,完成以上两步,我开始准备找一份mysql相关的工作,而不是天天用着excel表格做着select * from table_sb这样的工作。 当然我这么猥琐的人肯定不会裸辞,该画的电路板也一样画,业余时间开始投初级mysql dba的工作,并且不间断地学习,网上各种找mysql面试的相关题目(实际上我当时完全没有任何实战经验),陆续收到一些面试,凭借之前自学的mysql知识,开始胡乱吹牛逼,先混进去再说。 你不做mysql实际相关的工作,永远也不知道自己之前认知的db知识有多幼稚。 友情提示一点,一般公司都没有专职dba的,所以面试的时候一定要自信,其实你学了这么多,虽然毫无实战经验,理论知识很大概率比面试你的人牛逼,所以各种吹,我就这样真正进入初级dba的圈子(由于这时对linux还处于cd ls的水平,所以之前也根本没做过运维),这个边工作边找工作的过程又持续了2个月。
4、真正进入互联网,接触生产环境后,这是我进步最大的时候。 第一步需要将之前所学真正地应用起来,并且应用的过程中,再回头看之前的书籍,这时候需要真正去理解,而不是似是而非,一知半解。 这时再推荐《高性能mysql 第三版》,全本再看一遍,这时需要全部看懂,另外还有《mysql技术内幕:innodb存储引擎》等等。 总之这段时间就需要开始关注mysql一些细节了,比如db故障处理,高可用,负载均衡等等的具体实现了。 另外,linux的知识同步也要深入去学习,至少会写shell脚本,常见的linux知识等,我在这花了1年多;
5、 dba的工作一般是非常轻闲的,毕竟不是大公司,技术能力有限,该学的也学得差不多了,接触不到海量数据,高并发等比较锻炼人的场合,于是我又准备跳了。 于是来了公有云,现在每天运维万多个db实例,平均每天处理5+个紧急db故障,几乎mysql会遇到的问题,感觉都遇到了,能感觉到技术实力和经验也在每天都在积累,在进步。 但是感觉还是欠缺了很多,下一步就看你选择了,是再去研究源代码,底层原理的东西多点,还是数据库运维和应用多一点,就比如业界姜承尧,何登成与叶金荣的区别。 由于我的历史原因,对c++等几乎不懂,平时也用不到,所以看代码等事实际太累,于是我再去学mongodb,接了公司mongodb运维的活,算是在广度上的一个扩展,万一哪天mysql不行了呢
6、 总之,对于db小白来说,最重要的一点就是,学习的过程不能断。 PS 上面的方法比较野路子,适合没什么基础的童鞋,如果本来就是DBA,比如从oracle转到mysql,那么建议直接看mysql官方文档,而官方文档是db达到一定水平后必看,出问题时必查的权威文档。
MySQL SQL的基础应用
SQL 基础应用及information_schema
1.SQL(结构化查询语句)介绍
SQL标准:SQL 92 SQL99
5.7版本后启用SQL_Mode 严格模式
2.SQL作用
SQL 用来管理和操作MySQL内部的对象
SQL对象:
库:库名,库属性
表:表名,表属性,列名,记录,数据类型,列属性和约束
3.SQL语句的类型
DDL:数据定义语言 data definition language
DCL:数据控制语言 data control language
DML:数据操作语言 data manipulation language
DQL:数据查询语言 data query language
4.数据类型
4.1 作用:
控制数据的规范性,让数据有具体含义,在列上进行控制
4.2.种类
4.2.1 字符串
char(32)
定长长度为32的字符串。存储数据时,一次性提供32字符长度的存储空间,存不满,用空格填充。
varchar(32):
可变长度的字符串类型。存数据时,首先进行字符串长度判断,按需分配存储空间
会单独占用一个字节来记录此次的字符长度
超过255之后,需要两个字节长度记录字符长度。
面试题:
1. char 和varchar的区别?
(1) 255 65535
(2) 定长(固定存储空间) 变长(按需)
2. char和varchar 如何选择?
(1) char类型,固定长度的字符串列,比如手机号,身份证号,银行卡号,性别等
(2) varchar类型,不确定长度的字符串,可以使用。
3. enum 枚举类型
enum('bj','sh','sz','cq','hb',......)
数据行较多时,会影响到索引的应用
注意:数字类禁止使用enum类型
4.2.2 数字
1. tinyint
2. int
4.2.3 时间
1. timestamp
2. datetime
4.2.4 二进制
5. 表属性
存储引擎 :engine = InnoDB
字符集 :charset = utf8mb4
utf8 中文 三个字节长度
utf8mb4 中文 四个字节长度 才是真正的utf8
支持emoji字符
排序规则(校对规则) collation
针对英文字符串大小写问题
6. 列的属性和约束
6.1 主键: primary key (PK)
说明:
唯一
非空
数字列,整数列,无关列,自增的.
聚集索引列?
是一种约束,也是一种索引类型,在一张表中只能有一个主键。
6.2 非空: Not NULL
说明:
我们建议,对于普通列来讲,尽量设置not null
默认值 default : 数字列的默认值使用0 ,字符串类型,设置为一个nil null
6.3 唯一:unique
不能重复
6.4 自增 auto_increment
针对数字列,自动生成顺序值
6.5 无符号 unsigned
针对数字列
6.6 注释 comment
7. SQL语句应用
7.1 DDL:数据定义语言
7.1.1 库
(1)建库
mysql create database oldguo charset utf8mb4;
mysql show databases;
mysql show create database oldguo;
(2)改库
mysql alter database oldguo1 charset utf8mb4;
(3)删库
mysql drop database oldguo1;
7.1.2 表
(0)建表建库规范:
1、库名和表名是小写字母
为啥?
开发和生产平台可能会出现问题。
2、不能以数字开头
3、不支持- 支持_
4、内部函数名不能使用
5、名字和业务功能有关(his,jf,yz,oss,erp,crm...)
(1)建表
create table oldguo (
ID int not null primary key AUTO_INCREMENT comment '学号',
name varchar(255) not null comment '姓名',
age tinyint unsigned not null default 0 comment '年龄',
gender enum('m','f','n') NOT null default 'n' comment '性别'
)charset=utf8mb4 engine=innodb;
(2)改表
1. 改表结构
-- 例子:
-- 在上表中添加一个手机号列15801332370.(重点*****)
-- alter table oldguo add telnum char(11) not null unique comment '手机号';
-- 练习:
-- 添加一个状态列
ALTER TABLE oldguo ADD state TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态列';
-- 查看列的信息
DESC oldguo;
-- 删除state列(不代表生产操作)
ALTER TABLE oldguo DROP state;
-- online-DDL : pt-osc (自己研究下***)
-- 在name后添加 qq 列 varchar(255)
ALTER TABLE oldguo ADD qq VARCHAR(255) NOT NULL UNIQUE COMMENT 'qq' AFTER NAME;
-- 练习 在name 之前添加wechat列
ALTER TABLE oldguo ADD wechat VARCHAR(255) NOT NULL UNIQUE COMMENT '微信' AFTER ID;
-- 在首列上添加 学号列:sid(linux58_00001)
ALTER TABLE oldguo ADD sid VARCHAR(255) NOT NULL UNIQUE COMMENT '学生号' FIRST;
-- 修改name数据类型的属性
ALTER TABLE oldguo MODIFY NAME VARCHAR(128) NOT NULL ;
DESC oldguo;
-- 将gender 改为 gg 数据类型改为 CHAR 类型
ALTER TABLE oldguo CHANGE gender gg CHAR(1) NOT NULL DEFAULT 'n' ;
DESC oldguo;
7.2 DML 数据操作语言
7.2.1 INSERT
--- 最简单的方法插入数据
DESC oldguo;
INSERT INTO oldguo VALUES(1,'oldguo','22654481',18);
--- 最规范的方法插入数据(重点记忆)
INSERT INTO oldguo(NAME,qq,age) VALUES ('oldboy','74110',49);
--- 查看表数据(不代表生产操作)
SELECT * FROM oldguo;
7.2.2 UPDATE (注意谨慎操作!!!!)
UPDATE oldguo SET qq='123456' WHERE id=5 ;
7.2.3 DELETE (注意谨慎操作!!!!)
DELETE FROM oldguo WHERE id=5;
7.2.4 生产需求:将一个大表全部数据清空
DELETE FROM oldguo;
TRUNCATE TABLE oldguo;
DELETE 和 TRUNCATE 区别
1. DELETE 逻辑逐行删除,不会降低自增长的起始值。
效率很低,碎片较多,会影响到性能
2. TRUNCATE ,属于物理删除,将表段中的区进行清空,不会产生碎片。性能较高。
7.2.5 生产需求:使用update替代delete,进行伪删除
1. 添加状态列state (0代表存在,1代表删除)
ALTER TABLE oldguo ADD state TINYINT NOT NULL DEFAULT 0 ;
2. 使用update模拟delete
DELETE FROM oldguo WHERE id=6;
替换为
UPDATE oldguo SET state=1 WHERE id=6;
SELECT * FROM oldguo ;
3. 业务语句修改
SELECT * FROM oldguo ;
改为
SELECT * FROM oldguo WHERE state=0;
mysql学了可以干什么?
可以存储数据,更容易的管理数据。做j2ee的web项目时,后端就需要用数据库存储数据,这个数据就是和前端(用户)交互时的手牌。就比如登录功能,就是将前段输入的用户名密码和数据库里的已注册用户进行比对,判断是否有权限登录。
北大青鸟设计培训:零基础如何mysql学习?
最近,有很多学员留言让我整理一下“零基础如何mysql学习?”.今天青岛电脑培训就整理一下学习MySQL你需要掌握的知识点以及送给新手学习的建议,希望对大家能够有所帮助!给新手的学习建议:1.在学习新的东西的时候,我们至少从三个问题开始。
What?why?how?2.学习需要坚持,如果还没准备好坚持半年比较枯燥的MySQL之旅,那么就别开始。
3.学习东西不在多,在精,市面上有非常多的MySQL教程,不要瞎学,今天这里学一点,明天那里学一点,这样你学的都只是知识点,无法形成一个知识面,知识网络。
4.在学习过程中充满好奇,使用google进行问题搜索,千万不要使用度娘了,质量不高。
至于怎么用Google,请自行搜索。
5.学习的目的在于使用,因此,不要仅仅看书,看一遍,看两遍,你可能还是没什么感觉。
因此学习一开始,就要动手练习,把资料上的情况,模拟一下。
6.请不要在windows上安装mysql进行学习,因为工作中都是linux系统。
我们需要从一开始就是实战,就是生产环境。
7.保持好心态,一步一个脚印的前进。
学习MySQL你需要掌握的知识点:1.系统,当然windos基本的要会。
然后就是Linux系统,现在做MySQLDBA的系统多数都是Linux系统,而生产环境大多又是RedHat,Centos。
其他的Linux和Unix系统可以只做了解。
2.Linux基础,网络,IO,内存,磁盘,CPU。
包括不限于安装,启动过程,目录结构,远程登录,文件属性与管理,用户与用户权限,LAMP结构vim,yum等shell命令,dns,ftp,以及一些常用工具。
3.MySQL基础:MySQL安装、MySQL体系结构,SQL,MySQL管理维护。
4.数据备份与恢复,常用的引擎:MyISAM、Innodb、NDB等。
5.数据库设计优化,一个好的MySQL系统,往往从设计开始。
6.SQL优化,参数优化,监控,安全等。
7.MySQL负载均衡,读写分离,MHA,MMM高可用架构,以及分布式架构:mycat、maxscale、galeracluster、MySQLGroupReplication等。
8.mysql5.6,mysql5.7新特性,mariadb、percona分支的差异和特点。
9.MySQLJSON、MySQLmemcached。
10.常见MySQL搭配的缓存系统,redis,memcached,以及NOSQL、NEWSQL。
以上,就是小编为大家整理的mysql学习你需要掌握的知识点以及送给新手学习的建议,希望能够帮助到大家!
学mysql怎么用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql怎么学好、学mysql怎么用的信息别忘了在本站进行查找喔。