MySQL数据库(;表示结束语句) 关系型数据库
注释用 //

db_name表示库名; b_name表示表名

1.进入、退出

root用户只能在本机连接,不可外部链接
进入:mysql -uroot -pqwe123 (u代表use,p代表password)
或 mysql -uroot -p
qwe123 (密码)
退出 :exit / quit

2.库、表级操作(官方命令的字母要大写)

2.1 库操作:
查看所有数据库:
SHOW DATABASES;
创建:
CREATE DATABASE db_name;
使用:
USE db_name;
删除:
DROP DATABASE db_name;

2.2 表操作:
创建:(必须指定类型) 类型:(int/smallint 整数,char/varchar 字符串,bit 位),约束:(NOT NULL 不能为空,UNIQUE KEY 不能重复,PRIMARY KEY 非空且唯一,UNSIGNED 无符号(非负))
如:CREATE TABLE b_name(id INT UNSIGNED(表示非负数) NOT NULL AUTO_INCREMENT,
name varchar(30)(30表示最多字符长度) NOT NULL,
‘number‘ char(9)(9表示固定字符长度) NOT NULL,
gender bit(1) DEFAULT b'0',
phone char(11) NOT NULL,
tzaccount varchar(20) NOT NULL,
qq varchar(12),
wechat varchar(30),
‘power‘ smallint(6)(括号内最大为65535) NOT NULL,
actrecv smallint(6) NOT NULL,
PRIMARY KEY (id), (非空且唯一)(一张表只能有一个主键)
UNIQUE KEY (‘number‘),
UNIQUE KEY (phone),
UNIQUE KEY (tzaccount),
UNIQUE KEY (qq),
UNIQUE KEY (wechat)(最后没有逗号)
);
查看所有表:
SHOW TABLES;
查看创建表:
SHOW CREATE TABLE b_name;(;或用\G结尾)
删除表:
DROP TABLE b_name;

3.记录的CRUD操作:

3.1 插入数据:
INSERT INTO b_name VALUES (1, 'Tyf', ...(参数必须全写完))
INSERT INTO b_name(name, `number`, gender, phone) VALUES ('ll', '20181105', b'1', '13266666666') (选择性插入)

3.2 查询:
SELECT * FROM b_name; (查询所有)
SELECT * FROM b_name WHERE gender=b'1'; (按条件查询,如查询gender=b'1'的 对象)
SELECT name,phone FROM b_name;(查询一部分,查询name,phone列)

3.2.1 筛选条件:
比较运算: (NULL不能作比较,可以用IS NULL 或IS NOT NULL)
等于 =
大于 >
大于等于 >=
小于 <
小于等于 <=
不等于 <> 或 != (如:WHERE gender <> 0;)
逻辑运算:
and
or
not

3.2.2 子查询:(要求:1.必须嵌套在查询内部,2.必须在圆括号内)
如:SELECT * FROM b_name WHERE `power`>(SELECT `power` FROM b_name WHERE name='Tyf');

3.2.3 聚合:
统计个数:
count(*) (如:SELECT count(*) FROM b_name;)
最大值:
max(column)
最小值:
min(column)
求和:
sum(column)
平均值:
avg(column)

3.2.4 分组聚合:(查询只能包含分组列和聚合列,且单纯的分组意义不大,但可以这么做)
如:SELECT gender, max(`power`)(这里还可以添加内容) FROM b_name GROUP BY gender;

3.2.5 聚合筛选:
如:SELECT gender, max(`power`) FROM b_name GROUP BY gender HAVING max(`power‘)>9000;(分组聚合以后才能用HAVING语句)
SELECT gender, max(`power`) FROM b_name WHERE `number`>'1233' GROUP BY gender

3.2.6 限制查询个数:
SELECT * FROM b_name LIMIT 3;(3代表查询个数)
SELECT * FROM b_name LIMIT 3,4;(跳过三个查询四个)

3.2.7 排序:
SELECT * FROM b_name ORDER BY `number`;(默认升序)
SELECT * FROM b_name ORDER BY `number` DESC;(降序)

3.2.8 分页算法:(分页用SQL座效率高,最好不要用python做)
SELECT * FROM b_name ORDER BY `number` LIMIT 3;(第一页)
SELECT * FROM b_name ORDER BY `number` LIMIT 3,3;(第二页)
SELECT * FROM b_name ORDER BY `number` LIMIT 2*3,3;(第三页)
......等等以此类推

3.3 删除:
DELETE FROM b_name WHERE 1; (全删)
DELETE FROM b_name WHERE name='Tyf'; (安条件删除)

3.4 修改:
UPDATE b_name SET gender=b'1' WHERE name='Tyf';(不加WHERE name='Tyf'则表示修改所有,SET 后面改可以改多个)

注意:表中加is_delete bit(1),则数据永远删不掉,表示假删除

4.注意事项:

大小写不敏感:建议MySQL语法建议大写
语句结束符:分号; \G 表示不同格式
强制数据类型:数据定下来以后最好别再改动,可能导致数据丢失
反引号:如果使用MySQL保留字来做名字,则使用` `括起来

5.表关系:
略(视频 )

6.联表:(优先联表,默认内连接)

SELECT * FROM (b_name1 JOIN b_name2); #类似于直角坐标系交叉点(不懂补视频)
6.1 内连接:
SELECT * FROM b_name1 JOIN b_name2 ON b_name1=b_name2; (筛选型联表)
SELECT teachers.name AS t
SELECT * FROM departmentname, departments.name AS dname FROM teachers INNER(INNER可加可不加) JOIN departments;

6.2 左连接:

s LEFT JOIN teachers ON departments.id=teachers.department_id;(保留左边内容)

6.3 右连接:
SELECT * FROM departments RIGHT JOIN teachers ON departments.id=teachers.department_id;(保留右边内容)

7.外键约束:(作用:避免出现脏数据)

7.1 表a约束表b,a中有的b中才能插入,没有的则不能插入:
CREATE TABLE a(ca INT, PRIMARY KEY(ca));
CREATE TABLE b(cb INT, FOREIGN KEY(cb) REFERENCES a(ca));

7.2 通过外键保证三大关系(一对多,多对多,一对一):
一对多:让多的一端加上外键;(外键一定要关联到唯一或主键上)
多对多:需要构建一个中间表,并为中间表分别加上两个外键(分别指向两张表);(具体补视频)
一对一:随便一端使用加上外键,再使用唯一键限制。

8.增加列、删除列:

ALTER TABLE tb_name ADD COLUMN co_name co_definition [FIRST|AFTER];
ALTER TABLE tb_name DROP COLUMN co_name;
如:
ALTER TABLE b_name ADD COLUMN age int(11) DEFAULT 1;

9.重命名:

ALTER TABLE tb_name RENAME COLUMN old_name TO new_name; (*)

10.修改(只能修改列选项) :

ALTER TABLE tb_name MODIFY co_name co_definition;

11.改变(必须要同时修改名字和选项):

ALTER TABLE tb_name CHANGE old_name new_name co_definition;

12.改表名:

RENAME TABLE old_name TO new_name;

13.修改库名(没有的!) 折中的办法:将当前库里的所有表移动到另一个库里,然后再删除当前库:

RENAME TABLE old_db.tb_name TO new_db.tb_name;
(ALTER TABLE old_tbname RENAME new_tbname;)不推荐使用,不能使用这个命令移动库,没有RENAME强大

14.交换表名:

RENAME TABLE one_name TO m_name, tow_name TO one_name, m_name TO tow_name;(借用中间变量修改交换表名)

15.增加主键、删除主键:

ALTER TABLE tb_name ADD PRIMARY KEY (co);
ALTER TABLE tb_name DROP PRIMARY KEY;

16. 在mysql里面,唯一键其实被叫做有唯一约束的索引,添加索引和删除索引

ALTER TABLE tb_name ADD INDEX (co);--普通键
ALTER TABLE tb_name DROP INDEX idx_name; -- 也可以用来删除唯一键
ALTER TABLE tb_name ADD UNIQUE KEY (co);--唯一键

17.添加和删除外键

ALTER TABLE teachers ADD FOREIGN KEY (department_id) REFERENCES departments(id);(简单版,默认自动添加新的外键名)
ALTER TABLE teachers ADD CONSTANT cs_name FOREIGN KEY (department_id) REFERENCES departments(id);(复杂版,可以自定义外建键名)
ALTER TABLE teachers DROP FOREIGN KEY cs_name;

18.pymysql(第三方库):

导入:
from pymysql import connect

db_config = {
'host':'127.0.0.1', --默认是127.0.0.1
'user':'admin',
'password':'Root110qwe',
'db':'myku',
'charset':'utf8' --不能使用utf-8
}
连接:
conn = connect(**db_config)

操作:
try:
with conn.cursor() as cursor:
sql = "INSERT INTO myku(id,name,sex,phone) VALUES (%s, %s, %s)"
cursor.execute(sql,(3,'tyf','boy','12354')) /(cursor.executemany(sql,[(,),(,),....])
res = cursor.fetchall()(只是临时的)/conn.commit()(提交,可以修改表内的数据)

print(res)

提示-------------------------------
  如果是查询 就 cursor.fetchall()
  如果是修改 就 conn.commit()

MySQL- 简单操作命令及教程的更多相关文章

  1. Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程

    Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程 看了好多人的博客,有的不全 or 有问题,整理了一下,适合小白 新手先整理几个小问题 1.为啥使用 Linux 搭建服务器? ...

  2. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  3. perl 引用(数组和hash引用) --- perlreftut - Mark 的一个简单的'引用'教程 ---Understand References Today. --Mark Jason Dominus, Plover Systems (mjd-perl-ref+@plover.com)

    https://blog.csdn.net/fangwei1235/article/details/8570886 首页 博客 学院 下载 论坛 APP 问答 商城 活动 VIP会员 招聘 ITeye ...

  4. [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例)

    [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例) 踏雁寻花 发表于 2015-8-23 23:31:28 https://www.itsk.com/thread-35 ...

  5. python(pymysql)之mysql简单操作

    一.mysql简单介绍 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库 ...

  6. Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(二)

    然后是项目下的文件:完整的项目请看  上一篇 Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(一) 项目下的springmvc-servlet.xml配置文件: ...

  7. MySQL基础操作命令

    MySQL基础操作命令 1. 查看MySQL进程 ps -ef|grep mysql |grep -v grep 2. 查看MySQL端口 ss -lnt | grep 3306 3. MySQL的启 ...

  8. Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程

    这篇文章主要介绍了Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程,需要的朋友可以参考下 准备篇 一.环境说明: 操作系统:Windows Server 201 ...

  9. JAVA使用jdbc连接MYSQL简单示例

    以下展示的为JAVA使用jdbc连接MYSQL简单示例: import java.sql.DriverManager; import java.sql.ResultSet; import java.s ...

  10. aix Mysql安装 Oracle官方教程

    http://dev.mysql.com/doc/refman/5.1/en/aix-installation.html   (aix Mysql安装 Oracle官方教程)

随机推荐

  1. 【spring实战第五版遇到的坑】第14章spring.cloud.config.uri和token配置项无效

    本文使用的Spring Boot版本为:2.1.4.RELEASE Spring Cloud版本为:Greenwich.SR1 按照书上的做法,在application.yml中配置配置服务器的地址和 ...

  2. Flex很难?一文就足够了

    Flexible Box 是什么   布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实 ...

  3. SqlServer中的系统数据库

    SqlServer中的系统数据库有五个,平时写代码不太关注,今天一时兴起研究了一下. 1. master 记录SQL Server系统的所有系统级信息,例如:登陆账户信息.链接服务器和系统配置设置.记 ...

  4. 关于项目中ajax 操作 原生项目遇到的问题

    单选框动态赋值 $('input[name=pszt][value='+val+']').attr("checked",true); 置顶的几种方式 window.scrollTo ...

  5. 关于单元测试的思考--Asp.Net Core单元测试最佳实践

    在我们码字过程中,单元测试是必不可少的.但在从业过程中,很多开发者却对单元测试望而却步.有些时候并不是不想写,而是常常会碰到下面这些问题,让开发者放下了码字的脚步: 这个类初始数据太麻烦,你看:new ...

  6. .NetCore WebApi——Swagger简单配置

    在前后端分离的大环境下,API接口文档成为了前后端交流的一个重点.Swagger让开发人员摆脱了写接口文档的痛苦. 官方网址:https://swagger.io/ 在.Net Core WebApi ...

  7. 将Python 程序打包成 .exe格式入门

    PyInstaller PyInstaller 是一个十分有用的第三方库,可以用来打包 python 应用程序,打包完的程序就可以在没有安装 Python 解释器的机器上运行了. 它能够在 Windo ...

  8. CMake安装grpc生成gRPCTargets.cmake文件

    以下是安装语句: cd grpc_folder git submodule update --init cmake .. make -j 4 sudo make install 然而编写依赖gRPC的 ...

  9. Linux知识要点大全(第一章)

    第一章   Linux操作系统简介 主要内容: 1:Linux的发展历史               2:开源软件               3:Linux系统结构与特性               ...

  10. ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 主要用于color整型.rgb数组.16进制互相转换(-12590395 <--> #3FE2C5 <--> ...