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;’

你可能感兴趣的:(运维工具,#,MySQL,mysql,数据库,linux,运维)