# 命令行客户端MySQLMySQL是一个关系型数据库管理系统

安装MySQL服务端软件使用: sudo apt-get install mysql-server

安装MySQL客户端软件使用: sudo apt-get install mysql-client

图形化MySQL客户端软件使用Navicat

- 查询MySQL服务端是否安装:服务端server ,客户端client

- 方法1.apt list | grep mysql-server

- 方法2.apt-cache show mysql-server

- 方法3.sudo service mysql status 用于查看服务状态

- sudo service mysql stop 关闭

- sudo service mysql start 开启,或者重启 sudo service mysql restart

- 如果对配置文件【/etc/mysql/mysql.config.d】进行修改,需要重新启动MySQL数据库服务sudo service mysql start

主要配置信息说明:vim /etc/mysql/mysql.config.d/mysqld.cnf 查看配置信息port表示端口号,默认为3306

bind-address表示服务器绑定的ip,默认为127.0.0.1

datadir表示数据库保存路径,默认为/var/lib/mysql

log_error表示错误日志,默认为/var/log/mysql/error.log

- datadir = /var/lib/mysql 自己创建的数据库存放地址

- sudo pip3 install pymysql pip3为包管理工具,安装第三方的Python包

# SQL基本语法登录数据库: mysql -uroot -p

退出数据库: quit 或者 exit 或者 ctr + d

创建数据库: create database 数据库名 charset=utf8;

使用数据库: use 数据库名;

删除数据库: drop database 数据库名;

创建表: create table 表名(字段名 字段类型 约束, ...);

修改表-添加字段: alter table 表名 add 字段名 字段类型 约束

修改表-修改字段类型: alter table 表名 modify 字段名 字段类型 约束

修改表-修改字段名和字段类型: alter table 表名 change 原字段名 新字段名 字段类型 约束

修改表-删除字段: alter table 表名 drop 字段名;

删除表: drop table 表名;

查询数据: select * from 表名; 或者 select 列1,列2,... from 表名;

插入数据: insert into 表名 values (...) 或者 insert into 表名 (列1,...) values(值1,...)

修改数据: update 表名 set 列1=值1,列2=值2... where 条件

删除数据: delete from 表名 where 条件

# MySQL笔记1--MySQL数据库的基本使用

--登录数据库

mysql -uroot -p

--显示当前时间

select now();

--登出(退出)数据库

exit/quit/ctr+d

--查看所有数据库

show databases;

--创建数据库

create database python41 charset=utf8;

--使用数据库

use python41;

--查看当前使用的数据库

select database();

--删除数据库-慎重

drop database python41;

--查看当前数据库中所有表

show tables;

--创建表

create table students(

id int unsigned primary key auto_increment not null,

name varchar(10) not null,

age tinyint default 0,

gender enum("男", "女") default "男"

);

--修改表-添加birthday字段

alter table students add birthday datetime not null;

--修改表-修改字段类型

alter table students modify birthday date;

--修改表-修改字段名和字段类型

alter table students change birthday birth datetime not null;

--修改表-删除birthday字段

alter table students drop birth;

--查看表结构

desc students;

--查看创表SQL语句

show create table students;

--查看创库SQL语句

show create database python41;

--删除表

drop table students;

--查询所有列数据

select * from students;

--查询指定列数据

select name, age from students;

- 以上是单表查询,可以省略表名 若不是单表查询 select students.naem, students.age from students;

--添加数据--全列插入

insert into students values(0, '张三', 18, default);

- 主键列是自动增长,但是在全列插入时需要占位,通常使用空值(0或null或default)

主键列表插入数据的时候可以指定: 0、default、null

这里的default表示使用该字段默认值

--添加数据--部分列插入

insert into students(name, age) values('郭靖',30);

--添加数据--全列多行插入

insert into students values(0, '黄蓉', 28, '女'),(0,'黄老邪',50,default);

--添加数据--部分列多行插入

insert into students(name, age) values('杨过', 20),('周伯通',55);

--修改数据

update students set age=18, gender = '女' where id = 3;

--删除数据

delete from students where id = 8;

--删除数据可以使用逻辑删除,添加一个标识字段

alter table students add is_del tinyint default 0;

这里删除数据其实修改标识字段

update students set is_del = 1 where id = 7;

--as关键字,用户给表的字段和表设置别名

select name as n, age as a from students as s;

提示: as 关键字可以省略,也表示设置别名

--distinct关键字, 用于去除重复的数据行

select distinct age, gender from students;

- 根据最后面的一个字段进行去重操作

--查询编号大于3的学生

select * from students where id > 3;

--查询编号不大于4的学生

select * from students where id <= 4;

--查询姓名不是“黄蓉”的学生

select * from students where name <> '黄蓉';

select * from students where name != '黄蓉';

--查询没被删除的学生

select * from students where is_del = 0;

--查询编号大于3的女同学

select * from students where id > 3 and gender = '女';

--查询编号小于4或没被删除的学生

select * from students where id < 4 or is_del = 0;

--查询年龄不在10岁到15岁之间的学生

select * from students where not (age >= 10 and age <= 15);

--查询姓黄的学生

select * from students where name like '黄%';

--查询姓黄并且“名”是一个字的学生

select * from students where name like '黄_';

select * from students where name like '黄__';

%: 表示任意多个字符

_: 表示任意一个字符

--查询姓黄或叫靖的学生

select * from students where name like '黄%' or name like '%靖';

--查询编号为3至8的学生

select * from students where id >=3 and id <= 8;

select * from students where id between 3 and 8;

--查询编号不是3至8的男生

select * from students where not (id between 3 and 8) and gender='男';

--查询编号是3、5、7的学生

select * from students where id in (3, 5, 7);

--查询编号不是3、5、7的学生

select * from students where id not in (3, 5, 7);

--查询没有填写身高的学生

select * from students where height is null;

--查询填写身高的学生

select * from students where height is not null;

--查询未删除男生信息,按学号降序

select * from students where is_del = 0 and gender = '男' order by id desc;

--显示所有的学生信息,先按照年龄从大-->小排序,当年龄相同时 按照身高从高-->矮排序

select * from students order by age desc, height desc;

默认是asc 不用指定。

--查询前3行男生信息

select * from students where gender='男' limit 0, 3;

简写方式,第一个参数是开始行索引,默认是0可以不指定, 第二个参数是查询条数

select * from students where gender='男' limit 3;

--查询学生表,获取第n页数据的SQL语句

select * from students limit (n-1) * m, m;

# MySQL笔记2--MySQL数据库的条件查询

-- 清屏

system clear

-- 查询学生的个数

select count(height) from students;

注意点: 聚合函数不会对空值进行统计

一般如果要是指定列名,那么就是主键字段

select count(id) from students;

通用的写法

select count(*) from students;

-- 查询女生的编号最大值

select max(id) from students where gender = '女';

-- 查询未删除的学生最小编号

select min(id) from students where is_del = 0;

-- 查询男生的总身高

select sum(height) from students where gender='男';

-- 求男生的平均身高

select sum(height) / count(*) from students where gender='男';

select avg(height) from students where gender = '男';

select avg(ifnull(height, 0)) from students where gender = '男';

注意点: 聚合函数不会对空值进行统计

ifnull函数判断指定的字段是否是空值,如果是空值使用默认值0

-- 查询性别的种类

select distinct gender from students;

select gender from students group by gender;

-- 根据name和gender字段进行分组, 查看name和gender的分组信息

select gender,name from students group by gender,name;

-- 根据gender字段进行分组, 查询每个分组的姓名信息

select gender,group_concat(name) from students group by gender;

group_concat:统计每个分组指定字段的信息集合,信息之间使用逗号进行分割

-- 统计不同性别的平均年龄

select gender,avg(age) from students group by gender;

-- 统计不同性别的人的个数

select gender,count(*) from students group by gender;

-- 根据gender字段进行分组,统计分组条数大于2的

select gender,count(*) from students group by gender having count(*) > 2;

-- 对分组数据进行过滤使用having

-- 根据gender字段进行分组,汇总总人数

select gender,count(*) from students group by gender with rollup;

-- 根据gender字段进行分组,汇总所有人的年龄

select gender,group_concat(age) from students group by gender with rollup;

-- 使用内连接查询学生表与班级表

select s.name, c.name from students s inner join classes c on s.c_id = c.id;

-- 使用左连接查询学生表与班级表

select * from students s left join classes c on s.c_id = c.id;

左连接查询,根据左表查询右表,如果右表数据不存在使用null填充

left左边是左表,left右边是右表

-- 使用右连接查询学生表与班级表

select * from students s right join classes c on s.c_id = c.id;

右连接查询,根据右表查询左表,如果左表数据不存在使用null填充

right左边是左表,right右边是右表

-- 使用自连接查询省份和城市信息

select c.id, c.title, c.pid, p.title from areas c inner join areas p on c.pid = p.id where p.title = '广东省';

-- 查询大于平均年龄的学生

select * from students where age > (select avg(age) from students);

-- 查询学生在班的所有班级名字

select * from classes where id in (select c_id from students where c_id is not null);

-- 查找年龄最大,身高最高的学生

select * from students where age = (select max(age) from students) and height = (select max(height) from students);

简写:

select * from students where (age, height) = (select max(age), max(height) from students);

--子查询是一个完整的查询语句,子查询的执行顺序,先执行子查询然后主查询根据子查询的结果再执行

-- 为学生表的cls_id字段添加外键约束

alter table students add foreign key(c_id) references classes(id);

- 注意:对已有表格添加外键约束之前,要保证表格的数据符合约束条件

- 添加约束的字段,字段类型应该一致

-- 创建学校表

create table school(

id int unsigned not null primary key auto_increment,

name varchar(30) not null

);

-- 创建老师表添加学校外键

create table teacher(

id int unsigned not null primary key auto_increment,

name varchar(20) not null,

s_id int unsigned,

foreign key(s_id) references school(id)

);

-- 删除外键

alter table teacher drop foreign key teacher_ibfk_1;

- 注意:要删除的外键名称是 CONSTRAINT后面的‘xxxxxxx’

# MySQL笔记3--MySQL数据库的高级使用

-- 创建 "京东" 数据库

create database jing_dong charset=utf8;

-- 使用 "京东" 数据库

use jing_dong;

-- 创建一个商品goods数据表

create table goods(

id int unsigned primary key auto_increment not null,

name varchar(150) not null,

cate_name varchar(40) not null,

brand_name varchar(40) not null,

price decimal(10,3) not null default 0,

is_show bit not null default 1,

is_saleoff bit not null default 0

);

-- 向goods表中插入数据(将数据保存xxx.sql,使用source ./xxx.sql 命令自动导入)

insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default);

insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default);

insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default);

insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default);

insert into goods values(0,'x240 超极本','超级本','联想','4880',default,default);

insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default);

insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default);

insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default);

insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default);

insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default);

insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default);

insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default);

insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default);

insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default,default);

insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default,default);

insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default);

insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default,default);

insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default);

insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);

insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default);

insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);

-- 查询类型cate_name为 '超级本' 的商品名称、价格

select name, price from goods where cate_name = '超级本';

-- 显示商品的分类

select distinct cate_name from goods;

select cate_name from goods group by cate_name;

-- 求所有电脑产品的平均价格,并且保留两位小数

select round(avg(price),2) from goods;

-- 显示每种商品的平均价格

select cate_name, avg(price) from goods group by cate_name;

select cate_name, round(avg(price),2) from goods group by cate_name;

-- 查询每种类型的商品中 最贵、最便宜、平均价、数量

select cate_name, max(price), min(price), avg(price), count(*) from goods group by cate_name

-- 查询所有价格大于平均价格的商品,并且按价格降序排序

select * from goods where price > (select avg(price) from goods) order by price desc;

-- 创建商品分类表

create table goods_cates(

-> id int unsigned not null primary key auto_increment,

-> name varchar(50) not null);

-- 查询goods表中商品的分类信息

select cate_name from goods group by cate_name;

-- 将查询结果插入到good_cates表中

insert into goods_cates(name) select cate_name from goods group by cate_name;

-- 添加移动设备分类信息

insert into goods_cates(name) values('移动设备');

-- 查看goods表中的商品分类名称对应的商品分类id

select * from goods g inner join goods_cates gs on g.cate_name = gs.name;

-- 将goods表中的分类名称更改成商品分类表中对应的分类id,连接更新表中的某个字段

update goods g inner join goods_cates gs on g.cate_name = gs.name set g.cate_name = gs.id;

-- 查询品牌信息

select brand_name from goods group by brand_name;

-- 通过create table ...select来创建商品品牌表并且同时插入数据

create table goods_brands( id int unsigned not null primary key auto_increment, name varchar(50) not null) select brand_name as name from goods group by brand_name;

注意: 创建的表字段要和插入数据的字段保持一致如 brand_name as name

-- 插入双飞燕品牌

insert into goods_brands(name) values('双飞燕');

-- 查看goods表中的商品品牌对应的商品品牌id

select * from goods g inner join goods_brands gs on g.brand_name = gs.name;

-- 将goods表中的品牌更改成品牌表中对应的品牌id,连接更新表中的某个字段

update goods g inner join goods_brands gs on g.brand_name = gs.name set g.brand_name = gs.id;

-- 通过alter table语句修改表结构,把cate_name改成cate_id,把brand_name改成brand_id

alter table goods change cate_name cate_id int not null, change brand_name brand_id int not null;

# 待更新

mysql语句命令_常用MySQL语句(命令行)相关推荐

  1. MySQL数据库常用命令_常用SQL语句及命令_MySQL常用语句

    文章目录 一.常用的 SQL 语句 (一)查看当前登录用户 (二)查看当前数据库 (三)如何查看全部用户? (四)创建数据库 (五)选择要操作的数据库 (六)创建表 (七)查看表的结构 (八)往表中插 ...

  2. mysql 中有什么命令_常用mysql命令大全

    常用的MySQL命令大全 连接MySQL格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命 ...

  3. redhat bash: yum: 未找到命令..._常用linux yum 命令和 vim命令,这几个要熟记

    yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并 ...

  4. 刷新mac地址命令_常用网络检测命令-必备技术

    现在弱电行业工作,设备基本上普遍是使用网络连接,因此具有一定网络检测命令知识,这时通过使用一些网络的基本命令来检测设备的网络状态.以下,介绍常用网络命令: 1.ping命令 ping 命令式用来测试T ...

  5. 经典MySQL语句大全和常用SQL语句命令的作用。

    转载自 http://blog.csdn.net/suyu_yuan/article/details/51784893 转自网络: 经典MSSQL语句大全和常用SQL语句命令的作用  下列语句部分是M ...

  6. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  7. 出生日期范围的Sql语句_【呕心总结】python如何与mysql实现交互及常用sql语句

    9 月初,我对 python 爬虫 燃起兴趣,但爬取到的数据多通道实时同步读写用文件并不方便,于是开始用起mysql.这篇笔记,我将整理近一个月的实战中最常用到的 mysql 语句,同时也将涉及到如何 ...

  8. mysql 修改字段名_常用的Mysql语句你知道多少?

    1.数据库存储引擎 mysql> show variables like '%storage_engine%'; #查看mysql当前默认的存储引擎 mysql> show engines ...

  9. mysql经典sql语句大全_常用经典SQL语句大全完整版--详解+实例 (存)

    下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELETE, ...

最新文章

  1. iOS设备中垂直同步开启后的帧率计数
  2. python3 requests 错误EOF occurred in violation of protocol 解决方法
  3. DeepID3:Face Recognition with Very Deep Neural Networks
  4. 怎么传日期参数_时间序列amp;日期学习笔记大全(下)
  5. 分站实现php,php城市分站是什么原理
  6. oracle 查询每组条数,Oracle SQL查询:根据时间检索每组的最新值
  7. 轻量级数据sqlite的C++调用示例
  8. 2017-2018-1 20155301 实验四 外设驱动程序设计
  9. Js 实现局部打印功能
  10. Separate texture from black background
  11. XAMPP mysql远程连接
  12. 如何在 Ubuntu 16.10 的 Unity 8 上运行老式 Xorg 程序
  13. 利用Python下载文件
  14. PDM系统的结构设计
  15. 自制三层架构代码生成器软件
  16. Linux下php导出excel失败且浏览器报错500
  17. 计算机小喇叭找不到,电脑右下角小喇叭不见了(解决方案)
  18. 怎么把ppt弄成链接的形式_ppt链接excle表格:如何在ppt中超级链接到指定的excel工作表...
  19. 云服务器网站免备案怎么用,云服务器如何使用免备案功能访问网站
  20. Redis学习之Master/Salve十一

热门文章

  1. AnyChat开发流程指南
  2. 高频电子线路——第三章高频小信号放大器
  3. pub格式的文件打开报错:Publisher无法打开文件 解决办法
  4. 如何办理移动飞享8元套餐
  5. 分享:我的.Net武器库 ------ 新.Net架构必备工具列表
  6. 如何做好初中物理实验室的建设与管理
  7. Linux--1.初识Linux(基本指令)
  8. 【组织架构】中国铁路太原局集团有限公司
  9. 安装wincc flexible等西门子软件时出现“Please restart Windows before installing new programs“
  10. 拯救者 显卡混合模式卡顿 解决方案