mysql数据库的增、删、改、查
一、登录mysql数据库
数据库的基本结构
- 结构:
库——表——数据
mysql数据库的默认管理员是root
登录格式:
- 没有密码时:mysql -u root
- 第一次设置密码:mysqladmin -u root -p password ‘密码值’
(输入后,下一步直接回车即可)
- 有密码后登录为:mysql -u root -p
(按照提示输入密码)
或 mysql -u root -p密码值(直接登录)
- 非第一次修改密码:mysql -u root -p password
(按照提示先输入旧密码,然后根据提示输入两次新密码)
二、退出与查看数据库及相关规则
所有的mysql的操作语句基本上都需要以 ’ ; '结束,但是也有少许不需要,但是最好还是养成习惯,(;与 , 要使用英文的)
输入时不区分大小写,一般来说执行完命令后,会提示 “OK”的
- 查看数据库服务的基本信息:
msyql>status;
退出数据库:exit; 或 quit;
三、数据库中查看与创建库和表
命令格式:
***查看数据库中有那些库
mysql>show databases;
***切换到指定的库中
mysql>use 库名;
***查看当前库中有哪些表
mysql>show tables;
***查看mysql库中指定表的数据结构
mysql>describe 库名.表名;
***创建表
mysql>create table 库名.表名 (字段1名称 类型,字段2名称 类型,... primary key (主键名));
***删除指定表
mysql>drop table 库名.表名;
***删除指定库
mysql>drop database 库名;
示例:
- 查看当前数据库中存在那些库
mysql>show databases;
- 切换到指定库中
mysql>use mysql;
- 查看当前库有哪些表
mysql>show tables;
- 查看表的结构
mysql>describe user;(得先切换到指定库之后才能直接查看)
mysql>describe mysql.user;(这个不需要切换到指定库,前面跟上表所在的库就可以)
- 创建新的库
mysql>create database aaa; (创建一个库叫aaa)
- 创建一个新的表
mysql>create table aaa.abc (xm char(16) not null,nl char(12) default ’ ',sx char(10),yy char(10),primary key (xm));
这里括号里的 char(16) 表示最多可以输入16个字符
not null 表示不允许为空
default ’ ’ 表示默认为空,但是如果插入数据的话指定了是多少,那么就是多少,只有在插入数据的时候不写,才会默认变成空(如果'20'那么就是默认为20,这里的什么也没有,所以是空)
primary key (xm) 这里表示主键是xm,主键有唯一性并且不能为空,也就是说,xm的数据不能有重复的
(写的过程中我的'老是变成’这个,所有的命令只要有'都是',不是‘这个,并且所有的标点符号都是英文的)
创建完可以使用describe查看表的结构,会显示表的基本信息
- 删除指定表
mysql>drop table aaa.abc;
- 删除库
mysql>drop database aaa;
删除后会使用show databases; 查看会发现创建的库没有了
四、管理表中的数据
命令格式:
往表中插入数据
mysql>insert into 库名.表名 (字段1名称,字段2名称,...) values('字段1的值','字段2的值',...);
简化版:insert into 库名.表名 values('字段1的值','字段2的值',...);
(这个是把字段隐藏了,写字段值的时候按表的数据结构的顺序写就行)(每个字段值都要加'')
如:insert aaa.bbb (姓名,数学,计算机) values('李蔚','88','77');
即往aaa这个库中的bbb表中的字段 姓名,数学,计算机 里插入数据 李蔚 88 77
查询数据记录
mysql>select 字段1名称,字段2名称,... from 库名.表名 where 条件; (select * 表示查询全部,也可以根据条件查询)
如:select 姓名,数学,计算机 from aaa.bbb where 数学= '88';
即查询aaa这个库中bbb中数学成绩等于88 的数据,并且只显示字段 姓名,数学,计算机
select * from aaa.bbb;
即查询aaa库中的bbb表中的所有数据记录
修改表中的数据
mysql>update 库名.表名 set 字段1名称=新值,字段2名称=新值... where 条件;
如: update aaa.bbb set 计算机='80',数学='82' where 姓名='刘波';
即把aaa库中的bbb表中的 姓名是刘波 的数据记录的 计算机字段值改成 80 ,数学字段值改成 82
删除表中指定的数据
mysql>delete from 库名.表名 where 条件;
如: delete from aaa.bbb where 姓名='魏帅';
即删除aaa库中的bbb表中的姓名字段值是魏帅的所有数据
示例:
- 往表中插入数据
- 查询数据记录
- 修改表中的数据
再次查看,发现已经修改成功
- 删除表中指定数据
再次查看,发现已经删除成功
五、数据库用户授权
- 原因:Mysql数据库中的root账户拥有所有的库、表的所有权限
(权限太高会产生安全风险)
- 解决方案:创建一些低权限用户,让该账户只负责一部分的库,表的管理和维护
命令格式:
授予权限
mysql>grant 权限列表 on 库名.表名 to 用户名@指定的ip地址 identified by '密码值';
权限列表:select (查询)、 insert (插入)、update (修改)、delete (删除)、all(所有)等
库名.表名 针对指定的库和表,* 代表所有
用户名@指定的ip地址 用于指定用户名称和允许访问的客户端地址 (localhost就是本机)
identified by '密码值' 设置用户连接mysql数据库时所用的密码
如:grant select on aaa.* to 'aaa'@'localhost' identified by '123456';
即授权一个用户名是aaa,允许从本机登录,对aaa库中的所有表有查询的权限,密码是123456
查看权限
mysql>show grants for 用户名@指定的ip地址;
如:show grants for boss@localhost;
即查看boss在本机的权限
取消权限
mysql>revoke 权限列表 on 库名.表名 from 用户名@指定的ip地址;
如:revoke all on aaa.* from boss@loaclhost;
即取消boss对aaa库中表的所有权限
示例:
- 授予权限
- 查看权限
- 取消权限
再次查看