一.Mysqld数据库类型
常用的数据类型
int | 整型 无符号[0-4294967296(2的32次方)-1],有符号[-2147483648(2的31次方)-2147483647] |
float | 单精度浮点 4字节32位 |
double | 双精度浮点 8字节64位 |
char | 固定长度的字符类型 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal(5,2) | 5个有效长度数字,小数点后面有2位 |
二.查看数据表结构的操作
查看当前的 MySQL 版本信息及连接用户名:
SELECT VERSION();
SELECT USER();
1.查看当前服务器中的数据库
SHOW DATABASES; #大小写不区分,分号“;”表示结束
MySQL会附带4个系统数据库:
- information_schema:主要存储系统中的一些数据库对象信息,如数据库名,数据库的表,表栏的数据类型与访问权限等
- mysql:主要存储系统的用户权限信息
- performance_schema:主要存储数据库服务器性能参数信息
- sys:MySQL5.7之后引入的一个新的 sys 数据库,sys 库里面的表、视图、函数以及存储过程可以让用户快速了解MySQL的一些信息,它的数据来源于performance_schema
2.查看数据库中包含的表
USE 数据库名;
SHOW TABLES;
#在不切换库的情况下直接查看表:show tables from 数据库名;
3.查看表的结构(字段)
USE 数据库名;
DESCRIBE [数据库名.]表名;
可缩写成:DESC 表名;
#在不切换库下查看某个表的结构:desc 库名.表名;
三.SQL语句
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
SQL语言分类:
- DDL:用于管理数据库对象(库、表、索引 等)
- DML:数据操纵语言,用于对表中的数据进行管理
- DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
- DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
1.DDL
1)创建新的数据库
CREATE DATABASE 数据库名;
2)创建新的表
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
3)删除指定的数据表
DROP TABLE [数据库名.]表名; #如不用USE进入库中,则需加上数据库名
4)删除指定的数据库
DROP DATABASE 数据库名;
5)修改表结构
alter table 旧表名 rename 新表名;
alter table 表名 add 新字段 数据类型 [约束属性];
alter table 表名 change 旧字段 新字段 数据类型 [约束属性];
alter table 表名 drop 字段名;
alter table 表名 add primary key(字段名);
alter table 表名 drop primary key;
6)在数据表中删除指定的数据记录
在数据表中删除指定的数据记录
DELETE FROM 表名 [WHERE 条件表达式];
例:
DELETE FROM qwer123 WHERE id=4;
7)克隆表
create table 新表名 like 旧表名; #克隆表结构
insert into 新表名 select * from 旧表名; #克隆表数据 可实现表结构和表数据与旧表都一样
create table 新表名 (select * from 旧表名); #表数据和旧表是一样的,新表的结构和旧表的不一定一样
8)清空表
清空表
delete from 表名; #一条一条的删除记录,清空表效率较慢;AUTO_INCREMENT自增字段仍保持原有的记录
truncate table 表名; #直接重建表,清空表效率较快;AUTO_INCREMENT自增字段的记录也会重置
2.DML 用于管理表数据
1)向数据表中插入新的数据记录
INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);
SELECT * FROM xy101; #查询表的数据记录
2)修改、更新数据表中的数据记录
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
3.DQL:用于查询表数据
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
select * from 表名\G #以列表方式竖向显示
select * from 表名 limit 2; #只显示头2行
select * from 表名 limit 2,3; #显示第2行后的前3行
4.DCL:用于管理用户和权限
create user '用户名'@'来源地址 identified by '密码';
来源地址:
localhost ip 网段 %(任意地址) 主机名
修改用户名
rename user 'root'@'%' to 'wei'@'%';
修改密码
set password for '用户名'@'来源地址' = password('密码');只可以root用户
alter user '用户名'@'来源地址' identified by '密码'; 修改密码
用户权限管理:
grant 权限1, 权限2 ON 库名.表名 to '主机名'@'来源地址'identified by 密码
查看权限
show grant for '用户名'@'来源地址';
撤回权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'来源地址'
四.拓展
1.如何找回root密码
1)修改MySQL配置文件,在 [mysqld] 配置项下面添加配置 skip-grant-tables
2)重启MySQL服务,使用 mysql 命令即可直接登录数据库
3)执行命令 update mysql.user set authentication_string=password('密码') where user='root'; 来修改root用户密码
4)还原MySQL配置文件,再重启MySQL服务,即可使用命令 mysql -u root -p密码 [-h 服务器地址 -P 端口] 登录数据库
2.权限管理
grant 权限1,权限2,.... on 库名.表名 to '用户名'@'来源地址' [identified by '密码']; #在5.7或之前支持 grant 创建新用户和授予权限,8.0开始只能用于授予权限
all [privileges] *.*(代表 任意库.任意表)
flush privileges;
show grant for '用户名'@'来源地址';
revoke 权限列表 on 库名.表名 from '用户名'@'来源地址';
all