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. 自定义超链接动画---transition

    效果图: <a href="#"> <span>HTML</span> </a> a { position: relative; t ...

  2. 基于Vue2-Calendar改进的日历组件(含中文使用说明)

    一,前言 我是刚学Vue的菜鸟,在使用过程中需要用到日历控件,由于项目中原来是用jQuery写的,因此用了bootstarp的日历控件,但是配合Vue实在有点蛋疼,不够优雅…… 于是网上搜了好久找到了 ...

  3. 阿里云RDS for SQL Server测试吐槽

    最近测试了一下阿里云RDS for SQL Server,有些设计简直就是反人类,让人不得不吐槽一番. 1:控制台创建数据库时,数据库名不能包含大小字母. 如上截图所示,数据库名称不能包含大写字母,好 ...

  4. 关于windows系统无法更新的解决方法

    操作系统无法更新解决方案! 1.检查网络连接是否正常: 2.检查控制面板设置,windows更新是否开启: 3.检查计算机-管理-服务和应用程序-服务组件里的windows update是否开启: 4 ...

  5. 多线程总结之旅(1):线程VS进程

    一.进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,也就是应用程序的执行实例,进程是系统进行资源分配和调度的一个独立单位.每个进程是由私有的虚拟地址空间.代码.数据和其它各种系统资 ...

  6. pgsql sql 统计整理

    字符字段转整型查询: SELECT mon_id as staTime,SUM (CAST ( index_value AS INT )) AS totalCount FROM aidata.rep_ ...

  7. LOJ #6060. 「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set

    有趣的思博套路题,想到了基本上加上个对线性基的理解就可以过了 首先考虑到这个把数分成两半的分别异或的过程不会改变某一位上\(1\)的总个数 因此我们求出所有数的\(\operatorname{xor} ...

  8. Spring的历史及哲学

    Spring的历史和哲学 1.Spring 历史 时间回到2002年,当时正是 Java EE 和 EJB 大行其道的时候,很多知名公司都是采用此技术方案进行项目开发.这时候有一个美国的小伙子认为 E ...

  9. Python爬虫11-XML与XPath概述及lxml库的应用

    GitHub代码练习地址:用lxml解析HTML,文件读取,etree和XPath的配合使用:https://github.com/Neo-ML/PythonPractice/blob/master/ ...

  10. 使用 Moq 测试.NET Core 应用 -- 其它

    第一篇文章, 关于Mock的概念介绍: https://www.cnblogs.com/cgzl/p/9294431.html 第二篇文章, 关于方法Mock的介绍: https://www.cnbl ...