首页 / 数据库 / MySQL / 10分钟学会MySQL基础教程
10分钟学会MySQL基础操作
1分钟安装
Part1:写在最前MySQL安装的方式有三种:①rpm包安装②二进制包安装③源码安装这里我们推荐二进制包安装,无论从安装速度还是用于生产库安装环境来说,都是没问题的。现在生产库一般采用MySQL5.6,测试库采用MySQL5.7。MySQL5.6安装看这里 http://www.linuxidc.com/Linux/2016-09/135422.htmMySQL5.7安装看这里 http://www.linuxidc.com/Linux/2016-09/135423.htm8分钟数据库操作
Part1:登录MySQL的登录方式为:-u为用户名,-p为密码,如果您用了上述本文的安装脚本,默认密码为MANAGER[root@HE3 ~]# mysql -uroot -pMANAGERmysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 11Server version: 5.7.16-log MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners. Type "help;" or "h" for help. Type "c" to clear the current input statement. mysql> Part2:表基础操作①查看数据库中有哪些库mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || he1 || he3 || maxscale || mysql || performance_schema || sys |+--------------------+7 rows in set (0.00 sec)
②增删改查同Excel一样,数据库中也是要增删改查的主要涉及的语法如下:查:首先选择相应的库mysql> use maxscaleDatabase changedselect * from 表名;是查询这张表所有内容的意思;select 列名,列名 from 表名;是查询这张表想看的列内容;mysql> select a,b from helei;+--------+------+| a | b |+--------+------+| HE3 | a || 写入 | b || 测试 | c || 于浩 | d || 贺磊 | e |+--------+------+6 rows in set (0.00 sec) 增:insert into 表名 values("想插入的内容"); 往表中插入一条记录的意思;mysql> insert into helei values("插入","f");Query OK, 1 row affected (0.01 sec) mysql> select a,b from helei;+--------+------+| a | b |+--------+------+| HE3 | a || 写入 | b || 测试 | c || 于浩 | d || 贺磊 | e || 插入 | f |+--------+------+6 rows in set (0.00 sec)我这里表名叫helei; 删:delete from helei where b="f";删除helei表中b列是f的所有记录;mysql> delete from helei where b="f";Query OK, 1 row affected (0.01 sec) mysql> select * from helei;+--------+------+| a | b |+--------+------+| HE3 | a || 写入 | b || 测试 | c || 于浩 | d || 贺磊 | e |+--------+------+5 rows in set (0.00 sec)可以看到这里b列为f的整个一行就被删除掉了。 改:update 表名 set 列名="改成所需内容" where 限定条件。mysql> update helei set b="改" where a="贺磊";Query OK, 1 row affected (0.01 sec)Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from helei;+--------+------+| a | b |+--------+------+| HE3 | a || 写入 | b || 测试 | c || 于浩 | d || 贺磊 | 改 |+--------+------+5 rows in set (0.00 sec) ③表级操作创建表创建表t,这里用生产库的来做例子,id列自增主键,log为varchar类型,可以存30个字符;mysql> CREATE TABLE `t` ( -> `id` int UNSIGNED NOT NULL AUTO_INCREMENT , -> `log` varchar(30) NOT NULL DEFAULT "" , -> PRIMARY KEY (`id`) -> ) -> ;Query OK, 0 rows affected (0.01 sec) 删除表删除表t,整表删除;mysql> drop table t;Query OK, 0 rows affected (0.02 sec) Part3:库基础操作创建库mysql> CREATE DATABASE helei DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;Query OK, 1 row affected (0.00 sec) mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || he1 || he3 || helei || maxscale || mysql || performance_schema || sys |+--------------------+8 rows in set (0.00 sec) 删除库删除名为helei的库,注意,这一操作会删除掉helei库中所有的表;mysql> drop database helei;Query OK, 0 rows affected (0.00 sec) 1分钟系统级操作
Part1:启停数据库[root@HE3 ~]# /etc/init.d/mysqld status SUCCESS! MySQL running (3173)[root@HE3 ~]# /etc/init.d/mysqld stopShutting down MySQL.... SUCCESS! [root@HE3 ~]# /etc/init.d/mysqld startStarting MySQL.. SUCCESS! 附录
Part1:常用SQL创建和授权用户CREATE USER "helei"@"%" IDENTIFIED BY "MANAGER";GRANT SELECT,insert,update,delete ON *.* TO "helei"@"%"; 创建数据库:CREATE DATABASE www CHARACTER SET utf8 COLLATE utf8_bin; 密码变更:SET PASSWORD FOR "root"@"localhost" = PASSWORD("MANAGER"); 统计哪些ip连接mysql> select substring_index(host,":", 1) from information_schema.processlist; 统计每个IP连接数:mysql> select substring_index(host,":", 1) ip, count(*) from information_schema.processlist group by ip; 到库级别的ip连接数查看:mysql> select db, substring_index(host,":", 1) ip, count(*) from information_schema.processlist group by db, ip; 查看当前连接数mysql> show status like "Threads%"; 粗略统计每张表的大小mysql> select table_schema,table_name,table_rows from tables order by table_rows desc; 要想知道每个数据库的大小的话,步骤如下:1、进入information_schema 数据库(存放了其他的数据库的信息)use information_schema; 2、查询所有数据的大小:select concat(round(sum(data_length/1024/1024),2),"MB") as data from tables; 3、查看指定数据库的大小:比如查看数据库home的大小select concat(round(sum(data_length/1024/1024),2),"MB") as data from tables where table_schema="home"; 4、查看指定数据库的某个表的大小比如查看数据库home中 members 表的大小select concat(round(sum(data_length/1024/1024),2),"MB") as data from tables where table_schema="home" and table_name="members"; 无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 SET FOREIGN_KEY_CHECKS = 0; 删除完成后设置 SET FOREIGN_KEY_CHECKS = 1; 其他: 关闭唯一性校验 set unique_checks=0; set unique_checks=1; 变更字符集ALTER TABLE tbl_name CONVERTTO CHARACTER SETutf8; 添加主键alter table `helei` add column `id` int(10) not null auto_increment primary key comment "主键" first; 但会锁表,先在测试库中测试时间,如果时间长,尝试利用pt工具 重命名表alter table helei rename to helei_old; 锁表(用户退出则失效)flush tables with read lock;unlock table; 锁某张表lock tables helei read; 找出id是奇数和偶数select * from t where id &1select * from t where id=(id>>1)<<1 查看数据库已运行时间show global status like "uptime"; ——总结——操作MySQL数据库是一项较为复杂的工作,限于文章篇幅原因,这里仅仅介绍冰山一角。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。本文永久更新链接地址