mysql日常有哪些用_MYSQL日常操作

1、MyIASM管理非事务表,提供高速存储和检索以及全文搜索能力,如果再应用中执行大量select操作,应该选择MyIASM

2、InnoDB用于事务处理(默认),具有ACID事务支持等特性,如果在应用中执行大量insert和update操作,应该选择InnoDB

安装完mysql第一次登陆账号为root,密码为空

mysql –u root

[root@c1 ~]# mysqladmin -u root password  qwer1234  #设置密码

[root@c1 ~]# mysqladmin -uroot -pqwer1234 password qwert6789     #修改密码

[root@c1 ~]# mysql -uroot –pqwert12345                  #密码登陆

MariaDB [mysql]> create database auth;                #创建库

MariaDB [(none)]> show databases;                        #查看有哪些库

MariaDB [(none)]> use mysql;                                  #进入库

MariaDB [mysql]> show tables;                               #查看有哪些表

MariaDB [mysql]> describe user;                            #查看表结构

创建表

MariaDB [mysql]> use auth;

create  tables  表名 (字段1名称 类型,字段2名称 类型,…..,primary key (主键名))                  #创建表

MariaDB [auth]> create  table users (user_name char(16) not null, user_passwd char(48) default '', primary key (user_name));

mysql> create table user(

-> id int unsigned not null auto_increment primary key,

-> user_name varchar(20) not null,

-> password char(32) not null,

-> email varchar(50) not null,

-> mobile char(11) not null,

-> fee decimal(10,2) default 0.00 not null,

-> age tinyint unsigned not null

-> );

插入数据记录

insert into  表名 (字段1,字段2,……) values (字段1的值,字段2的值,…….)    #插入数据记录

MariaDB [auth]> insert into users(user_name,user_passwd) values('zhangsan', password ('123456'));

如果记录完整包括表中所有字段的值,则插入语句中指定字段的部分可以省略

MariaDB [auth]> insert into users  values('lisi',password('654321'));

查询数据记录

select 列名1,列名2,…… from 表名  where  条件表达式

MariaDB [auth]> select * from auth.users;

MariaDB [auth]> select user_name,user_passwd from auth.users where user_name='zhangsan';

mysql> truncate user;                      #清空表

修改数据记录

update 表名 set  字段1=字段值1[,字段2=字段值2]  where 条件表达式

MariaDB [auth]> update auth.users set user_passwd=password('') where user_name='li';

在如,修改连接mysql root的连接密码

MariaDB [auth]> update  mysql.user set password=password('123456') where user='root';

MariaDB [auth]> flush privileges;                            #刷新权限

因为这个改密码和上面的定义结构不一样,所以是password不是user_passwd

1a3576be7349e8b650eaf7537d7ed106.png

删除数据记录

delete from 表名 where  条件表达式

MariaDB [(none)]> delete from auth.users where user_name='li';         #删除用户

在如,删除默认用户表user里的用户名密码都为空的记录

MariaDB [(none)]> select user,host,password from mysql.user where user='';

MariaDB [(none)]> delete from auth.users where user='';

授予权限

gant  权限列表 on 库名.表名  to 用户名@来源地址 [  identified by  ‘密码’]

权限列表 : select insert uptate   使用all表示所有权

库名.表名:指定授权的库和表的名称,使用通配符’*‘

用户名@来源地址:指定谁能连接,能从哪里连接

identified by: 用于设置用户连接数据库时所使用的密码字符串,在新建用户时,若省略’identified by‘部分,则用户的密码将为空

授权给root所有权限,包括远程权限

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'qwer1234' WITH GRANT OPTION;;

mysql> FLUSH PRIVILEGES;

创建用户并授权,这个不用刷新

MariaDB [(none)]> grant select on auth.* to 'xiaoqi'@'localhost' identified  by '123456';

创建数据库,创建连接用户,授权

MariaDB [(none)]> create database bdqn;

MariaDB [(none)]> grant all on bdqn.* to 'dbuser'@'192.168.4.19' identified by 'qwe123';

查看权限

show grants for 用户名@来源地址

MariaDB [(none)]> show grants for 'dbuser'@'192.168.4.19';      #查看dbuser用户从地址访问数据库时的授权信息

撤销权限

revoke  权限列表 on 数据库名.表名  from 用户名@来源地址

MariaDB [(none)]> revoke  all on auth.* from 'xiaoqi'@'localhost';

MariaDB [(none)]> show grants for 'xiaoqi'@'localhost';

备份

[root@c1 ~]# mysqldump -u root -p auth  users > auth-users.sql       #备份auth库的users 表

[root@c1 ~]# mysql -uroot -p123456  auth

[root@c1 ~]# mysqldump -uroot -p123456 --database auth >auth.sql   #备份auth库

[root@c1 ~]# mysql -uroot -p123456  < auth.sql                             #还原单个库

[root@c1 ~]# mysqldump -uroot -p123456 --opt --all-databases >all-data.sql         #备份所有库

[root@c1 ~]# mysql -uroot -p123456 < ~/all-data.sql                     #还原全部库

注:若备份文件中已经包括完整的库信息,则执行导入操作时无需指定库名

MariaDB [test]> source /root/all-data.sql;                                   #也可以用source还原数据

drop  table auth.user;                                              #删除数据表

drop  database  auth;                                               #删除数据库

MariaDB [(none)]> show master logs;                      #查看二进制日志文件

管理表中的数据记录

insert into 表名                                                          #插入数据记录

select  * from auth.users                                         #查询users表中的所有数据记录

update  auth.users set…………                                  #修改数据记录

delete from 表名  条件表达式                                       #删除数据记录

grant                                                                         #授权

show  grant for 用户名@来源地址                                #查看授权

revoke                                                                       #撤销权限

mysqldump  -u root –p mysql user  > mysql-user.sql   #备份库中的表

mysql –u root –p  --databasa  auth   >auth.sql            #备份库

mysql –u root –p –-opt –all-databases > all-data.sql    #备份所有的库

mysql –u root –p test < mysql-user.sql                         #恢复表到库中

mysql –u root –p < ~/all-data.sql                                  #导入备份的所有库

若备份文件中已经包含完整的库信息,则执行导入操作时无需指定库名

mysql> update user set user_name='lili'  where id in(5,6,7);    #修改567列的用户名为lili

mysql> update user set password='123456' where  id in(2,5,6,7);

mysql> update user set email='lili@163.com'  where id  in(3,5,6,7);

mysql> update user set  mobile='15800000000' where id between 2 and 7;   #修改类型mobile2-7列值为15800000000

mysql> update user set password='*6BB4837EB74329105EE4568DDA7DC67',email='peng@163.com' where id=4;          #更改ID4的密码和email

mysql> update user set fee='11' where fee=0.00;           #把fee为0.00都改改成11

mysql> select user,host  from user;

mysql> delete from user where host='::1'

mysql> flush privileges;

mysql> update user set host='10.0.0.123' where user='root';

mysql> flush privileges;

一, 创建用户:命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

二,授权:命令:GRANT privileges ON databasename.tablename TO 'username'@'host'

注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

三.设置与更改用户密码

命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");

例子: SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");

五.删除用户

命令: DROP USER 'username'@'host';

DQL查询

以下练习操作在centos6.8:

过滤重复的值

mysql> select distinct password from user;

f921856566d8587dabe93f7c874ea30e.png

把字段连接起来

mysql> select concat(user_name,email) from user;

d853c4d6087b827ba42ceeb2d67d5a96.png

把字段连接起并重命名

mysql> select concat(user_name,email) as user_name_email from user;

ffb5e97248799be7794426176886a371.png

分隔符

mysql> select concat(‘==’user_name,email) as user_name_email from user;

查询字段并重命名查看

mysql> select user_name as name,email as em from user;

bd8e76a98a81889381632e256902e2b9.png

模糊查询数据流大不用)

select user_name from user where user_name like '%n%';

e3030682dcab585267462942a8c31d2d.png

排序

bea422ad3d73958844e654f036616eff.png

mysql> select count(*) from user;                  #共多少条记录  数据大不用

27568a6d8d474588f899eff9cfc456cf.png

mysql> select sum(age) as sum_age from user;    # 字段总和     #应用场景销量

mysql> select avg(fee) as sum_age from user;    #字段平均数,字段就是列

mysql> select  max(age) from user;                       #列的最大值

mysql> select  min(age) from user;                  #列的最小值

c7a353a0f9f62a0744ef83f9f0d89e35.png

mysql> alter table user add sex tinyint unsigned not null default 0 comment'0男1女' after email;#添加列

ac1cab68f754b89e8f8e5c02e0bfb60a.png

mysql> update user set sex=1 where id in (2,3);

分组

按性别分组

mysql> select count(*) from user group by sex;

cfe94f4f6d77734e97c5dd9d1226946e.png

命名总人数

e61a3068cab9dc4d6b530f016a72d0fd.png

mysql> select sex from user group by sex having count(*)>2;   #把总人数大于2的列出来 0是男 1是女

也可以这样查

mysql> select count(*) from user where sex=0;

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

SELECT u.`user_id`,u.`user_name`, u.`user_rank`, ap.`id`,ap.`authority_zone`, ap.`apply_class`, ap.`apply_type`, ap.`apply_time` FROM dsc_users u LEFT JOIN dsc_user_apply ap ON ap.`user_id` = u.`user_id` WHERE u.`user_name`IN ( '彭忠涛');

b5145d48790fc438758788fdc6a15ba9.png

SELECT * FROM dsc_region_grant r WHERE r.`user_id` IN( 13364 );

7ae75b228e11d6a586c65c7aa0b43681.png

SELECT * FROM dsc_region r WHERE r.`parent_id` = 38854;

f6b10001428a83bf5305142bb0f6a699.png

cb48ae5fa52180999713547d67b58cb5.png

1b9a1b399f41a8d13f87d77a88b4eafb.png

adc2cc63e7fad4c427ea2869bcc51360.png

pid  cid rid tid

bf421e6b795b124d4dd42b8b3f0dd04b.png

生产练习-查询数据记录

SHOW TABLE STATUS                                                    #查看表注释

SHOW FULL COLUMNS FROM dsc_suning_address      #查看字段注释

SHOW FULL FIELDS FROM  dsc_suning_address         #查看字段注释

SHOW FULL FIELDS FROM  dsc_order_info

3bd091b652c161fbc5e1db2cea0ed580.png

605deeeb9d528e74a5bde3e4c02a9f6d.png

888bde70e72277df900e6b18298354b4.png

order         #订单

SHOW FULL COLUMNS FROM dsc_user_commision

66bb1f7cb134f80a10c1a6802827f6b5.png

SHOW FULL COLUMNS FROM dsc_user_profits

c056e6e415891780e84427752d6b4ac1.png

profilts                   #收益

DESCRIBE dsc_users                                       #用户表   (所有字段)

SHOW FULL FIELDS FROM  dsc_users

93f4d97cd7e50c2939cc565ca5338785.png

8af5a55a4b2055c8a17064743e223938.png

user_rank                #用户等级

SHOW FULL COLUMNS FROM dsc_user_apply

ad26c64bb589c1625fa14e8951ec6ae5.png

apply_type        #申请类型 1大客户 2服务商 3运营商

apply_type         #类别  0未区分 1A类服务商 2B类服务商   9大客户

apply_time          #申请时间

DESCRIBE dsc_region                              #地区表

SHOW FULL FIELDS FROM dsc_region

2c85c61a13ad26ea86e7b44169de4dcd.png

表内容

527d0567d453bbac2d4063faab653db7.png

DESCRIBE dsc_region_grant        #地区授权表

SHOW FULL FIELDS FROM  dsc_region_grant

e7f0b9b0ebf3b80cbc70a93ef8efd1db.png

表内容

0f764ba0a30d3a49faa3633d6f57e68b.png

dsc_suning_address                                       #苏宁地址表

DESCRIBE dsc_suning_address

SHOW FULL FIELDS FROM  dsc_suning_address

799c0e141d7d8333156b6a2d989aefd5.png

SELECT * FROM  dsc_suning_address  WHERE   pid=190

pid  # 父编码

second_pid   #二级父编码                 比如说我要找番禺区下的所有的镇:

1.找出二级父编码,对镇来说区是一级父编码,市就是二级父编码,先找出市的编码,找市的编码先找省的

SELECT * FROM dsc_suning_address WHERE pid=0                    #找出广东省编码是190

SELECT * FROM dsc_suning_address WHERE pid=“190”                #找出市是020

SELECT * FROM dsc_suning_address WHERE pid="020"           #找出区是07,因为区在全国地址库中有可能会重复,所以不能像上面那样直接使用07找出区下面的所有镇,要结合上面两个条件

2.SELECT * FROM dsc_suning_address WHERE  second_pid=020  AND pid=07          #番禺区下面所有的镇

c73ef86064b4516cd9df5ca39439c637.png

select 列名1,列名2,…… from 表名  where  条件表达式

SELECT * FROM  dsc_suning_address  WHERE   pid=190          #广东所有城市

PID字段      #父

OR(或) 和 AND(且) 连接语句

SELECT * FROM  dsc_suning_address  WHERE   pid=08 AND NAME="申港镇"

b23640478379304ff06d53f7c7006291.png

-- 1 查询当前授权区域

SELECT u.`user_id`,u.`user_name`, u.`user_rank`, ap.`id`,ap.`authority_zone`, ap.`apply_class`, ap.`apply_type`, ap.`apply_time` FROM dsc_users u LEFT JOIN dsc_user_apply ap ON ap.`user_id` = u.`user_id`

WHERE u.`user_name`IN ( '18992619159');

ab64a193ab1ac716bed76ee889662b85.png

-- 2 修改授权区域

SELECT * FROM dsc_region_grant r WHERE r.`user_id` IN( 3803 );  -- 用户ID

1479ee081864488d5c9ab33942e415b5.png

3.--  查询地区及ID

SELECT * FROM dsc_region r WHERE r.`parent_id` = 16570;  -- 区域id

344e07efc87894c25e7f10de6a85eb1d.png

-- 3 处理界外订单(佣金)( 变量:user_id, street), 修改 grant_status 为 1

SELECT o.order_id, o.`order_sn` ,uc.`id`,uc.`check_status`, uc.`grant_status` FROM dsc_order_info o

LEFT JOIN dsc_user_commision uc ON o.order_id = uc.`order_id`

WHERE o.`user_id` = 3803 AND o.`street` = 16575 AND o.`pay_status` = 2;

0e349e9a40c9c004eb38b6947295d9f5.png

order_sn                #苏宁订单

grant_status        #授权区域结算状态

LEFT JOIN          #左外联接,结果中的记录在A表中存在,B表中不一定有。相当于a表为主体表,b为辅助表

order_id              #订单编号

street                 #街道

pay_status        #支付状态

-- 3 处理界外订单(收益)  变量:订单号, 修改 grant_status 为 1

SELECT up.`id`, up.`order_sn`, up.`grant_status` FROM dsc_user_profits up WHERE up.`order_sn` IN (

'2018042108432996911');

SHOW TABLE STATUS                                                    #查看表注释

SHOW FULL FIELDS FROM  dsc_suning_address         #查看字段注释

数学符号条件--WHERE限制条件可以有数学符号 (=,,>=,<=)

例如

SELECT user_id,user_rank FROM  dsc_users WHERE  user_rank>0

模糊查询数据流大不用)

SELECT * FROM  dsc_suning_address  WHERE  NAME LIKE '%沙头%'

SELECT COUNT(*) FROM  dsc_suning_address;                 #表共多少条记录

SELECT DISTINCT  user_name,user_rank FROM dsc_users    #完全重复的记录只一次

select user_name,id from user order by  字段;   #升序

select user_name,id from user order by  字段 desc ;  #降序 (场景发布文章)

表关联语法

select * from a left join b on a.id=b.id ;   #a\b表关联

SELECT COUNT(*) FROM dsc_users LEFT JOIN dsc_user_apply   ON dsc_users.`user_id` = dsc_user_apply.`user_id`                    #统计表中所有用户

SELECT COUNT(*) FROM dsc_user_apply  WHERE apply_timeBETWEEN '2017-04-01 00:00:00' AND '2017-05-01 00:00:00'

BETWEEN           #在….之间

SELECT COUNT(*) FROM dsc_users LEFT JOIN dsc_user_apply   ON  dsc_users.`user_id` = dsc_user_apply.`user_id` WHERE  apply_time BETWEEN '2017-04-01 00:00:00' AND '2017-05-01 00:00:00'

其他>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

mysql>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

mysqladmin -u root password 'qwer1234'              #为root用户设置密码,不然无法登录msyql

information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。

什么是元数据呢?元数据是关于数据的数据,属性等信息,如表名等

mysqldump -uroot -p --default-character-set=utf8  db >1.sql  备份数据库

show tables ; 查看当前库下有哪些表

status 查看mysql数据库的运行状态

desc  table_name; 查看表结构

show full  processlist;  #查询数据库连接

show status like '%Threads_connected%';#当前连接数

show status like '%qcache%'; #查询缓存情况

show status like 'Aborted_clients';  #由于客户没有正确关闭连接已经死掉,已经放弃的连接数量

show variables like '%max_connections%';//查看最大连接数量

show variables like '%timeout%';#查看超时时间

show variables like 'log_%'; #查看日志是否启动

show variables like '%quer%'; log_slow_queries状态为OFF, 说明没有开启慢查询

开启慢查询修改mysqld服务配置文件/etc/my.cnf

log-slow-queries = /var/lib/mysql/mysql-slow.log        #慢查询日志放置目录,必须有写入权限,此项配置放放置[mysqld]下

long_query_time = 2                                     #最长执行时间,此项配置放放置[mysqld]下

重启mysqld服务

select * from 表名 查表所有数据

show variables like 'storage_engine';          查看mysql支持的存储引擎

mysql忘记密码修改mysqld服务配置文件/etc/my.cnf的[mysqld]下添加skip-grant

mysql                 #不用输密码直接登录

use mysql;

update user set password=password('qwer1234') where  user='root';

flush privileges;

最后修改/etc/my.cnf 去掉 skip-grant , 重启mysql服务

当我们第一次使用mysql命令的时候我们提示命令不存在的时候,我们加入path就行了

在配置文件中 /etc/profile 中

PATH=$PATH:/usr/local/mysql/bin

然后别忘记

source /etc/profile

或者写全路径   /usr/local/mysql/bin/mysql -uroot

查看表的字段 desc tb;

当前是哪个用户  select user();

当前库 select database();

查看数据库版本 select version();

mysql操作记录>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

#查看表数据

SELECT  * FROM   sys_module_version;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值