Mysql数据库启动-关闭-登录-查看帮助

#单实例启动
1./etc/init.d/mysqld start 2.service mysqld start/restart 3./usr/local/mysql/binmysqld_safe --user=mysql & #单实例关闭
1./etc/init.d/mysqld stop 2.service mysqld stop 3.pkill mysqld #最好不要使用这种方法,可能会引起数据丢失 #单实例登录
mysql <刚装完无密码
mysql -uroot <刚装完无密码
mysql -uroot -p <==这里标准的dba命令行登录命令
mysql -uroot -p'123' >非脚本不适用 #查看帮助
[root@localhost /]# mysql --help
mysql> help #登陆后
mysql> help show databases; #查看show databases怎么用

Mysql数据库丢失后多种找回密码方法实践

#方法1:
[root@localhost ~]# /etc/init.d/mysqld stop
[root@localhost ~]# mysqld_safe --skip-grant-tables &
[root@localhost ~]# mysql #直接进入
mysql> update mysql.user set password=PASSWORD("123") where user="root" and host="localhost";
mysql> flush privileges; #刷新
[root@localhost ~]# pkill mysql #杀掉mysql
[root@localhost ~]# /etc/init.d/mysqld start #再次启动mysql
[root@localhost ~]# mysql -uroot -p #输入刚才设置的密码 #多实例的话,需要先杀掉mysql,然后mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-table &,然后mysql -u root -p -S /data/3306/mysql.sock #登录时空密码

语言简介与SQL分类介绍

  SQL,英文全称Structured Query Language,中文意思是结构化查询语言,它是一种对关系数据库中的数据进行定义和操作的句法,为大多数关系数据库管理系统所支持的工业标准

  结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非国产化变成语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使他具有极大的灵活性和强大的功能

  结构化查询语言包含6个部分:
  一.数据查询语言(DQL):

    其语句,也称为“数据检索语句”,用以从表中获取数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用的最多的动词,其他DQL常用的保留自由WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。

  二.数据操作语言(DML):

    其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

  三.事务处理语言(TPL):

    它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK

  四.数据控制语言(DCL):

    它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

  五.数据定义语言(DDL):

    其语句包括动词CREATE和DROP。在数据库中创建新表和删除表(CREAT TABLE或DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中或暗的数据有关的保留字。它也是动作查询的一部分

  六.指针控制语言(CCL):

    它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

  常见分类:

    SQL分类:

    DDL------数据定义语言(CREATE,ALTER,DROP)

    DML------数据操纵语言(SELECT,INSTER,DELETE,UPDATE)

    DCL------数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

Mysql常用基础命令

1.建库、查库

#建库
命令:create database <数据库名>
mysql> create database daniel;
Query OK, 1 row affected (0.00 sec) 查看建库的语句
mysql> show create database daniel;
+----------+-------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------+
| daniel | CREATE DATABASE `daniel` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)
#latin1:字符集,默认的 查询库
mysql> show databases like 'dan%'; #模糊查询
+-----------------+
| Database (dan%) |
+-----------------+
| daniel |
+-----------------+
1 row in set (0.00 sec) 创建一个gbk字符集库
mysql> create database daniel_gbk default character set gbk collate gbk_chinese_ci;
Query OK, 1 row affected (0.00 sec) 创建一个utf8字符集库
mysql> create database daniel_utf8 character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec) #删库
命令:DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
mysql> drop database daniel; Query OK, 0 rows affected (0.07 sec)

2.连接库、删库、删除用户

#连接数据库
命令:use <db_name>,切换数据库,跟cd切换目录一样 mysql> use daniel_gbk;
Database changed #查看你在哪个数据库里面,相当于pwd
mysql> select database();
+------------+
| database() |
+------------+
| daniel_gbk |
+------------+
1 row in set (0.00 sec) #查看当前用户
mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec) #查看当前用户
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.5.32 |
+-----------+
1 row in set (0.00 sec) #查看表
mysql> show tables;
Empty set (0.00 sec) #查看系统账号
mysql> select user,host from mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| | C-server |
| root | C-server |
| | localhost |
| root | localhost |
+------+-----------+
6 rows in set (0.00 sec) #删除系统多余账号
mysql> drop user ''@'localhost'; #大写的可能删不掉,我们换一种办法
mysql> delete from mysql.user where user='' and host='C-server';
Query OK, 1 row affected (0.00 sec)

3.单机及多机用户授权

1.先建用户,再授权
mysql> create user 'daniel'@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec) #创建用户,赋予密码,允许本机连接 mysql> grant all on daniel_gbk.* to daniel@'localhost';
Query OK, 0 rows affected (0.00 sec) #授权 2.直接grant
mysql> grant all privileges on daniel_utf8.* to danieu_tf8l@'localhost' identified by '1234';
Query OK, 0 rows affected (0.00 sec) 3.多机授权
mysql> grant all privileges on daniel_utf8.* to daniel_utf8@'10.0.0.%' identified by '1234';
Query OK, 0 rows affected (0.00 sec) #允许10.0.0.0网段连接 4.远程连接
mysql -uroot -p -h 10.0.0.1 5.all privileges是什么?
#这是一个权限包 5.收回权限
mysql> revoke insert on daniel_utf8.* from daniel@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql>show grants for daniel_utf8@'localhost';
GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `daniel_utf8`.* TO 'daniel_utf8l'@'localhost #查看还剩多少权限,这就是ALL PRIVILEGES权限包所有的权限,加一个INSERT #生产环境授权用户建议
一般来说我们只给select,insert,update,delete权限,再加上create,drop。 #读库写库的不同
写库
blog 123 3306 10.0.0.7
写库
blog 123 3306 10.0。0.8
#隐藏的不同:授权的权限不同

4.表操作

#建表
命令:create <表名>(<字段名1 > <类型 n> ....<字段名 n><类型n>); mysql> create table test(id int(4) not null primary key auto_increment, name char(20) not null);
Query OK, 0 rows affected (0.01 sec) #查询表
mysql> show create table test\G;
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec) #Mysql字段类型
1.INT(M)型:正常大小证书类型
2.DOUBLE[(M,D)] [ZEROFILL]型:正常大小(双精密)浮点数字类型
3.DATE日期类型:支持的范围是1000-01-01到9999-12-31.MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列
4.CHAR(M)型:定长字符串类型,当存储是,总是使用空格填满右边到指定的长度
5.BLOG TEXT类型,最大长度为65535(2^16-1)个字符
6.VARCHARE型:变长字符串类型 #插入数据
命令:insert into <表名> [(<字段名1>[,..<字段名 n>])] values (值1)[,(值n)];
mysql> insert into test(id,name) values(001,'zhaoyue');
Query OK, 1 row affected (0.01 sec) 批量插入
mysql> insert into test values(4,'a'),(5,'b');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> insert into test(name) values('c'),('d'),('e');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0 #提升效率,因为建表的时候auto_increment,所以id是自增的 #查询
命令:select<字段 1,字段 2..>from <表名>where<表达式>
mysql> select * from test; #查询所有航 mysql> select * from test limit 0,2; #从第0行开始查,查2行记录,不加0就是查找2两行,一个用处 mysql> select * from test order by id desc; #以id为标准,倒序 mysql> select * from test order by id asc; #以id为标准,正序 mysql> select * from test where name='a'; #查询名字,以name字段为基准 mysql> select * from test where id=1; #查询,id可以不加单引号 mysql> select * from test where id<5 and id >2; #组合查询,and为关键字,逻辑和,必须两个都满足才会出结果 mysql> select * from test where id<5 and id >2; #只要满足一个即可 #多表查询,先建表 创建学生表
create table student(
Sno int(10) NOT NULL COMMENT 'No.',
Sname varchar(16) NOT NULL COMMENT 'name',
Ssex char(2) NOT NULL COMMENT 'Gender',
Sage tinyint(2) NOT NULL default '0' COMMENT 'age',
Sdept varchar(16) default NULL COMMENT 'Department',
PRIMARY KEY (Sno),
key index_Sname (Sname)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 创建课程表
create table course(
Cno int(10) NOT NULL COMMENT 'kechenghao',
Cname varchar(64) NOT NULL COMMENT 'kechengming',
Ccredit tinyint(2) NOT NULL COMMENT 'xuefen',
PRIMARY KEY (Cno)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8; 创建选课表
create table `SC` (
SCid int(12) NOT NULL auto_increment COMMENT 'zhujian',
`Cno` int(10) NOT NULL COMMENT 'kechenghao',
`Sno` int(10) NOT NULL COMMENT 'xuehao',
`Grade` tinyint(2) NOT NULL COMMENT 'xueshengchengji',
PRIMARY KEY (`SCid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 学生表插入数据
INSERT INTO student values(0001,'a','man',24,'a');
INSERT INTO student values(0002,'b','man',24,'b');
INSERT INTO student values(0003,'c','man',24,'c');
INSERT INTO student values(0004,'d','man',24,'d');
INSERT INTO student values(0005,'e','man',24,'e'); 课程表插入数据
INSERT INTO course values(1001,'C','5');
INSERT INTO course values(1002,'JAVA','4');
INSERT INTO course values(1003,'MYSQL','2');
INSERT INTO course values(1004,'yunwei',9);
INSERT INTO course values(1005,'math',3); 选课表插入数据
INSERT INTO SC(Sno,Cno,Grade) values(0001,1001,4);
INSERT INTO SC(Sno,Cno,Grade) values(0001,1002,3);
INSERT INTO SC(Sno,Cno,Grade) values(0001,1003,1);
INSERT INTO SC(Sno,Cno,Grade) values(0001,1004,6);
INSERT INTO SC(Sno,Cno,Grade) values(0002,1001,3);
INSERT INTO SC(Sno,Cno,Grade) values(0002,1002,2);
INSERT INTO SC(Sno,Cno,Grade) values(0002,1003,2);
INSERT INTO SC(Sno,Cno,Grade) values(0002,1004,8);
INSERT INTO SC(Sno,Cno,Grade) values(0003,1001,4);
INSERT INTO SC(Sno,Cno,Grade) values(0003,1002,4);
INSERT INTO SC(Sno,Cno,Grade) values(0003,1003,2);
INSERT INTO SC(Sno,Cno,Grade) values(0003,1004,8);
INSERT INTO SC(Sno,Cno,Grade) values(0004,1001,1);
INSERT INTO SC(Sno,Cno,Grade) values(0004,1002,1);
INSERT INTO SC(Sno,Cno,Grade) values(0004,1002,1);
INSERT INTO SC(Sno,Cno,Grade) values(0004,1003,2);
INSERT INTO SC(Sno,Cno,Grade) values(0004,1004,3);
INSERT INTO SC(Sno,Cno,Grade) values(0005,1001,5);
INSERT INTO SC(Sno,Cno,Grade) values(0005,1002,3);
INSERT INTO SC(Sno,Cno,Grade) values(0005,1003,2);
INSERT INTO SC(Sno,Cno,Grade) values(0005,1004,9); #查询总分
mysql> select Sname,sum(Grade) from SC a,student b where a.Sno=b.Sno;
mysql> select Sname,sum(Grade) from SC a,student b where a.Sno=b.Sno group by Sname; #使用explain查询select语句使用索引情况
mysql> explain select * from test where name='daniel'\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: test
type: ALL
possible_keys: NULL #没有走索引
key: NULL #没有走索引
key_len: NULL
ref: NULL
rows: 8
Extra: Using where
1 row in set (0.00 sec) mysql> explain select * from test where id=6\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: test #表
type: const #类型
possible_keys: PRIMARY #索引
key: PRIMARY #索引
key_len: 4
ref: const
rows: 1
Extra:
1 row in set (0.01 sec)

5.更新及删除库操作

mysql> select * from test;
+----+---------+
| id | name |
+----+---------+
| 1 | zhaoyue |
| 2 | daniel |
| 3 | jack |
| 4 | a |
| 5 | b |
| 6 | c |
| 7 | d |
| 8 | e |
+----+---------+
#修改 #修改id为7的name
mysql> update test set name='faker' where id=7;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 #修改name为faker的id
mysql> update test set id=100 where name='faker';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0 #删除 #删除id=8的
mysql> delete from test where id=8;
Query OK, 1 row affected (0.00 sec) #truncate table 表名--清除表内所有数据
mysql> truncate table test;
Query OK, 0 rows affected (0.00 sec)

表中增删改字段(dba操作)

命令:alter table 表名 add 字段 类型 其他;
例如:在表中添加字段 mysql> desc test; #现在test表只有两列
+-------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+----------------+
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | NULL | |
+-------+----------+------+-----+---------+----------------+
2 rows in set (0.00 sec) mysql> alter table test add sex char(4);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 #添加一个sex段 #默认放在最后一列,我要插在第一列后面怎么弄?
mysql> alter table test add age int(4) after id;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 #修改表名
mysql> rename table test to new_test;
Query OK, 0 rows affected (0.02 sec)

Mysql进阶-day1的更多相关文章

  1. mysql进阶(二十九)常用函数

    mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...

  2. mysql进阶(二十八)MySQL GRANT REVOKE用法

    mysql进阶(二十八)MySQL GRANT REVOKE用法   MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...

  3. mysql进阶(二十七)数据库索引原理

    mysql进阶(二十七)数据库索引原理 前言   本文主要是阐述MySQL索引机制,主要是说明存储引擎Innodb.   第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础.    ...

  4. mysql进阶(二十六)MySQL 索引类型(初学者必看)

    mysql进阶(二十六)MySQL 索引类型(初学者必看)   索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型.   在数 ...

  5. mysql进阶(十六)常见问题汇总

    mysql进阶(十六)常见问题汇总 MySQL视图学习: http://www.itokit.com/2011/0908/67848.html 执行删除操作时,出现如下错误提示: 出现以上问题的原因是 ...

  6. 【转】MySQL— 进阶

    [转]MySQL— 进阶 目录 一.视图 二.触发器 三.函数 四.存储过程 五.事务 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需 ...

  7. MySQL进阶(视图)---py全栈

    目录 mysql进阶(视图)---py全栈 一.什么是视图? 二.视图的特性 三.视图的优点 四.使用场合 五.视图基本操作 六.案例 mysql进阶(视图)---py全栈 一.什么是视图? 视图是从 ...

  8. mysql进阶练习

    一 .  MySQL进阶练习 /*==========================创建班级表=============================*/ CREATE TABLE class ( ...

  9. MySQL进阶19--函数的创建(举例)/设置mysql的创建函数的权限/查看(show)/删除(drop) / 举4个栗子

    /*MySQL进阶19 函数 存储过程和函数:都类似于java中的方法; 存储过程和函数通用好处: 1.提高代码的重用性 2.简化操作 好处: 减少操作次数,减少了编译次数,减少了和服务器的连接次数, ...

随机推荐

  1. C#控件的Resize事件

    1. 当控件大小发生改变时,就会触发该事件 所以适合动态调整UI的布局, 例如: 国际化,不同语言导致控件长度不同: 控件的内容是动态增加的,也可以使用. 2.必须是大小会发生改变的控件才会触发该事件 ...

  2. java的文件操作类File

    java.io.File类,是java获取文件/文件夹的所有属性,和完成所有相关操作的类 例子: package test.file.IO; import java.io.*; public clas ...

  3. [Mysql]——备份、还原、表的导入导出

    备份 1. mysqldump mysqldump备份生成的是个文本文件,可以打开了解查看. Methods-1 备份单个数据库或其中的几个表# mysqldump -u username -p'pa ...

  4. [Mysql 查询语句]——集合函数

    count() 统计记录条数 select count(*) from student; +----------+ | count(*) | +----------+ | +----------+ s ...

  5. MySQL字符串函数:字符串截取

    MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() ...

  6. python爬虫实战(七)--------伯乐在线文章(模版)

    相关代码已经修改调试成功----2017-4-21 一.说明 1.目标网址:伯乐在线 2.实现:如图字段的爬取 3.数据:存放在百度网盘,有需要的可以拿取 链接:http://pan.baidu.co ...

  7. scala笔记,主要摘自网络教程

    1.scala是一种纯面向对象的语言,每个值都是对象.对象的数据类型以及行为由类和特质描述 2.类的扩展有2种机制:继承和混入机制 3.scala是一种函数式语言,其函数也能当成值来使用 ==4.sc ...

  8. 面向对象(基础oop)之进入继承

    大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开 ...

  9. .net mvc 获取acion 返回类型

    1..net core 中获取 public override void OnActionExecuted(ActionExecutedContext context) { var descripto ...

  10. IDEA快捷键使用说明

    sout :  输出打印语句 System.out.println(); "内容".sout  : 也是打印 System.out.println("内容"); ...