目录
一、数据库基本操作介绍
1、简单操作
2、常用数据类型
3、SQL语言分类
二、数据库操作命令
1、创建数据库和表
2、删除指定的数据表和数据库
3、插入新数据:insert
4、修改、更新原有数据:update
5、删除不需要的数据:delete
6、查询数据记录——select
7、修改表名
8、扩展表结构(增加字段)
9、修改字段(列)名,添加唯一键
10、删除字段、主键
11、克隆
三、数据库用户授权
1、DCL语句设置用户权限(用户不存在时,则新建用户)
2、查询权限
3、删除权限
4、数据库用户管理
总结
;是结束符 show databases; #查看数据库 #以下操作需要先登录数据库 use mysql #登录数据库 show tables; #查看数据库表 或者show tables in mysql mysql -uroot -p123456 #设置数据库用户和密码 describe 表; #查看数据表结构 desc 表
类型 | 说明 |
int | 整型(定义整数类型数据) |
float | 单精度浮点,4字节32位,准确到小数点后六位 |
double | 双精度浮点,8字节64位 |
char | 固定长度的字符类型,定义字符类数据 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal (5,2) | 5个有效长度数字,小数点后面有2位,指定长度数组 |
Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错
主键是唯一的,但主键可以由多个字段构成
MysSQL数据库的数据文件存放在/usr/local/mysql/data日录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为".frm"、 ".MYD"和".MYI"。
MYD"文件是MyTSAM存储引擎专用,存放MyISAM表的数据。每一个MyISAM表都会有一个".4YD"文件与之对应,同样存放于所属数据库的文件夹下,和".frm"文件在一起。
作用:SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如ICOMIT、ROLLBACK、GRANT、REVOKE)
create temporary table 创建缓存表
use 数据库名; drop table 表名; 或 drop table [数据库名.]表名;
insert into 表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...); 字段中,可使用 password('密码') ,能够使用加密型密码
update 表名 set 字段名1=字段值1[,字段名2=字段值2] [where 条件表达式]; 改条件表达式一定需要谨慎 如果有相同的项,可能就会出现同时修改的情况所以尽量使用主键作为条件表达式选项
delete from 表名 [where 条件表达式]; truncate table 表名; #彻底删除 create table test ( id int(4) primary key auto_increment,name varchar (10)not null, cardid int (18),M hobby varchar (50) ); #anto_increment id自动增长
select 字段名1,字段名2[,...] from 表名 [where 条件表达式]; 小技巧: select * from 表名; #显示全部 select 字段1,字段2 from 表名; #显示字段1和字段2 select 字段1 from 表名\G; #以列表形式竖向显示 select * from 表名 info limit 2; #只显示头2行 select * from 表名 info limit 2,3; #显示第2行后的前3行
alter table 旧表名 rename 新表名;
alter table 表名 add address varchar(50) default '地址不详';
alter table 表名 change 旧列名 新列名 数据类型 [unique key]; #change 可修改字段名、数据类型、约束等所有项 唯一键:唯一,但可以为空(空值只能出现一次) 主键包含唯一键的部分属性 唯一键不能完全作为主键
alter table 表名 drop 字段名;
create table 新表 like 原表; insert into 新表 select * from 原表;
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [ IDENTIFIED BY‘密码’] #允许用户lisi在所有终端远程连接mysql,并拥有所有权限 GRANT ALL PRIVILEGES ON ly.* TO 'lisi'@'%' IDENTIFIED BY '123456';
show grants for 用户@来源地址; flush privileges; #刷新权限
revoke 权限列表 on 数据库名.表名 from 用户名@来源地址;
1、新建用户 CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码']; '用户名':指定将创建的用户名. '来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录 可用通配符% '密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密; 若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文'; 若省略“IDENTIFIED BY"部分,则用户的密码将为空(不建议使用) CREATE USER 'user1'@'localhost' IDENTIFIED BY '123456'; SELECT PASSWORD('abc123'); CREATE USER 'user2'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'; 查看用户信息 创建后的用户保存在mysql 数据库的user表里 USE mysql; SELECT User,authentication_string,Host from user; 重命名指定 RENAME USER 'zhangsan'@'localhost' TO 'lisi'@'localhost'; 删除用户 DROP USER 'lisi'@'localhost' ; 修改当前密码 SET PASSWORD = PASSWORD('abc123'); 修改其他用户密码 SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('abc123T'); 忘记root密码的解决办法 修改/etc/my.cnf 配置文件,免密登陆mysql vim /etc/my.cnf [mysqld] skip-grant-tables #添加,使登录mysql不使用授权表 systemctl restart mysqld mysql #直接登录 然后使用SQL语句修改密码 UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root'; FLUSH PRIVILEGES; quit mysql -u root -pabc123 PS:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除,并重启mysql服务
管理数据库的常用命令有
查询数据库,数据表——show datebases/tables 数据库、数据表 ;
新增数据库、数据表——create datebase/table 数据库、数据表;
删除数据库、数据表——drop/truncate datebase/table 数据库、数据表;
删除数据——delete from 表 where 条件表达式;
插入数据——insert into 表(字段1,字段2);
修改更新数据——update 表 set 字段名=字值,where 条件表达式;
拓展修改表名——alter table 旧表 rename 新表;(alter table 表 add 字段)
修改字段名——alter table 表 change 旧列名 新列名 数据类型;
删除字段——alter table 表名 drop 字段名;
查询数据——select 字段 from 表名;
复制表——create table 新表 like 原表;(insert into 新表 select * from 原表;)
授权——GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [ IDENTIFIED BY‘密码’]
删除——revoke 权限列表 on 数据库名.表名 from 用户名@来源地址;
查授权——show grants for 用户@来源地址;(flush privileges; #刷新权限)