初识mysql

数据库

"""
1.什么是数据库:
	就是管理数据的系统,本质上是一种安装的管理系统,该系统用来管理的那些数据其实就是管理文件。

2.存储数据的位置:
	可以在内存或者硬盘中进行存储

3.什么是系统:
	运行在硬件基础上,用来管理其他软件的软件,比如操作系统就是一个非常大的系统
"""


# 数据库的组成

'''
库:存放多张表(其实就是一个文件夹,比如教学管理库,里面有学生表,课程表,教师表)


表:包含有多条相同结构的记录(比如学生表,包含id = 1,2,3,4,5,6....等等多条记录.)


记录:包含有多个key-value键值对的一条二进制数据(例如:id为1的记录:(‘name’ = ‘Bob’, 'age' = 18, 'gender' = '男'))


字段:由key-value组成的本质上是二进制的信息(例如:name = 'Bob' 是一个字段, age = 18也是一个字段)
'''

数据库的分类

'''
1)关系与非关系
	
    关系:数据库表与表之间有联系 -Mysql,Sqlserver,Oracle
    
    非关系:没有表的概念,是用key-value存储的 -Redis、mongodb(介于关系与非关系之间)
    
    
2)内存与硬盘

	硬盘:数据可以永久存储  -mysql、mongodb
    
    内存:数据的存取效率极高  -redis、memcache
    
    
3)sql与nosql
	
    sql:数据库操作通过sql语句。(其实就是关系型数据库)
    
    nosql(not only sql),泛指非关系型的数据库,数据库的操作就是key-value形式(value就是一条记录)
    
    stu --- {'name': 'Bob', 'age': 18}
    stus --- [{'name': 'Bob', 'age': 18}, {'name': 'Alice', 'age': 27}]
    name --- 'Jerry'
    
'''
    

卸载

"""
前提)启动终端,输入 mysql,如果不是提示 不是内部或外部命令,代表已安装数据库

1)直接连入
	i 搜索:服务,检索mysql服务,有
		停止服务,并移除服务 - 启动管理员终端:mysqld --remove
			
	ii 搜索:服务,检索mysql服务,无 (mysql使用命令启动)
		停止服务,启动管理员终端
			tasklist | findstr mysql
			taskkill /pid 进程pid /f
	
2)连接超时
	搜索:服务,检索mysql服务,移除服务即可
	
3)移除环境变量


总结:如果能连入,先停止服务 | 如果添加了服务,就移除服务 | 取消环境变量配置

"""

安装

"""
1、解压免安装版本(5.6 - 没有初始密码)
2、配置环境变量:数据库绝对路径下的bin
3、配置服务:
	启动管理员终端:mysqld --install [nmysql]
"""

连接数据库

1)游客登陆(不一定能登入,登入了也啥都不能干)
>: mysql
    
2)账号密码登录
>: mysql -u root -p
再次输入密码,没有任何提示,没有密码直接回车

3)
>:mysql -h ip地址  -P 端口号  -u 账号   -p
回车后敲密码


4)退出数据库
exit
quit

用户信息查看

1)查看当前登录的用户
mysql>: select user();

2)root权限下可以查看所有用户信息
mysql>: select * from mysql.user;
mysql>: select * from mysql.user G
mysql>: select user,password,host from mysql.user;

3)root登录下,删除游客(操作后要重启mysql服务)
mysql>: delete from mysql.user where user='';

4)root登录下,修改密码(操作后要重启mysql服务)
mysql>: update mysql.user set password=password('12345678') where host='localhost';

5)没有登录
>: mysqladmin -u用户名 -p旧密码 -h域名 password "新密码"
eg>: mysqladmin -uroot -p12345678 -hlocalhost password "root"

6)root登录下,创建用户
mysql>:grant 权限们 on 数据库名.表名 to 用户名@主机名 identified by '密码';

数据库的基本操作

1)查看已有数据库
mysql>:show databases;

2)选择某个数据库
mysql>:use 数据库名

3)查看当前所在数据库
mysql>:select database();

4)创建数据库
mysql>:create database 数据库名 [charset=编码格式];
eg>: create database owen;
eg>: create database zero charset=utf8;
eg>: create database tank;

5)查看创建数据库的详细内容
mysql>:show create database 数据库名;
eg>: show create database owen;

6)删除数据库
mysql>: drop database 数据库名;
eg>: drop database tank;

表的基本操作

前提:先选取要操作的数据库

1)查看已有表
mysql>:show tables;

2)创建表
mysql>:create table 表名(字段们);
eg>: create table student(name varchar(16), age int);
eg>: create table teacher(name varchar(16), age int);

3)查看创建表的sql
mysql>:show create table 表名;
eg>: show create table student;


4)查看创建表的结构
mysql>:desc 表名;

5)删除表
mysql>: drop table 表名;
eg>: drop table teacher;

记录的基本操作

1)查看某个数据库中的某个表的所有记录,如果在对应数据库中,可以直接查找表
mysql>: select * from [数据库名.]表名;
注:*代表查询所有字段

2)给表的所有字段插入数据
mysql>: insert [into] [数据库名.]表名 values (值1,...,值n);
eg:如果给有name和age两个字段的student表插入数据
1条>:insert into student values ('Bob', 18);
多条>:insert into student values ('张三', 18), ('李四', 20);
指定库>:insert owen.student values ('张三', 18), ('李四', 20);

3)根据条件修改指定内容
mysql>: update [数据库名.]表名 set 字段1=新值1, 字段n=新值n where 字段=旧值;
eg:> update student set name='王五', age='100' where name='张三';
注:i) 可以只修改部分字段 ii) 没有条件下,所有记录都会被更新
eg:> update student set name='呵呵';

4)根据条件删除记录
mysql>: delete from [数据库名.]表名 where 条件;
eg:> delete from student where age<30;

数据库习题

'''


1.详细解释下列mysql执行语句的每个参数与参数值的含义



mysql -hlocalhost -P3306 -uroot -proot

这句话的意思是远程连接指定的服务器:
	首先第一个参数mysql就是固定写法	
	
	第二个语句-hlocalhost拆开来看就是,-h后面跟的是数据库
	的ip地址,
	
	第三个语句-P3306拆开来看就是,-P后面跟的是数据库的端口
	号	
	
	第四个语句-uroot拆开来看就是,-u后面跟的是数据库的账号
	
	第五个语句-proot拆开来看就是,-p后面跟的是数据库的密码
	
所以上面远程连接指定数据库的命令就是:

	mysql -h+ip地址 -P+端口号 -u+账号 -p+密码
	
	
	
	
	
2.创建以下数据库:

db1---采用默认编码:
	create database db1;

db2---采用gbk编码:
	create database db2 charset='gbk';

db3---采用utf8编码:
	create database db3 charset='utf8';

将bd2数据库编码修改为utf8编码格式:
	alter database db2 charset="utf8";
删除db3数据库:
	drop database db3;
	
	
	
	
3.创建表操作:
	-- 在db1数据库内,为其添加一个t1表,表有两个字段(id int, name char)	
	
	create table t1(id int, name char);	
		


	-- 在db2数据库内,为其添加一个t2表,表有三个字段(name char, age int, phone int)
	
	create table t2(name char, age int, phone int);
	
	

	-- 思考完成:在db2数据库内,为db1添加表tt1,字段可以自由定义
	
	create table db1.tt1(name char, age int, sex char);
	

	-- 修改db1库t1表的name字段char类型长度为20,db2库t2表的age字段int类型长度为3
	
	alter table db1.t1 change name name char(20);
	
	alter table db2.t2 change name name int(3);
	


	-- 删除思考题(数据库db1)中的tt1表
	
    drop table db1.tt1;
	


	-- 使用三种查询表的方式
	
    show tables;(查看所有的表)
    
    show create table t1;(查看指定表的详细信息)
    
    desc t1;(以表格的形式展示t1的详细信息)
  

4.记录操作

	-- 一次插入三条数据,为t1插入三条数据
	
	insert into table t1(name, age, sex) values('michael', 18, 'male');
	
	
	-- 一次插入一条数据,分二次为t1表插入两条数据
	
	insert into table t1(name) values('jackson');
	
	insert into table t1(age) values(18);
	
	

	-- 分别查询显示t1,t2表下的所有数据
	
	select * from t1;
	
	select * from t2;
	


	-- t1表下根据id条件更改name名字
	
	update t1 set name='michael' where id = 1;
	

	-- t2表下根据name删除一条数据
	
	delete from t2 where name='nick';
    
	
'''

如果在mysql命令行里面退不出来了,可以通过输入(‘c)退出界面

mysql密码忘记了,登录不上,请见 重设密码

原文地址:https://www.cnblogs.com/michealjy/p/11560171.html