10月19日学习内容整理:数据库的基本概念,基本管理命令和增删改查命令

一、基本概念:

》记录:文件中的一行内容就是数据库中的记录

》表:一个文件对应数据库中的一张表(一个表可能对应好几个文件,只要名字一样(后缀名不算)就可以成为同一张表)

》库:一个文件夹对应数据库的一个库

》数据库管理系统:指的就是mysql,orcale,db2,mariadlb,sql server等服务端软件,简称数据库,所以我们日常所说的数据库指的是管理系统,说创建一个数据库指的是创建一个文件夹

》关系型数据库:必须有表结构(存在硬盘里)比如mysql,orcale,db2,mariadlb,sql server这些都是关系型数据库

——>过程:

打开连接

切到一个文件下\找到一个文件\打开文件\读写记录\关闭文件

关闭连接

》非关系型数据库:数据都是以key=value这样的形式存放的(存在内存中),所以取的速度很快,并且会有支持数据持久化的功能(会隔一段时间将内存中的数据刷到硬盘中,防止断电等操作导致数据丢失)

》数据库服务器:指安装有数据库管理系统的一台机器

(mysql的端口号3306)

(mysqld是服务端)

 

二、基本管理命令

》》》》》》mysql命令是以分号隔开的,所以敲完命令就要写分号

》命令末尾加\c代表命令不执行
###1 登录:cmd目录下
mysql -uroot -p123 root是用户名,123是密码(root是管理员帐号)


###2 查看用户:mysql目录下
select user(); 当前登录用户


###3 退出:mysql目录下
quit
exit
\q


###3 查看帮助信息:mysql目录下
help create user;帮助信息中的中括号代表可以写可以不写,除了中括号的都是必须写的

 


###4 创建帐号:mysql目录下
create user 'egon'@'localhost' identified by '123'; egon即为用户名,localhost代表只能使用当前计算机登录(本地登录),123为密码
create user 'egon'@'192.168.32.*' identified by '123'; 代表所有32网段的计算机都可以登录
create user 'egon'@'192.168.32.3' identified by '123'; 代表只有地址为32.3的计算机能登录
create user 'egon'@'%' identified by '123'; %代表所有的计算机都可以登录,但是并不包括本地登录,意思就是设置%完后用同样的用户名和密码在当前计算机是登录不了的,要想在本地登录必须设置为localhost

 

 


###5 授权:mysql目录下
grant all privileges on db1.t1 to 'egon'@'%' all代表所有操作权限,针对t1文件的操作权限,给了egon这个用户,但是并没有授权grant权限,也就是给别人授权
grant select on db1.t1 to 'egon'@'%'; 代表只开放select这个操作权限给egon用户
grant all on *.* to 'egon'@'%'; *.*代表所有文件夹的所有文件

》flush privileges; 刷新使授权生效,因为我们修改权限是写到文件里,而要把修改的东西放到内存中mysql才会认识,这样才能真正生效,凡是有涉及到权限的操作都要进行刷新操作,其实重启mysql也可以

all privileges  除grant外的所有权限
            select          仅查权限
            select,insert   查和插入权限
            ...
            usage                   无访问权限
            alter                   使用alter table
            alter routine           使用alter procedure和drop procedure
            create                  使用create table
            create routine          使用create procedure
            create temporary tables 使用create temporary tables
            create user             使用create user、drop user、rename user和revoke  all privileges
            create view             使用create view
            delete                  使用delete
            drop                    使用drop table
            execute                 使用call和存储过程
            file                    使用select into outfile 和 load data infile
            grant option            使用grant 和 revoke
            index                   使用index
            insert                  使用insert
            lock tables             使用lock table
            process                 使用show full processlist
            select                  使用select
            show databases          使用show databases
            show view               使用show view
            update                  使用update
            reload                  使用flush
            shutdown                使用mysqladmin shutdown(关闭MySQL)
            super                   􏱂􏰈使用change master、kill、logs、purge、master和set global。还允许mysqladmin􏵗􏵘􏲊􏲋调试登陆
            replication client      服务器位置的访问
            replication slave       由复制从属使用

对于权限
关于权限
对于目标数据库以及内部其他:
            数据库名.*           数据库中的所有
            数据库名.表          指定数据库中的某张表
            数据库名.存储过程     指定数据库中的存储过程
            *.*                所有数据库
关于数据库
用户名@IP地址         用户只能在改IP下才能访问
            用户名@192.168.1.%   用户只能在改IP段下才能访问(通配符%表示任意)
            用户名@%             用户可以再任意IP下访问(默认IP地址为%)
关于用户

 

#创建帐号同时授权:mysql目录下
grant all on *.* to 'alex'@'%' identified by '123';
》flush privileges;

 


###6 远程连接mysql:cmd目录下
mysql -uegon -p123 -h 192.168.11.55 这个地址就是要远程连接的计算机的地址,其实就是服务端的地址

 


###7 查看所有的数据库:mysql目录下
show databases; 也就是查看当前登录用户所有的数据文件夹

下图中就是结果,其中info开头的是指的内存中的临时数据,mysql和db1和per和test是data文件夹中的文件,mysql是我们用来操作的,per和test也不用管,db1是自己创建的

 


#8 修改密码:cmd目录下
命令行>mysqladmin -uroot password 123 密码是123,注意这里的密码写什么就是什么,也包括引号括号什么的
命令行>mysqladmin -uroot -p'123' password 123 修改原密码,原密码是'123',新密码是123


#9 破解密码:当密码忘记了的时候
#第一步:杀死mysqld服务,cmd目录下

C:\Users\Administrator>tskill mysqld 直接干掉进程

C:\Users\Administrator>tasklist |findstr mysql 查看进程ID号
mysqld.exe 5320 Console 1 456,832 K
C:\Users\Administrator>taskkill -f /PID 5320 依据ID号干掉进程

linux系统下
—pkill mysqld 干掉进程

—ps aux | grep mysqld 查看进程的ID号
—kill -9 5320 再根据ID号干掉进程


#第二步:跳过授权表启动
C:\Users\Administrator>mysqld --skip-grant-tables
#第三步:改密码,mysql目录下
mysql> update mysql.user set password=password('123') where user='root' and host='localhost';新密码为123
mysql> flush privileges;
#第四步:通常改完后我们需要重启一下mysqld服务端,cmd目录下
C:\Users\Administrator>tskill mysqld
C:\Users\Administrator>tasklist |findstr mysql
C:\Users\Administrator>mysqld
#第五步:重新以新密码登录:cmd目录下

 

 三、增删改查命令

 

》删除操作要用命令删,尽量不要在硬盘中删
#操作库(文件夹)
  - 增
    create database db1 charset utf8;
    create database db1 if not exists charset utf8; 代表已经有就不创建,没有就不创建
  - 查
    show databases; 查看所有的数据库
    show create database db1; 查看创建的数据库
    select database(); 查看当前目录所在库
  - 改
    alter database db1 charset gbk; 没有改名字的情况,修改编码
  - 删
    drop database db1; 删除文件夹

#操作表(文件)
  切换到某一个库(文件夹)
    use db1;
    select database();#查看当前所在的库
  - 增
    create table t1(id int,name char(10),age int)engine=innodb default charset utf8;
    》最后一个字段一定不要加逗号,也可以加if not exists
    》括号里是表的标题或是字段(相当于python里的变量),标题后(不能有标点符号)一定要指定类型,括号里的数字是宽度
     超过长度有的版本会报错,有的版本会只存指定的宽度

    》char类型默认宽度是1,int类型默认宽度是11
    》每个标题之间用逗号隔开
    》engine是存储引擎,就是表的类型,就是文件的类型,比如视频,文本,word之类,代表着对文件的操作方式不一样
    》charset是指定编码
  - 查
    show tables; 查看当前目录下所有的表
    show create table t1; 查看创建的表的状态,里面也没有数据,会有编码和存储引擎和字段和类型
    desc t1;#查看表结构,里面是没有数据的,会有字段和类型
  - 改
    alter table t1 charset gbk; 修改编码
    alter table t1 add sex char; 增加字段sex,就是标题,也要指定类型,可以不指定宽度,char默认宽度是1
    alter table t1 drop sex; 删掉有一个字段或者标题
    alter table t1 modify sex char(6); 修改字段的宽度
    alter table t1 change sex Sex char(6); 修改字段的名字,sex是原名,Sex是新名字

  - 删
    drop table table66; 删除表

#操作记录
  - 增

    》第一种写法,字段也可以不写,但是必须按照表中的字段一一对应,若字段中有自增操作的话不写字段并且也不传的话是会报错的,所以字段名就写除了         有自增操作以外的字段名就可以了

    insert into db1.t1(id,name,age,Sex) values 
    (1,'egon1',18,'male'),
    (2,'egon2',28,'male'),
    (3,'egon3',38,'male'),
    (4,'egon4',48,'male');

    》第二种写法,也可以只写某些字段,其它字段可以接受空值,但如果设置了约束条件就要注意了,而且写什么字段就要传值,若是写了自增操作的字段值                    没有传的话也是会报错的,所以自增操作的字段名就不要写

    insert into db1.t1(id,name) values(5,'egon5'); 

  
  - 查
    select name,id from db1.t1; 查看表中指定的字段值,若当前目录就是表所在的目录,就没必要再写表的名字db1了
    select * from db1.t1; 查看表中所有的字段值
  - 改
    update db1.t1 set name='EGON4'; 修改记录中的名字,这就是把所有的记录全改了
    update db1.t1 set name='alexsb' where id=5; 修改记录中id是5的所有名字,where是筛选条件
    update db1.t1 set name='aaaa' where Sex='male';
  - 删
    delete from db1.t1; #仅仅只有删除记录的效果,没有把表重置到初始状态的功能
    truncate db1.t1; #清空表中的所有记录+重置表到初始化状态

    delete from db1.t1 where id=3; 删除id为3的记录,where是筛选条件
    delete from db1.t1 where name='dddd';


#自增id
    create table t1(id int not null unique auto_increment,name char(4)); #可以在类型后加约束条件
    》》not null unique是不能为空且唯一
    》》primary key 代表不能为空且唯一
    》》auto_increment代表自增操作
    》》自增的字段必须是不为空且唯一的
    insert into db1.t1(name) values
    ('egon1'),
    ('egon2'),
    ('egon3'),
    ('egon4');

 

posted @ 2017-10-19 20:01  九二零  阅读(124)  评论(0编辑  收藏  举报