MySQL- 简单操作命令及教程
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- 简单操作命令及教程的更多相关文章
- Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程
Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程 看了好多人的博客,有的不全 or 有问题,整理了一下,适合小白 新手先整理几个小问题 1.为啥使用 Linux 搭建服务器? ...
- 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 重点: 实现多级子目录的压缩, ...
- 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 ...
- [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例)
[分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例) 踏雁寻花 发表于 2015-8-23 23:31:28 https://www.itsk.com/thread-35 ...
- python(pymysql)之mysql简单操作
一.mysql简单介绍 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库 ...
- Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(二)
然后是项目下的文件:完整的项目请看 上一篇 Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(一) 项目下的springmvc-servlet.xml配置文件: ...
- MySQL基础操作命令
MySQL基础操作命令 1. 查看MySQL进程 ps -ef|grep mysql |grep -v grep 2. 查看MySQL端口 ss -lnt | grep 3306 3. MySQL的启 ...
- Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
这篇文章主要介绍了Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程,需要的朋友可以参考下 准备篇 一.环境说明: 操作系统:Windows Server 201 ...
- JAVA使用jdbc连接MYSQL简单示例
以下展示的为JAVA使用jdbc连接MYSQL简单示例: import java.sql.DriverManager; import java.sql.ResultSet; import java.s ...
- aix Mysql安装 Oracle官方教程
http://dev.mysql.com/doc/refman/5.1/en/aix-installation.html (aix Mysql安装 Oracle官方教程)
随机推荐
- 纯css折叠区域-基于checkbox
Accordion Accordion即可折叠区域,和<details>标签类似,不过更灵活些.折叠区域往常多用JavaScript实现,这里就纯粹用CSS,就想法上也是异途同归. 折叠区 ...
- Percona XtraBackup 8.0, 安装与测试
Percona XtraBackup 8.0 是Percona XtraBackup新推出了一个针对MySQL8.0的版本,主要是MySQL8.0在Redo 和 数据库字典方面有了新的改进. Xtra ...
- MongDB集群容灾方案步骤
MongoDB复制集优/特点支持大数据量.高扩展性.高性能.灵活数据模型.高可用性.同步机制数据复制的目的是使数据得到最大的可用性,避免单点故障引起的整站不能访问的情况的发生,Mongodb的副本集在 ...
- Windows上搭建远程访问服务
Windows上搭建远程访问服务 转自:https://blog.51cto.com/13871378/2153308?source=dra 概述:允许客户机通过拨号连接或虚拟专用网连接到公司局域网, ...
- bat 实现主机hostname的修改
主机实现hostname的修改原理: 修改注册表中的值: hklm\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName 下的 Comp ...
- CYQ.Data 对于分布式缓存Redis、MemCache高可用的改进及性能测试
背景: 随着.NET Core 在 Linux 下的热动,相信动不动就要分布式或集群的应用的需求,会慢慢火起来. 所以这段时间一直在研究和思考分布式集群的问题,同时也在思考把几个框架的思维相对提升到这 ...
- 6.[leetcode] ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- 爬虫框架之Scrapy(二)
递归解析 糗事百科递归解析 在前面的例子里只是爬取了糗事百科热门的第一个页面,但是当我们需要爬取更多的页面时,需要对每个页面的url依次发起请求,然后通过解析的方法进行作者和标题的解析. 我们可以构建 ...
- 团队选题报告(bull beer)
一.团队成员及分工 团队名称:bull beer 团队成员: 黄文东:选题报告word撰写 沈培:原型设计,博客撰写,ppt制作 邓泽中:住院 刘帅:查找相关资料 二.选题报告内容 项目名称:学费管理 ...
- Elasticsearch倒排索引结构
一切设计都是为了提高搜索的性能 倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引.通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key. 先来回 ...