目录
在企业信息化的过程中,数据库中库和表都会大量存在,需要分配给管理者核实的权限进行操作
合理地分配权限,可以使数据库管理井然有序,各个管理者只需要关注自己负责的内容,也可避免误操作对系统造成损失
数据库是信息系统中非常重要的一个环节,合理高效地对它进行管理是很重要的工作
通常是由总管理员创建不同的管理账户,然后分配不同的操作权限,把这些账户交给相应的管理人员使用
一.用户管理
新建用户
create user '用户名' @'来源地址 ' [create user [password] '密码'];
用户名:将要创建的用户名
来源地址:
指定新创建的用户可在哪些主机上登录,可使用 IP 地址、网段、主机名的形式
本地用户可用 localhost
如果想让该用户可以从任意远程主机登录,可用通配符 %
密码:
MySQL 5.7 版本启用了密码增强插件,新密码必须符合密码负载型要求,用户的登录密码不能为空
密码通常是需要经过加密处理再写入数据库,在不使用 password 关键字时,可以使用明文密码,直接输入"密码",插入到数据库时由 MySQL 自动加密
如果使用 password 关键字,可以直接插入密文,MySQL 不再进行加密处理
若使用加密密码,需要先使用select password(‘密码’); 获取密文,再在语句中添加 password ‘密文’
若省略“identified by”部分,则用户的密码将为空(不建议使用)
create user 'zhangsan'@'localhost' identified by '123123';
select password('123123');
create user 'lisi'@'localhost' identified by password
二. 登录数据库
mysql -u root -p 回车
输入密码
mysql -uroot -p123456 回车
重置数据库密码
mysqladmin -u root -p password
回车
新密码
再次输入密码
三、查看数据库结构
1、查看数据库信息
show databases;
show databases\G注意:数据库命令不区分大小写
2、查看数据库中包含的表结构
use 数据库名; #切换进入数据库,后面可以不加 ;
show tables; #查看数据库中的表,得加 ;
show tables in mysql; #查看指定库中的表,这条命令不需要use切换数据库再去看表
3、显示数据表的结构
describe [数据库名].表名; 如 desc kkk.test; 查看表的结构 desc test;
可缩写成:desc 表名;
四、常用的数据库类型
int | 整型 (如:1 2 3 ) |
---|---|
float | 单精度浮点 4字节32位 (准确表示小数点后六位) |
double | 双精度浮点 8字节64位 |
char | 固定长度的字符类型 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal(5,2) | 5个有效长度数字,小数点后面有2位 |
1.char和varchar的区别
- char:如果存入数据的实际长度比指定长度要小,会补空格指定长度,如果存入的数据比实际长度大于指定长度,低版本会截取,高版本会报错。
- varchar:如果存入的数据实际长度比指定长度要小,那么指定长度会变成实际长度一样,如果存入数据的实际长度大于指定长度,会报错。
2.截取和截断的区别
- 截取会对后一位进行四舍五入,截断直接获取要的数字,不进行四舍五入
五、MySQL数据文件
MysQL数据库的数据文件存放在 **/usr/local/mysql/data** 目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为".frm"、“.MYD"和”.MYI”
1、MYD文件
MYD文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个MyISAw表都会有一个"“.MYD"文件与之对应,同样存放于所属数据库的文件夹下,和”.frm"文件在一起。
2、MYI文件
“.MYI"文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM4存储来说,可以被 cache 的内容主要就是来源于”.MYI"文件中。每一个MyISAM表对应一个".MYI”文件,存放于位置和".frm"以及".MYD”一样。
3、MyISAM存储引擎
MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件(frm,myd,myi)。每个表都有且仅有这样三个文件做为MyISAM
存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI文件中。
另外还有".ibd"和 ibdata文件,这两种文件都是用来存放Innodb数据的,之所以有两种文件来存放Innodb的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储方式使用".ibd"文件来存放数据,且每个表一个".ibd"文件,文件存放在和MyISAM数据相同的位置。如果选用共享存储表空间来存放数据,则会使用ibdata文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata文件。
六、SQL语句
SQL 语句用于维护管理数据库,包括 数据查询、数据更新、访问控制、对象管理 等功能。
SQL语言分类:
DDL 数据定义语言,用于创建数据库对象,如库、表、索引等
DML 数据操纵语言,用于对表中的数据进行管理
DQL 数据查询语言,用于从数据表中查找符合条件的数据记录
DCL 数据控制语言,用于设置或者更改数据库用户或角色权限
1、DDL数据定义语言
用于创建数据库对象,如 库、表、索引等 删除数据库和表
create 创建数据库和表
drop 删除数据库和表及字段
alter 更改表的结构
1、创建新的数据库
create database 数据库名;
2、创建新的表格
create table 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
例:create database school;
use school; 进入数据库
create table class1 (id int not null,name char(10) not null,sex char(1),primary key (id)); 创建class1表并定义表结构create table school.class1 (id int(10) not null); # 在任意库中创建school库中的class1表
3、删除指定的数据表
use 数据库名
drop table 表名; 如: drop class1;
drop table [数据库名].表名;drop table gang.class1 #可以再别的数据库中删除指定数据库中的表
4、删除指定的数据库
drop database 数据库名;
七、DML数据操控语言
数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据。
insert 插入
update 修改
delete 删除表中指定内容
格式:
inster into 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);
1、向数据表中插入新的数据记录
例:create database city; 创建数据库
use city ; 进入数据库
create table class1 (id int NOT NULL,name char(10) NOT NULL, score decimal(5,2), passwd char(48) DEFAULT'',PRIMARY KEY (id)); 创建表需要定义表的字段结构
insert into class1 (id,name,score,passwd) values(1,'xiao',68,password('123456'));
insert into class1 (id,name,score,passwd) values(2,'lini',95.46,123456); 插入表内容insert into class1 values(5,'lini',95.46,123456),(6,'fff',55,123456); 另一种批量插入方法
#PASSWORD('123456'):查询数据记录时,密码字串以加密形式显示:若不使用PASSWORD(),查询时以明文显示。
2、查询数据记录
select 字段名1,字段名2[,...] from 表名 [where 条件表达式];
例:select * from class1; 查看class1表中所有信息
select name,score from class1 where id=2; 查看id=2的 name score
3、修改、更新数据表中的数据记录
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
例:insert into class1 (id,name,score,passwd) values(3,'mimi',95.46,123456);
insert into class1 (id,name,score,passwd) values(4,'gg',99,123456);
select * from class1;
update class1 set id=5 where name='lini'; 把lini的id改为5
update class1 set name='gg',score=66 where id=4;
select * from class1;update class1 set name='gg' where id>3; id>3的name都改为gg
4、在数据表中删除指定的数据记录
delete from 表名 [where 条件表达式];
例:delete from class1 where id=5;
select * from class1;delete from class1 where id>1; 删除id>1的记录
delete from class1 where name='lini'; 删除表中lini的记录
八、DQL数据查询语言
格式:select 字段1,字段2 from 表名 【where 条件表达式】;
select name from class1\G #以列表方式竖向显示
select * from class1 limit 2; #只显示头2行
select * from class1 limit 2,3; #显示第2行后的前3行select id,name from class1; #查看整个表中的id,name字段
select id,name,score from class1 where name='xiao'; #查看name为xiao的id,name,score
select id,name from class1 where score>80; #查看分数值大于80分的字段id,name ,
insert into class1 (id,name,score,passwd) values(2,'hello',78.8,123456);
insert into class1 (id,name,score,passwd) values(5,'abc',76,123456);
或者insert into class1 values(2,'hello',78.8,123456),(5,'abc',76,123456);
九、DCL数据控制语言-alter
1、修改表名
alter table 旧表名 rename 新表名; 更改表名不影响数据
例:alter table class1 rename test; 更改表名
show tables; 查看表
select * from test; 查看表内容
2、扩展表结构 (增加字段)
alter table 表名 add age int(3) default 'unknow';
把id小于30的行中的age修改20
3、修改表字段(列)
alter table 表名 modify 字段名 数据类型; 修改字段的数据类型
alter table class2 modify name char(8);
4、删除字段
alter table 表名 drop 字段名;
例:alter table test drop age;
5、修改字段(列)名,添加唯一键及删除唯一键
alter table表名 change 旧列名 新列名 数据类型 [unique key];
unique key :唯一键(特性:唯一,但可以为空,空值只允许出现一次)
primary key:主键(特性:唯一且非空)
aleter table 表名 change 旧属性名 新属性名 新数据类型;
alter table test change name char(10) unique key;修改表字段名及类型
6、添加删除主键
alter table 表名 add primary key (字段名); 添加主键
alter table 表名 drop primary key; 删除主键
十、了解约束
create table if not exists info (id int(4) zerofill primary key auto_increment,name varchar(10) not null,cardid int(18) not null unique key,hobby varchar(50));
if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建。
int(4) zerofill:表若数值不满4位数,则前面用“0”填充,例0001。
auto_increment: 表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可重复,自增长字段必须是主键,如添加的距离数据没有指定字段的值且添加失败也会自动递增一次。
unique_key : 表示此字段唯一约束,此字段数据不可以重复,一张表中只能有一个主键,但是一张表中可以有多个唯一键。
not null : 表示此字段不允许为NULL。
先创建一个表格, 判断是否存在,不存在创建
添加字段:id,设置为自增长,自主补0,主键
name:不为空 cardid: 不为空,唯一键 hobby:可为空
在info表中添加数据