MySQL数据库基本操作(上)


史上最简单的 MySQL 教程>>>
MySQL运行机制原理&架构>>>
触发器
视图(上)
视图(下)
数据备份与还原(上)
数据备份与还原(中)
数据备份与还原(下)
MYSQL常用基本SQL语句总结
Python 操作 MySQL 之 pysql 与 ORM(转载)


一. MySQL简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

二. MySQL的安装与启动

1 . 安装

  • 服务端:
    sudo apt install mysql-server
  • 客户端:
    sudo apt install mysql-client

2 .启动

  • mysql -uroot -p (设置的用户密码)
  • 查看端口号
    nestat -antp | grep 3306
  • 查看MySQL进程
    ps aux | grep mysql 或 ps -ef | grep mysql

3.设置和修改密码和允许远程访问设置

mysql设置连接配置.png

4. 解决中午字符集乱码问题及重装MySQL的过程

mysql乱码问题及重装.png

二. 数据库的基本操作

1. 数据库的创建与打开

show databases 查看所有的数据库
create database 库名 [charset=utf8] 创建数据库
drop databases 库名 删除数据库
use 库名 打开数据库
show tables 查看当前数据库中所有的表
desc 表名 查看表结构

2. 表的管理

1). 表的创建
  • 格式:
    create table 表名(字段名1 类型(数据长度) [约束][comment "列注释"],字段名2.....) comment "表注释"
  • 常用数据类型

varcahr :可变字符类型
int : 整数值,默认长度11位,也可以使用integer, long
flot :小数类型,float(长度,小数位), double
data :日期类型.timestamp (日期时间)
text :多文本类型
enum('F','M') :多文本类型
注意:
varchar和char 的区别:
varchar 长度不固定,最多能存放 65532 个字符。VARCHAR 的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,532字节.
char 的长度是固定,最多能存放的字符个数 255,和编码无关。
从编码的效率和占用内存的情况来看,char长度是固定的比较省时间,但有些字节并用不了那些空间,比较浪费空间,varchar长度可变,可以就具体长度决定所占空间,节省空间,但每次计算比较耗时,所有具体情况具体对待.

2). 表的修改
  • 修改表名
    alter table 表名 rename 型表名
  • 添加列
    alter table 表名 add 列名 类型(数据长度)[约束]
  • 列重命名
    alter table 表名 change 旧的列名 新的列名 类型(数据长度) [约束]
  • 修改列
    alter table 表名 modify 列名 类型(数据长度) [约束]
  • 删除列
    alter table 表名 drop[column] 列名
3). 删除表
  • drop table 表名
4). 查看创建表的sql语句
  • show create table 表名

3. 基本SQL语句

1). insert插入语句
  • 格式1:给某一列添加
    insert into 表名(列名1,列名2) values(值1,值2)
  • 格式2:给所有列添加
    insert into 表名 values(值1,值2,值3,...)
  • 格式3:批量插入
    insert into 表名 values(值1,值2,值3), (值1,值2,值3),...
2). select 查询语句

基本查询语句

  • 查询所有的
    select * from 表名;
  • 查看指定的列
    select 列1,列2 from 表名
  • 查看表中有多少条数据
    select count(*) from 表名;
  • 按条件查询
    select * from 表名 [where 条件]

条件查询(where)

  • 常用的操作符
    > , <, =, !=,>=, <=
  • between
    between 起始值 and 结束值
    select * from student where score between 85 and 95;
  • 模糊匹配查询
    like % 任意多个字符
       _ 任意一个字符
    模糊查询的SQL语法:
    select 字段列表 from 表名称 where 字段名 like 匹配条件
    • 示例
      查询名字中带有"刚"的工人
      select * from worker where name like '%刚%';
      查询名字中第二个字是"刚"的工人
      select * from worker where name like "_刚%";
      查询user表中已t开头的用户的名字
      select * from user where name like "t%";
  • 范围查询
    in()
    查询order表中价格在100到200之间的订单记录
    select * from order where price in(100,200);
3). update更新语句

update 表名 set 字段名=字段值 [where 条件]

4). delete删除语句
  • 清空整个表的数据
    delete from 表名
  • 删除指定的行
    delete from 表名 [where 条件]

4. 排序, 分组, 链接, 限制, 分页

1) 排序查询 order by

格式:
select 字段1,字段2 from 表名 order by [desc](降序) [asc](升序)
示例:

按照成绩从高到低,将学生排序
select * from student order by score desc;
按照成绩从高到低,将学生排序,如果成绩相等则再按照年龄降序排序
select * from student order by score desc,age desc;

2) 分组查询 group by

格式:
select name, count(*) from 表名 group by name.
示例:

按照商品类型type对product表中的记录进行分组,求出每一组的平均价格
select type as 类型,avg(price) as 平均价格 from product group by type;
按照商品类型type对product表中的记录进行分组,求出零食组的平均价格
select type as 类型,avg(price) as 平均价格 from product group by type having type='零食';

3). JOIN链接

join链接操作链接的表越多,那么函数嵌套的层数也会越多,算法复杂度就会呈指数增长。同时,join操作分为三种:①等值链接,INNER JOIN,其中INNER可以省略;②左外连接,LEFT JOIN;③右外连接,RIGHT JOIN。

  • 等价连接
    select 字段列表 from 表A, 表B, ... where 连接条件 [where 条件];
    示例

    (1). 使用“等值连接”查询学生姓名、学生成绩、学校名称。
    select student.name,student.score,school.schoolname fromschool,studentwherestudent.school_id=school.schoolid;
    (2). 使用“等值连接”查询出“张红”的学生姓名、学生成绩、学校名称。
    select student.name,student.score,school.schoolname from school,student where student.school_id=school.schoolid
    and student.name='张红';
    (3). 查看哪些用户购买了产品,那么最好的显示就是用户信息+该用户所对应的消费信息,那么我们可以这么描述为:
    select * from user u join order o on u.user_id = o.user_id;

  • 内连接:
    select 字段1, 字段2 from 表A, 表B, ... where 连接条件 [where 条件];
    示例:

(1). 使用“内连接”查询学生姓名、学生成绩、学校名称。
select student.name,student.score,school.schoolname from school inner join student on student.school_id=school.schoolid;
(2). 使用“内连接”查询出“张红”的学生姓名、学生成绩、学校名称。
select student.name,student.score,school.schoolname from school inner join student on student.school_id=school.schoolid
and student.name='张红';

  • 外链接
    1). 左外连接
    select 字段列表 from 表A left join 表B on 连接条件 [where 条件];
    注意:左外连接的查询结果不但包括了符合连接条件的查询记录,而且还包括了左表中不符合连接条件的记录。
    示例

    先插入一条学校记录,再使用“左外连接”查询学生姓名、学生成绩、学校名称,
    要求显示所有学校的记录。
    insert into school(schoolname,note)values('东北师范',null);
    select student.name,student.score,school.schoolname from school left join student on student.school_id=school.schoolid;

    2). 右外连接
    select 字段列表 from 表A right join 表B on 连接条件 [where 条件];
    注意:右外连接的查询结果不但包括了符合连接条件的查询记录,而且还包括了右表中不符合连接条件的记录。

    select deptname,deptno.name from staff right join deptno on deptno.name=staff.name;

4). 限制查询
  • 限定条数
    select 字段列表 from 表名称 [where 条件] limit 最多记录数;
    示例:

    查询学生表中的前三条记录
    select * from student limit 3;

  • 从指定偏移量查询限定条数
    select 字段列表 from 表名称 [where 条件] limit 偏移量,最多记录数;
    示例:

查询成绩大于等于70分的学生中,前两条记录
select * from student where score >= 70 limit 2;

5). 分页查询

已知当前页为currentPage,每页最多显示的记录数为pageSize,则currentPage页
显示的表中的记录为:
select 字段列表 from 表名称 [where 条件]
limit (currentPage-1)*pageSize,pageSize;
示例:

假如每页最多显示2条记录,查询第三页应该显示的记录
select * from student limit 4,2;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容