当前位置: 首页 > news >正文

MySQL(三)

DDL(数据定义语言)

/* 创建数据库testone */
create database testone;
/* 查询数据库testone */
show databases;
/* 选择数据库testone */
use testone;
/* 删除数据库testone */
drop database testone;

创建表

create table table_name (column_name column_type);

查看表结构

desc table_name;

查看所有表名

show tables;

插入数据

insert into 表名(列名1,列名2,…) values (值1,值2,…);

查询表中所有列的数据

select * from 表名;

删除表

drop table 表名;

数据库实体在系统中的位置:/var/lib/mysql/

DML(数据操作语言)

新增数据

表中每一列都新增数据

insert into 表名 values (值1,值2,…);

表中部分列新增数据

insert into 表名(列名1,列名2,…) values (值1,值2,…);

修改数据

update 表名 set 列名1=值A,列名2=值B where 条件;

MySQL修改数据库管理员root密码语句

update mysql.user set authentication_string=password(“newpassword”) where user=”root”;

删除数据

delete from table_name 表名 where 条件;

DQL(数据查询语言)

查询表中所有列数据

select * from 表名;

查询表中部分列数据

select 列名1,列名2,… from 表名;

where 条件

操作符描述实例
=等号,检测两个值是否相等,如果相等返回true(A = B) 返回false。
<>, !=不等于,检测两个值是否相等,如果不相等返回true(A != B) 返回 true。
>大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true(A > B) 返回false。
<小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true(A < B) 返回 true。
>=大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true(A >= B) 返回false。
<=小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true(A <= B) 返回 true。

select * from 表名 where 列1=值1;

and 并且

select * from 表名 where 列1=值1 and 列2=值2;

or 或

select * from 表名 where 列1=值1 or 列2=值2;

between and 在xxx与xxx之间

select * from Student where 列1 BETWEEN 值1 and 值2;

in 在xxx集合内

select * from Student where Sid in (值1,值2,值3);

like 像xxx

select * from Student where Sname like ‘关键字%’;

% 为任意字符

union

用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
SELECT expression1, expression2, … expression_n
FROM tables
[WHERE conditions]
UNION [ALL]
SELECT expression1, expression2, … expression_n
FROM tables
[WHERE conditions];

其中选项 ALL 为包含重复数据,union 默认是去重复的。

排序

select * from 表名 order by 列名;

默认是asc升序;降序是desc;

分组

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name 运算符 value
GROUP BY column_name;

连接

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

null值

select * from 表名 where 列名 is null;
select * from 表名 where 列名 is not null;

SQL语句执行顺序

第7步:SELECT 查询列表

第1步:FROM 表名

第2步:JOIN 关联表

第3步:ON 关联条件

第4步:WHERE 筛选条件

第5步:GROUP BY 分组字段

第6步:HAVING 分组后筛选条件

第8步:ORDER BY 排序字段

第9步:LIMIT 输出限制

DCL(数据控制语言)

权限级别

Global level:所有库,所有表的权限

Database level:某个数据库中所有表的权限

Table level:某个数据库中某个表的权限

Column level:表中某个字段的权限

权限语法

grant 权限列表 on 库名.表名 to ‘用户名’@’客户端主机’ [identified by ‘密码’ with option参数];

权限列表

all为所有权限,select为查询权限,update为更新权限,多个权限间用英文逗号,隔开

库名.表名

*.*:所有库所有表

库名.*:某个库下所有表

库名.表名:某个库下某个表

授予某个用户某些功能某个字段权限如下

grant SELECT (id), INSERT (name,age) ON mydb.mytbl to ‘用户名’@’主机地址’ identified by ‘登录密码’;

客户端主机

% 所有主机

192.168.2.% 即192.168.2网段所有主机

192.168.2.3 指定主机

localhost 指定主机,特指本机

with option

GRANT OPTION,用户被授予了某个权限,那么默认情况下,该用户是不能把这个权限授予给其他人的。但是可以使用 WITH GRANT OPTION 这个子句来让该用户可以将权限再授予给其他人。例如:grant SELECT (id), INSERT (name,age) ON mydb.mytbl to ‘用户名’@’主机地址’ identified by ‘登录密码’ with grant option;

查看自己权限

show grants;

查看别人权限

show grants for zhangsan@’192.168.174.132′;

收回权限

REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’;

收回所有权限:REVOKE ALL PRIVILEGES ON *.* FROM 用户名@’主机地址’;

用户管理

创建MySQL用户张三,仅能通过192.168.174.132登录且密码为zhangsan.123

create user zhangsan@’192.168.174.132′ identified by ‘zhangsan.123’;

root修改自己密码

  • 第一种:在linux命令行中输入:mysqladmin -uroot -p’旧密码’ password ‘新密码’
  • 第二种:在MySQL命令行输入:
    • 方法一: update mysql.user set authentication_string=password(‘新密码’) where user=’root’ and host=’localhost’;     flush privileges;
    • 方法二:set password=password(‘新密码’);     flush privileges;

遗忘root密码

第一步:修改配置文件 /etc/my.cnf ,添加选项 skip-grant-tables 跳过密码验证

第二步:重启MySQL,无密码即可登录,修改密码

systemctl restart mysqld

mysql -uroot

update mysql.user set authentication_string=password(‘新密码’) where user=’root’ and host=’localhost’;

flush privileges;

第三步:注释掉 /etc/my.cnf 中跳过密码部分

#skip-grant-tables

无需登录数据库读写数据库

-P 端口号     -h 主机地址

mysql -P 3306 -h 192.168.174.129 -uzhangsan -p’zhangsan.123′ -e ‘show databases;’

http://www.lryc.cn/news/164420.html

相关文章:

  • 汽车级肖特基二极管DSS220-Q 200V 2A
  • maven jetty post 上传长度设置
  • LeetCode 面试题 03.03. 堆盘子
  • Python-函数进阶
  • 实操Hadoop大数据高可用集群搭建(hadoop3.1.3+zookeeper3.5.7+hbase3.1.3+kafka2.12)
  • 如何在 Ubuntu 上安装和使用 Nginx?
  • seatunnel win idea 本地调试
  • 链路追踪Skywalking快速入门
  • 全开源影视APP源码带后台 苍穹影视APP源码 免受权带安装教程
  • Qt+C++自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本
  • 这场科技巨变,有生之年有希望
  • zemax优化功能
  • Centos8关闭IPV6
  • 华为OD七日集训第4期 - 按算法分类,由易到难,循序渐进,玩转OD
  • flutter 抓包工具charles
  • ——二叉树
  • 【linux命令讲解大全】103.Linux目录堆栈命令 dirs 的使用方法和选项详解
  • vue3项目应用font awesome6
  • 【JavaScript】JS语法入门到实战
  • 【Linux】工具Gdb调试轻度使用(C++)
  • linux xhost命令
  • linux在线源码阅读网站
  • css中只使用vue的变量
  • 华为云云耀云服务器L实例评测 | 由于自己原因导致MySQL数据库被攻击 【更新中。。。】
  • 如何查询成绩或工资
  • FPGA原理与结构——时钟IP核的使用与测试
  • 手搓消息队列【RabbitMQ版】
  • Oracle VM VirtualBox 安装 Ubuntu Linux
  • 3D WEB轻量化引擎HOOPS Commuicator技术概览(一):数据导入与加载
  • .net 7 隐藏swagger的api