我的第二十篇博客---Mysql基本命令

explain select name from student where name=‘小明‘;
查看查询了多少行才找到

alter database 数据库名 character set utf8;  将数据库的编码改为utf8
create database 数据库名 charset=utf8;   创建数据库指定编码为utf8

当一个表数据全部删除时,id设有主键自增,
truncate table 表名;下次id从1开始 原表数据全部删除

要是不想全部删除 则
alter table 表名 auto_increment 2;
下次id从2开始

优先级 由高到低:
小括号,not,比较运算符,逻辑运算符
and比or先运算,如果同时出现并希望先算or,需要结合()使用

数据备份与还原
注意:不要打分号,不登陆mysql 直接在cmd下运行

1、备份:
mysqldump -uroot -p123 要备份的数据库名>生成的脚本路径

2】恢复:
source 脚本文件路径

端口号为:3306

默认存储引擎:innodb

默认字符集:utf8

查看所有表
show tables;

查看所有数据库
show databases;

查看表结构
desc 表名;

切换数据库
use 数据库名

decimal(m,n)非常精确的小数

年月日 date
时分秒 time
年月日时分秒 datetime
文本类型 text 可以添加任意类型数据
unsigned 必须放在前面

数据类型的属性
mysql关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集

select IFNULL(age,0) from emp; 当age是NULL是默认为0

查看版本:select version();

显示当前时间:select now();

查看当前使用的数据库:select database();

修改密码:
set password for [email protected]=password(‘新密码‘);

enum(‘男‘,‘女‘) 当一个字段设定了这个后插入只能插入男或者女!!!

删除表
drop table 表名;

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

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

修改表名:
alter table 表名 rename to 新表名;

修改字段名:
alter table 表名 change 原字段名 新字段名 数据类型;

修改数据类型:
alter table 表名 modify 字段名 新数据类型;

删除一个字段:
alter table 表名 drop 字段名;

将字段1放在字段2后面:
alter table 表名 modify 字段名1 数据类型 after 字段名2;

插入数据
1、选取字段插入多条记录
insert into 表名(字段名1,字段名2,....) values(值1,值2,...),(值1,值2,...)...;
2、全部字段插入多条记录
insert into 表名 values(值1,值2,...),(值1,值2,...)...;

修改数据
update 表名 set 要修改的字段名=新的值 where 条件;

使用as 给字段起别名
select id as code from student; 查询出来的结果字段名不是id,变成了code

使用distinct可以消除重复数据
select distinct sex, age from student; 查询出来的性别和年龄没有重复的数据

条件查询:
使用where子句对表中的数据筛选,结果为true的行会出现在结果集中
where后面支持多种运算符,进行条件的处理

select concat(‘我叫‘,name,‘我的年龄是‘,age) from stu;

比较运算符 :>,<,<=.>=,=,!=,is

逻辑运算符:and,or,not,

模糊查询:
like‘%_‘ %可以匹配任意个字符,
_只可以匹配到一个字符

范围查询:
age between 15 and 20 年龄在15到20之间的
age in(1,2,4,5) 年龄是1,2,4,5的数据

排序:
select name,age,score from student order by age desc,socre asc;
先按年龄进行降序,如果年龄一样再按成绩升序排序

聚合函数
为了快速得到统计数据,经常会用到如下5个聚合函数
总数:
count(*)表示计算数据为非空的总行数,括号中写*和列名结果是相同的
select count(*) from student;

最大值:
max(列名) 表示求此列的最大值
select max(id) from student;

最小值
min(列名) 表示求此列的最小值
select min(id) from student;

求和:
sum(列名)表示求此列的和
select sum(age) from student;

平均值:
avg(列名)表示求此列的平均值
select avg(id) from student;

分组:
group by
group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组
group by可用于单个字段分组,也可用于多个字段分组

group by+集合函数
通过group_concat()的启发,我们既然可以统计出每个分组的某字段的值的集合,那么我们也可以通过集合函数来对这个值的集合做一些操作

select gender,group_concat(name,age) from stu group by gender;
结果为:
gender group_concat(age)
男 玲珑11,玲珑12,玲珑13,玲珑14,玲珑15
女 龙12,龙33,龙45,龙51

分别统计性别为男/女的人年龄平均值
select sex,avg(age) from stu group by sex;

group by + having
having条件表达式:用来分组查询后指定一些条件来输出查询结果
having作用和where一样,但having只能用于group by

select sex,count(*) from stu group by sex having count(*)>2;

group by + with rollup
with rollup的作用是:在最后新增一行,来记录当前列里所有记录的总和
select gender,coount(*) from stu group by gender with rollup;

分页
获取部分行
当数据量过大时,在一页查看数据是一件非常麻烦的事情
语法:
select *from 表名 limit start,count;
从start开始,获取count条数据
例如:查看前三行数据:
select *from stu limit 0,3;

求第n页的数据
select *from stu where limit (n-1)*m,m;

连接查询
当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,在选择合适的列返回

内连接:
select *from emp inner join dept on emp.deptno=dept.deptno;

外连接
左外连接:
select *from emp left outer join dept on emp.deptno=dept.deptno;
右外连接:
select *from emp right outer join dept on emp.deptno=dept.deptno;

创建主键:
create table s(
sid int primary key,
name varchar(10)
);

删除主键:
alter table 表名 drop primary key;

主键自增:
create table stu(
id int primary key auto_increment,
name varchar(10)
);

修改表时主键自增:
alter table stu change sid sid int auto_increment;

修改表时删除主键自增:
alter table stu change sid sid int;

非空约束:not null
唯一约束:unique
create table s(
id int not null unique
);

主键约束是唯一的、非空的、还可以被引用
非空约束是非空的
唯一约束是唯一的
非空约束+唯一约束!=主键约束

删除唯一约束
alter table 表名 drop index 列名;

创建外键:
create table s(
id int,
constraint fk_主表名 foreign key(外键字段名) references 主表名(主键字段名)
);

修改增加外键:
alter table 副表名 add constraint fk_主表名 foreign key(外键字段名) references 主表名(主键字段名);

删除外键:
alter table 副表名 drop foreign key fk_主表名;

注释:
create table s(
id int comment ‘作者‘,
age int
);
跟正常效果一样

完整的select语句
select distince *
from 表名
where ...
group by ... having ...
order by ...
limit start,count

视图
1、问题:
对于复杂的查询,往往是有多个数据进行关联查询而得到,如果数据库因为需求等原因发生了改变,为了保证查询出来的数据与之前相同,则需要在多个地方进行修改,维护起来非常麻烦

解决办法:定义视图

2、试图是什么:
通俗的讲,视图就是一条select语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上,视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据 (基本表数据发生了改变,视图也会跟着改变);

事务

索引:
创建索引:
create index 索引名称 on 表名(字段名称(长度));
如果不是字符串类型就不用加长度

查看索引:
show index from 表名;

删除索引:
drop index 索引名称 on 表名;

原文地址:https://www.cnblogs.com/sll-csdn/p/10926026.html

时间: 2024-10-31 03:48:49

我的第二十篇博客---Mysql基本命令的相关文章

我的第二十一篇博客---Mysql强化及应用于python

使用python读取数据库: from pymysql import connectconn=connect(host='localhost',port=3306,database='数据库名',user='root',password='密码',charset='utf8')#获取cursor对象cur=conn.cursor()#执行sql语句sql="select *from stu"cur.execute(sql)#fetchall取多条数据result=cur.fetchal

我的第二十七篇博客---beautifulsoup与csv操作方法

Beautiful Soup和lxml一样,也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据lxml只会局部遍历,而Beautiful Soup是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml/Beautiful Soup 用来解析HTML比较简单,API非常人性化,支持CSS选择器,Python标准库中的HTML解析器,也支持lxml的解析器 bs4的基本使用实:首先必须要导入bs4库from b

Xamarin几十篇博客,roslyn和dotnet也开源了

.Net 基金会 http://www.dotnetfoundation.org/ 更新的真快,刚打完2的补丁包,3就粗来了............ https://www.visualstudio.com/downloads/visual-studio-prerelease-downloads#sec1 https://www.visualstudio.com/en-us/downloads/visual-studio-2015-iso-sha1-vs.aspx iso  离线地址: http

我的第三十篇博客---scrapy框架

scrapy安装需要一个异步模块Twisted,这个模块得自己手动安装 Twisted下载地址:https://blog.csdn.net/coco56/article/details/82145425 如果自己是python 37 -64位,可以下载这个网盘的文件 按需求选取 pycharm 安装: pip install Twisted存放的路径 打开cmd 运行 scrapy 出数据表示安装成功 不是内部命令,未安装 然后 需要升级 运行指令: pip install pypiwin32

我的第二十三篇博客---爬虫简介

网络爬虫(又被称为网页蜘蛛,网络机器人) 就是模拟客户端(主要指浏览器)发送网络请求,接收请求响应,按照一定的规则,自动地抓取互联网信息的程序.原则上,只要是客户端(主要指浏览器)能做的事情,爬虫都能够做. 爬虫分类:通用爬虫:通常指搜索引擎的爬虫(百度,谷歌) 聚焦爬虫:针对特定网站的爬虫 积累式爬虫:从开始运行到打到停止条件的过程中不断爬取目标数据,过程中会进行去重操作增量式爬虫:只爬取新产生的或者已经发生变化网页的爬虫深网爬虫:隐藏在搜索表单或登录表单之后的数据,只有用户提交一些关键词或登

第十周博客总结

这个作业属于哪个课程 C语言程序设计ll 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3162 我在这个课程的目标是 复习之前学过的内容 这个作业在哪个具体方面帮助我实现目标 网上课程 参考文献 C语言第三版第九章 一.刘未鹏的博客:怎样花两年时间面试一个人 http://mindhacks.cn/2011/11/04/how-to-interview-a-per

Python开发【第二十篇】:缓存

Python开发[第二十篇]:缓存redis&Memcache 点击这里 Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可

一篇博客让你了解RxJava

RxJava可以说是2016年最流行的项目之一了,最近也接触了一下RxJava,于是想写一篇博客,希望能通过这篇博客让大家能对其进行了解,本篇博客是基于RxJava2.0,跟RxJava1.0还是有很多不同的 基础知识 RxJava的核心就是"异步"两个字,其最关键的东西就是两个: Observable(被观察者) Observer/Subscriber(观察者) Observable可以发出一系列的 事件,这里的事件可以是任何东西,例如网络请求.复杂计算处理.数据库操作.文件操作等等

[iOS]关于 App 混合(Hybrid)开发的优化,包括H5、Weex等(本篇博客主要针对 iOS 应用讲解,但该思想同样适用于Android)

我们知道混合开发,可以节省很多成本(时间成本,经济成本等等),所以有很多公司比较钟爱这种开发形式,今天所讲的优化方式,也是我在我们公司的应用中实际用了的,而且我写的这个优化的 SDK 已经开源到 github 上了,有兴趣的同学可以下载来看一下,有不足的地方欢迎指正.这里给出链接:https://. 转载请注明出处:http://www.cnblogs.com/shisishao/p/6830736.html -.首先,先介绍下什么是混合开发: 我们通常把移动开发分为Web.Native和Hyb