MySql常用语句更新(update...)

# MySQL CRUD 

增加数据:
insert into user(id,name,sex,age) value(11,"qaq","boy","23");

查看数据:
select * from user where id=11;

修改数据:
update user set name="QAQ" where id=11;

删除数据:
delete from user where id=11;

 

【其他相关】

# 刷新

flush privileges;

# 初始化Mysql后,查看密码

grep "password" /var/log/mysqld.log

# 修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '1qaz@WSX';

# 查看默认密码复杂度

SHOW VARIABLES LIKE 'validate_password%';

# 如需修改密码复杂度参考如下命令:

set global validate_password_policy=LOW;  # 生产环境不建议
set global validate_password_length=7;

运算符:

select * from user where age>20;
=检查两个操作数的值是否相等,如果是,则条件变为真。(A = B) 不为 true.
!= 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 (A != B) 为 true.
> 检查左操作数的值是否大于右操作数的值,如果是,则条件为真。 (A > B) 不为 true.
< 检查左操作数的值是否小于右操作数的值,如果是,则条件为真。 (A < B) 为 true.
>= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件为真。 (A >= B) 不为 true.
<= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为真。 (A <= B) 为 true.

 # 子查询:在select 中子查询总是从内向外处理。先处理括号内部的在处理括号外部的;

select name,age from user where name in(select name from buy);

# 多表查询:

select user.id,user.name,buy.shop from user,buy where user.name=buy.name;
JOIN: 如果表中有至少一个匹配,则返回行
select user.age,buy.shop from user inner join buy on user.name=buy.name;

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
select user.age,buy.shop from user left join buy on user.name=buy.name;

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
select user.age,buy.shop from user right join buy on user.name=buy.name;


联合查询:Union语句必须有两条或者以上的select语句,语句之间用union隔开。 每个查询必须包含相同的列、表达式或者聚合函数。 不过次序可以不统一。列数据的类型必须兼容类型不必完全相同。

select name from user union select name from buy;

union all 不去重
select name from user union all select name from buy;

【函数】

返回当前用户:
select user();

返回数据库的版本号:
select version();

返回当前数据库名:
select database();

休眠参数给定的秒数:
select sleep(5);

  查看活动进程

  show processlist

获取从字符串s中的第n个位置开始长度为len的字符串:
substring(s,n,len)
select substring(user(),2,3);

length()/char_length():   

char_length(str)
计算单位:字符
不管汉字还是数字或者是字母都算是一个字符

length(str)
计算单位:字节
utf8编码:一个汉字三个字节,一个数字或字母一个字节。
gbk编码:一个汉字两个字节,一个数字或字母一个字节。

 

 

【权限相关】

# 授权并建账号

grant all privileges on demo.* to 'demo'@'x.x.x.x' identified by '123456';

# 回收权限

revoke all on *.* from 'root'@'%';

 

【创建相关】

# create db

create database if not exists demo default character set = 'utf8';

#创建数据库

create_db_sql="create database IF NOT EXISTS ${DBNAME}"
mysql -h<数据库IP> -P<数据库端口> -u<用户名>-p${PASSWORD} -e "<执行的SQL语句>"

#创建表

create_table_sql="create table IF NOT EXISTS ${TABLENAME} ( name varchar(20), id int(11) default 0 )"
mysql -h<数据库IP> -P<数据库端口> -u<用户名>-p${PASSWORD} ${DBNAME} -e "$<执行的SQL语句>"

create table user(id int, name varchar(20), password varchar(15));  # 创建常规表 

#插入数据

insert_sql="insert into ${TABLENAME} values('billchen',2)"
mysql -h<数据库IP> -P<数据库端口> -u<用户名>-p${PASSWORD} ${DBNAME} -e "<执行的SQL语句>"

 insert into user(id, name, password) value(1, "admin", "123456"); # 插入数据 

 

【查询相关】

# 限制&排序&倒序

只返回固定数量的行数:
select name,age from user limit 3;

排序: 
select name,age from user order by age;

倒序: 
select name,age from user order by age DESC;

# 统计

统计数量:
select sex,count(*) from user group by sex;

统计数量并排序:
select sex,count(*) from user group by sex order by count(*) desc;

# WHERE 子句

单个条件:
select * from user where id=3;

多个条件:
select * from user where age=18 and sex='boy';
select * from user where age=18 or sex='boy';
select * from user where age in (18,27);
select * from user where name like '%y';

# view db grant

show create database demo;

 #查询是否锁表

show OPEN TABLES where In_use > 0;

# view user&grant information

select user,password,host from mysql.user;

# 查询

select_sql="select * from ${TABLENAME}"
mysql -h<数据库IP> -P<数据库端口> -u<用户名>-p${PASSWORD} ${DBNAME} -e "<执行的SQL语句>"

 #更新数据

update_sql="update ${TABLENAME} set id=3"
mysql -h<数据库IP> -P<数据库端口> -u<用户名>-p${PASSWORD} ${DBNAME} -e "<执行的SQL语句>"
mysql -h<数据库IP> -P<数据库端口> -u<用户名>-p${PASSWORD} ${DBNAME} -e "<执行的SQL语句>"

 

【删除相关】

delete from mysql.user where user='root' and host = '%';

#删除数据
delete_sql="delete from ${TABLENAME}"
mysql -h<数据库IP> -P<数据库端口> -u<用户名>-p${PASSWORD} ${DBNAME} -e "<执行的SQL语句>"
mysql -h<数据库IP> -P<数据库端口> -u<用户名>-p${PASSWORD} ${DBNAME} -e "<执行的SQL语句>"

 

【忘记密码】

1. 停止服务

2. 修改配置文件/etc/my.cnf在[mysqld]下添加 skip-grant-tables后保存

3. 启动服务,使用空密码方式使用root用户登录

# 修改root密码

use mysql;
update mysql.user set authentication_string=PASSWORD('1qaz@WSX') where User='root';
flush privileges;

4. 退出数据库并删除配置文件中的skip-grant-tables

 

posted @ 2019-06-26 11:28  Cong0ks  阅读(3410)  评论(0编辑  收藏  举报