第四章· MySQL客户端工具及SQL讲解

一.客户端命令介绍

1.mysql

1、用于数据库的连接管理

  • 1) 连接(略)
  • 2) 管理:
#MySQL接口自带的命令
\h 或 help 或?      查看帮助
\G                  格式化查看数据(key:value)
\T 或 tee            记录日志
\c(5.7可以ctrl+c)   结束命令
\s 或 status         查看状态信息
\. 或 source         导入SQL数据
\u或 use             使用数据库
\q 或 exit 或 quit   退出
  • 3)接收用户的SQL语句

2、将用户的SQL语句发送到服务器

2.mysqladmin

1、命令行管理工具

3.mysqldump

1、备份数据库和表的内容

4.help命令的使用

mysql> help
mysql> help contents
mysql> help select
mysql> help create
mysql> help create user
mysql> help status
mysql> help show

5.source命令的使用

#在MySQL中处理输入文件:
#如果这些文件包含SQL语句则称为:
#1.脚本文件
#2.批处理文件
mysql> SOURCE /data/mysql/world.sql
#或者使用非交互式
mysql</data/mysql/world.sql

6.mysqladmin命令的使用

01)“强制回应 (Ping)”服务器。
02)关闭服务器。
03)创建和删除数据库。
04)显示服务器和版本信息。
05)显示或重置服务器状态变量。
06)设置口令。
07)重新刷新授权表。
08)刷新日志文件和高速缓存。
09)启动和停止复制。
10)显示客户机信息。
#查看MySQL存活状态
[[email protected] ~]# mysqladmin -uroot -p123 ping
#查看MySQL状态信息
[[email protected] ~]# mysqladmin -uroot -p123 status
#关闭MySQL进程
[[email protected] ~]# mysqladmin -uroot -p123 shutdown
#查看MySQL参数
[[email protected] ~]# mysqladmin -uroot -p123 variables
#删除数据库
[[email protected] ~]# mysqladmin -uroot -p123 drop DATABASE
#创建数据库
[[email protected] ~]# mysqladmin -uroot -p123 create DATABASE
#重载授权表
[[email protected] ~]# mysqladmin -uroot -p123 reload
#刷新日志
[[email protected] ~]# mysqladmin -uroot -p123 flush-log
#刷新缓存主机
[[email protected] ~]# mysqladmin -uroot -p123 reload
#修改口令
[[email protected] ~]# mysqladmin -uroot -p123 password

二.接收用户的SQL语句

1.什么是SQL

结构化的查询语句

2.SQL的种类

2.1 DDL:数据定义语言

库对象:库名字、库属性
开发规范:库名小写

2.1.1 创建库:create database|schema

#创建oldboy数据库
mysql> create database oldboy;
#创建OLDBOY数据库
mysql> create database OLDBOY;
#查看数据库
mysql> show databases;
#查看oldboy的创建语句(DQL)
mysql> show create database oldboy;
#查看创建数据库语句帮助
mysql> help create database
#创建oldboy数据库添加属性
mysql> create database testa charset utf8;

2.1.2 删库:drop database

#删除oldboy数据库
mysql> drop database oldboy;

2.1.3 修改定义库:alter database

#修改oldboy数据库属性
mysql> alter database oldboy charset gbk;
#查看oldboy的创建语句(DQL)
mysql> show create database oldboy;

表对象:列名、列属性、约束

2.1.4 创建表:create table (开发做)

#查看创建表语句帮助
mysql> help create table
#创建表
mysql> create table student(
sid INT,
sname VARCHAR(20),
sage TINYINT,
sgender ENUM('m','f'),
cometime DATETIME);

2.1.5 数据类型

int: 整数 -231 ~ 231 -1
varchar:字符类型 (变长)
char: 字符类型 (定长)
tinyint: 整数 -128 ~ 128
enum: 枚举类型
datetime: 时间类型 年月日时分秒
#创建表加其他属性
mysql> create table student(
sid INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT ‘学号’,
sname VARCHAR(20) NOT NULL COMMENT ‘学生姓名’,
sage TINYINT UNSIGNED COMMENT ‘学生年龄’,
sgender ENUM('m','f')  NOT NULL DEFAULT ‘m’ COMMENT ‘学生性别’,
cometime DATETIME NOT NULL COMMENT ‘入学时间’)chatset utf8 engine innodb;
#查看建表语句
mysql> show create table student;
#查看表
mysql> show tables;
#查看表中列的定义信息
mysql> desc student;

2.1.6 数据属性

not null: 非空
primary key: 主键(唯一且非空的)
auto_increment: 自增(此列必须是:primary key或者unique key)
unique key: 单独的唯一的
default: 默认值
unsigned: 非负数
comment: 注释

2.1.7 删除表

#删除表
mysql> drop table student;

2.1.8 修改表定义:alter table (开发做)

#修改表名
mysql> alter table student rename stu;
#添加列和列定义
mysql> alter table stu add age int;
#添加多个列
mysql> alter table stu add test varchar(20),add qq int;
#指定位置进行添加列(表首)
mysql> alter table stu add classid varchar(20) first;
#指定位置进行添加列(指定列)
mysql> alter table stu add phone int after age;
#删除指定的列及定义
mysql> alter table stu drop qq;
#修改列及定义(列属性)
mysql> alter table stu modify sid varchar(20);
#修改列及定义(列名及属性)
mysql> alter table stu change phone telphone char(20);

2.2 DCL:数据控制语言

针对权限进行控制

2.2.1 grant

#授权[email protected]用户所有权限(非炒鸡管理员)
mysql> grant all on *.* to [email protected]'10.0.0.51' identified by 'oldboy123';
#怎么去授权一个炒鸡管理员呢?
mysql> grant all on *.* to [email protected]'10.0.0.51' identified by 'oldboy123' with grant option;
#其他参数(扩展)
max_queries_per_hour:一个用户每小时可发出的查询数量
max_updates_per_hour:一个用户每小时可发出的更新数量
max_connetions_per_hour:一个用户每小时可连接到服务器的次数
max_user_connetions:允许同时连接数量

2.2.2 revoke

#收回select权限
mysql> revoke select on *.* from [email protected]'10.0.0.51';
#查看权限
mysql> show grants for [email protected]'10.0.0.51';

2.3 DML:数据操作语言

操作表的数据行信息

2.3.1 insert

#基础用法,插入数据
mysql> insert into stu values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456);
#规范用法,插入数据
mysql> insert into stu(classid,birth.sname,sage,sgender,comtime,telnum,qq) values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456);
#插入多条数据
mysql> insert into stu(classid,birth.sname,sage,sgender,comtime,telnum,qq) values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456),
('linux02',2,NOW(),'zhangsi',21,'f',NOW(),111,1234567);

2.3.2 update

#不规范
mysql> update student set sgender='f';
#规范update修改
mysql> update student set sgender='f' where sid=1;
#如果非要全表修改
mysql> update student set sgender='f' where 1=1;

2.3.3 delete

#不规范
mysql> delete from student;
#规范删除(危险)
mysql> delete from student where sid=3;
#DDL删除表
mysql> truncate table student;
  • 1、使用伪删除
    使用update代替delete

1)额外添加一个状态列

mysql> alter table student add status enum(1,0) default 1;

2)使用update

mysql> update student set status='0' where sid=1;

3)应用查询存在的数据

mysql> select * from student where status=1;
  • 2、使用触发器(了解)
trigger

2.4 DQL:数据查询语言

select:基础用法

#常用用法
mysql> select countrycode,district from city;
#查询单列
mysql> select countrycode from city;
#行级查询
mysql> select countrycode,district from city limit 2;
mysql> select id,countrycode,district from city limit 2,2;
#条件查询
mysql> select name,population from city where countrycode='CHN';
#多条件查询
mysql> select name,population from city where countrycode='CHN' and district='heilongjiang';
#模糊查询
mysql> select name,population,countrycode from city where countrycode like '%H%' limit 10;
#排序查询(顺序)
mysql> select id,name,population,countrycode from city order by countrycode limit 10;
#排序查询(倒叙)
mysql> select id,name,population,countrycode from city order by countrycode desc limit 10;
#范围查询(>,<,>=,<=,<>)
mysql> select * from city where population>=1410000;
#范围查询OR语句
mysql> select * from city where countrycode='CHN' or countrycode='USA';
#范围查询IN语句
mysql> select * from city where countrycode in ('CHN','USA');

三.字符集定义

1.什么是字符集(Charset)

字符集:是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

2.MySQL数据库的字符集

1)字符集(CHARACTER)
2)校对规则(COLLATION)

3.MySQL中常见的字符集

1)UTF8
2)LATIN1
3)GBK

4.常见校对规则

1)ci:大小写不敏感
2)cs或bin:大小写敏感

5.我们可以使用以下命令查看

mysql> show charset;
mysql> show collation;

四.字符集设置

1.操作系统级别

[[email protected] ~]# source /etc/sysconfig/i18n
[[email protected] ~]# echo $LANG
zh_CN.UTF-8

2.操作系统客户端级别(SSH)

3.MySQL实例级别

方法1:在编译安装时候就指定如下服务器端字符集。

cmake .
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all \

方法2:在配置文件中设置字符集

[mysqld]
character-set-server=utf8

4.建库级别

mysql> create database oldboy charset utf8 default collate = utf8_general_ci;

5.建表级别

mysql>  CREATE TABLE `test` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

思考问题:如果在生产环境中,字符集不够用或者字符集不合适该怎么处理?
?
生产环境更改数据库(含数据)字符集的方法

mysql> alter database oldboy CHARACTER SET utf8 collate utf8_general_ci;
mysql> alter table t1 CHARACTER SET utf8;

五.select的高级用法(扩展)

1.多表连接查询(连表查询)

集合:

[zhang3,li4,wang5]

[50,70,80]

t1:

sid 1 2 3
sname zhang3 li4 wang5

t2:

sid 1 2 3
mark 50 70 80

范式: 减少数据冗余,防止产生一致性问题,把一个表作为一个原子,把一张表拆到不能再拆为止。(开发阶段设计规范)

例:根据两张表的内容查出张三的成绩

select t1.sname,t2.mark from t1,t2 where t1.sid=t2.sid and t1.sname=’zhang3’;

1.1传统连接(只能内连接,只能取交集)

#世界上小于100人的人口城市是哪个国家的?
select city.name,city.countrycode,country.name
from city,country
where city.countrycode=country.code
and city.population<100;

1.2 NATURAL JOIN(自连接的表要有共同的列名字)

SELECT city.name,city.countrycode ,countrylanguage.language ,city.population
FROM  city NATURAL  JOIN  countrylanguage
WHERE population > 1000000
ORDER BY population;

1.3企业中多表连接查询(内连接)

select city.name,city.countrycode,country.name
from city join country on city.countrycode=country.code
where city.population<100;

建议:使用join语句时,小表在前,大表在后。

1.4外连接

select city.name,city.countrycode,country.name
from city left join country
on city.countrycode=country.code
and city.population<100;

1.5 UNION(合并查询)

#范围查询OR语句
mysql> select * from city where countrycode='CHN' or countrycode='USA';
#范围查询IN语句
mysql> select * from city where countrycode in ('CHN','USA');
替换为:
mysql> select * from city where countrycode='CHN'
union  all
select * from city where countrycode='USA' limit 10
union:去重复合并
union all :不去重复
使用情况:union<union all

原文地址:https://www.cnblogs.com/Forever-x/p/10992551.html

时间: 2024-10-10 10:07:02

第四章· MySQL客户端工具及SQL讲解的相关文章

MySQL客户端工具以及常用SQL语句

Mysql客户端工具: 在用yum安装的maiadb-server的时候,在/etc/my.cnf.d下有一个名为client.cnf的文件,编辑此文件,在此文件的[client]下添加用户名和密码就可以不用输入口令登录 vim /etc/my.cnf.d/client.cnf [client] user=root # 登录数据库使用的用户名 password=mysql #登录数据库使用的密码 大部分常用SQL语句 1 创建用户并查看(SQL语句); create user [email pr

4个mysql客户端工具的比较

mysql是我以前学习和练习所使用的数据,现在在工作中也在使用,之前公司里用oracle,我在做自己的东西的时候觉得用oracle太不方便,于是就找了mysql(当时也考虑过sqlserver,觉得还是没有mysql小巧),从那时起我就开始接触下面所说的几种mysql客户端工具了. 我接触的mysql客户端工具一共有4个,mysqlfront, sqlyog, mysqlbrowser, ems mysql manager,其中mysqlbrowser是我最早使用的一个mysql客户端工具(一年

mysql客户端工具及mysql客户端命令和mysqladmin的使用

mysql客户端工具 常用的mysql客户端工具有这些: mysql:这是一个命令行的客户端工具,在安装mysql服务器时,会自动安装的一个命令行工具. mysqldump:这是用来备份mysql时用到的客户端工具 mysqladmin:这是一个比较常用的mysql客户端管理工具,功能比较强大,后文会介绍 mysqlcheck mysqlimport mysql命令:mysql客户端命令和服务器端命令 在使用账号和密码登入到mysql服务器上时,即出现"mysql>"字样是,表示

第四章 MySQL高级查询(二)

第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists也可以作为where语句的子查询,语法如下: SELECT --FROM 表名 WHERE  EXISTS(子查询): EXISTS关键字后面的参数是一个任意的子查询,如果该子查询没有返回行,则EXISTS子查询的结果为true,此时再执行外层查询语句.如果EXISTS子查询结果为false,此时外

mysql客户端工具使用

mysql客户端工具在/usr/local/mysql/bin目录下,常用的客户端有:mysql和mysqladmin mysql命令的工作模式:交互式和脚本式 交互式: 交互式模式分为服务器端命令和客户端命令: 服务器端命令: For server side help, type 'help contents' mysql> help contents You asked for help about help category: "Contents" For more inf

第四章 MySQL程序

目录 4.1 MySQL程序概述 4.2 使用MySQL程序 4.2.1 调用MySQL程序 4.2.2 连接MySQL服务器 4.2.3 指定程序选项 4.2.4 在命令行使用选项 4.2.5 程序选项编辑器 4.2.6 使用选项文件 4.2.7 影响文件选项处理的命令行选项 4.2.8 使用选项设置程序变量 4.2.9 选项默认值,选项期望值和=符号 4.2.10 设置环境变量 4.3 MySQL 服务器和服务启动程序 4.3.1 mysqld --MySQL服务器 4.3.2 mysqld

MySQL客户端工具 SQLyog

我最喜欢它的History功能,把执行过的操作对应语句都输出出来,一些麻烦的语句用GUI操作后,还能保存对应的sql语句.不错! 官网:http://www.webyog.com 下面是官方的介绍:SQLyog是业界著名的Webyog公司出品的一款简洁高效.功能强大的图形化MySQL数据库管理工具.使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库.SQLyog相比其它类似的MySQL数据库管理工具其有如下特点:1.基于C++和MySQLAPI编程:2.方便快

mysql 客户端工具参数详解

客户端工具:mysql,mysqladmin,mysqldump,mysqlcheck 非客户端类的管理工具:myisamchk,myisampack mysql命令提示符 mysql> 等待输入命令 '> 前面提供的'未提供结束' "> `> -> 续航符 /*> 注释信息 mysql的命令行编辑快捷键 ctrl+w:删除光标所在处之前的一个单词 ctrl+u:删除光标之前至行首的所有内容 ctrl+y:粘贴之前ctrl+w或ctrl+u删除的内容 ctrl

高性能MySQL之【第十六章MySQL用户工具】总结

接口工具: Msql Workbench   http://www.mysql.com/products/workbench SQLyog  http://www.webyog.com phpMyAdmin http://sourceforge.net/projects/phpmyadmin [不建议使用] Adminer phpmyadmin的更好的替代品, http://www.adminer.org[不建议公开访问] 命令行工具集: Percona Toolkit : Mysql管理员必备