MySQL 基础命令

 

SQL语句

mysql版本:针对mysql-5.6.36 版本 

目录
1.1 常用命令-查看    2
1.2 登录mysql    2
1.2.1 修改密码    2
1.2.2 忘记密码-怎么办    3
1.3 授权grant    3
1.3.1 grant    3
1.4 好用功能、快捷键    4
1.4.1 mysql客户端接口自带功能    4
1.5 增删改查-数据库SQL命令详解    5
1.5.1 数据库    5
1.5.2 表-table    5
1.5.3 插入、更新数据    7
1.5.4 查看数据-select    8
1.6 复杂查询    8
1.6.1 ORDER BY子句    8
1.6.2 LIMIT子句    8
1.6.3 子查询    9
1.6.4 连接查询    9

 

1.1 常用命令

# 查看数据库
mysql> show databases;
show databases like '%pres%';      #模糊查询
# 查看表
mysql> use xzy
mysql> show tables;
#查看权限
show grants for oldboy@'10.0.0.%';
# 查看列
mysql> use xzy
mysql> desc test;

 

1.2 登录mysql

常见的特定于客户机的连接选项
-u <user_name>或--host=<user_name>
-p <password>
-h <host_name>或--host=<host_name>
--protocol=<protocol_name>
-P <port_number> 或--port=<port_number>
-S <socket_name> 或--socket=<socket_name>

 

1.2.1 修改密码

 
[root@db02 ~]# mysqladmin -uroot -p123 password 123456
[root@db02 ~]# mysql -uroot -p123456
mysql>

 

1.2.2 忘记密码-怎么办

#开启mysql  (跳过授权表)
#--skip-grant-tables 跳过授权表  --skip-networking禁止网络登录-即本地登录
/application/mysql/bin/mysqld_safe --skip-grant-tables  --skip-networking  &

#进入MySQL修改mysql.user表的内容
mysql        #直接登录(无需密码)
#修改mysql.user表内容
mysql> update mysql.user set password=PASSWORD('666666')  where user='root' and host='localhost';
mysql> flush privileges;
#quit  退出即可用新密码666666登录

注意:5.7版本的不同
update mysql.user set authentication_string=PASSWORD('123456')  where user='sys' and host='localhost'
flush privileges;

 

1.3 授权grant

1.3.1 grant

格式
grant  权限   on  权限范围(对象)  to  用户  identified by  '';

权限(角色):
select、update、delete、insert、drop、create
ALL 

权限范围:
*.*  所有数据库对象
oldboy.*   oldboy单库下所有对象
oldboy.test  单表级别


用户:
repl@localhost
repl@'10.0.0.53'
repl@'10.0.0.%'
repl@'10.0.0.5%'
-----
要求:
1、用户只能通过10网段访问,用户名为oldboy,密码为123
2、只能对oldboy数据库下的对象进行增insert create、改update、查select
#创建 
grant select,insert,update,create on oldboy.* to oldboy@'10.0.0.%' identified by '123';
#查看权限
show grants for oldboy@'10.0.0.%';
#收回权限
revoke drop on oldboy.* from 'oldboy'@'10.0.0.%';
#删除用户
drop user oldboy@'10.0.0.%'

注意:
创建的权限信息,不在/data/下的数据库名目录下

 

1.4 好用功能、快捷键

1.4.1 mysql客户端接口自带功能

1、\h 或 help 或 ?                 获取帮助
2、\G                           格式化输出(行转列)
3、\T 或 tee                    记录操作日志  tee /tmp/mysql.log
4、\c 或 CTRL+c                    退出mysql
5、\s 或 status                    查看数据库状态信息
6、\. 或 source                    mysql> source /tmp/world.sql
7、\u 或use                        use  world 
                            show databases  看当前所有数据库的名字
                            show tables   查看当前use到的数据库所有的表
                            show  tables from world   查看目标数据库下的表
8、    ctrl +L   清屏

 

1.5 增删改查-数据库SQL命令详解

1.5.1 数据库

#创建库
mysql> create database xzy character set utf8;   #或缩写 charset utf8 (推荐)
mysql> show create  database xzy;
+----------+--------------------------------------------------------------+
| Database | Create Database                                              |
+----------+--------------------------------------------------------------+
| xzy     | CREATE DATABASE `xzy` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+

#修改库
mysql> alter database xzy charset gbk;

#删除库
mysql> drop database xzy;

 

1.5.2 表-table

1.5.2.1 查看表

# 帮助:
mysql> help create table;
# 查看列
mysql> use xzy
mysql> desc test;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | YES  |     | NULL    |       |
| name  | char(30) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+

1.5.2.2 操作表

# 创建表
mysql> use xzy
mysql> create table test(id int,name char(30));
# 完整:
CREATE TABLE `test` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8;

# 修改表名(两种方法)
mysql> rename table test to test1;   或 
mysql> alter table test1 rename to test;
# 添加列结构 
mysql> alter table people add addr char(40) NOT NULL;  #默认添加到最后
# 指定添加年龄列到name列后面的位置,示例如下:
alter table people add age int(4) after name;
# 通过下面的命令在第一列添加qq字段。
alter table test add telnum int first;
# 同时添加多个列定义:
alter table people add id int first ,add sex char(4) after name ;
# 删除表结构:
alter table people drop sex;
# 修改表定义
alter table people modify name char(20);
# 修改列名:
alter table people change name people_name char(30) ;

 

 

1.5.3 插入、更新数据

 

#  insert语句:
create table test (id int,name varchar(20));     #创建表 test
insert into test values(1,'test');            #插入单个
insert into test values(2,'yougboy'),(3,'youggilr'); #插入多个
insert into test(name) values('xiaoming');      #插入指定列
select * from test;       #查看

# 创建一模一样的表
------------------------------------
create table test like oldboy;
insert into oldboy select * from oldboy;
------------------------------------
 
# 修改(更新)数据 update
update(一定要有where条件)
update test set name='oldboy1' WHERE  id = 1;

# 删除数据 delete
delete(一定要有where条件)
delete from oldboy where id=1;

 

1.5.4 查看数据-select

select user,password ,host from mysql.user where user='sys';
select user,password ,host from mysql.user where user like 'sy%';
select * from oldboy.test;
select id,name from test where id=2;
select id,name from test where id>2 and id<4;

 

 

1.6 复杂查询

1.6.1 ORDER BY子句

ORDER BY子句用来排序行
语法:
SELECT expr FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, numeric_position} [Asc|DEsc]];
其中:
Asc:执行升序排序。默认值
DEsc:执行降序排序
ORDER BY子句一般在SELECT语句的最后面

#两个排序条件
SELECT * FROM city ORDER BY population,countrycode;

 

1.6.2 LIMIT子句

LIMIT子句是SELECT语句中的最后一个子句(在order by后面)。
它用来表示从结果集中选取最前面或最后面的几行。
语法:
limit <获取的行数> [OFFSET <跳过的行数>]
或者limit [<跳过的行数>,] <获取的行数>
SELECT * FROM city ORDER BY 5 DEsc LIMIT 4;

1.6.3 子查询

获取和100号球员性别相同并且居住在同一城市的球员号码。
select playerno   
from players   
where (sex, town) = (  
    select sex, town   
    from players   
    where playerno = 100);

 

1.6.4 连接查询

#基础用法
SELECT * FROM Student,Grade WHERE Student.sID = Grade.gID;

#AS 别名
SELECT ci.name AS city_name ,co.name AS country_name,co.`SurfaceArea` AS mianji
 FROM city AS ci ,country AS co
 WHERE ci.name='qingdao' AND 
 ci.`CountryCode`= co.`CountryCode`;

# NATURAL JOIN子句
自动到两张表中查找所有同名同类型的列拿来做连接列,进行相等连接
SELECT NAME,countrycode,LANGUAGE ,population
FROM city NATURAL JOIN countrylanguage
WHERE population > 1000000
ORDER BY population;

# 使用using子句 (指定列连接)
SELECT NAME,countrycode,LANGUAGE ,population
FROM city JOIN countrylanguage
USING(countrycode);

 

 

posted @ 2018-01-11 15:53  小学生-XZY  阅读(419)  评论(0编辑  收藏  举报