MySQL基本操作

SQL语句:结构化查询语言

  • DDL: 数据定义语言, 定义数据库对象:库、表、列、表结构
  • DML: 数据操作语言, 定义数据库记录,增、删、改 表记录
  • DQL: 数据查询语言, 查询记录
  • DCL: 数据控制语言, 定义访问权限和控制安全级别

1. DDL

1.1 数据库

SHOW DATABASES: 查看所有数据库
USE 数据库名:切换到某数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET=UTF8]
DROP DATABASE [IF EXISTS] 数据库名

1.2 表

SHOW TABLES: 查看数据库下所有表
DESC 表名:查看表结构
CREATE TABLE [IF NOT EXISTS] 表名 (列名 列类型, 列名 列类型, ......);
DROP TABLE  表名
* 修改表:前缀 ALTER TABLE 表名, alter table 表名 add|change|drop 列名 类型;
1. 添加列: ADD (列名 列类型, 列名 列类型, ......)
2. 删除列: DROP 列名
3. 修改列类型: MODIFY 列名 列类型
4. 修改列名: CHANGE 原列名 新列名 列类型
5. 修改表名: RENAME TO 新表名

2. DML

2.1 插入数据

INSERT INTO 表名

2.2 修改数据

UPDATE 表名 SET ... [where ...]

2.3 删除数据

DELETE FROM 表名 [where ...]

3. DQL

  • 基本查询
  • 条件控制
  • 聚合
  • 分组
  • 排序
  • 分页

3.1 基本查询

select * from 表名 [where ...]
select 列名1[,  列名2, ...] from 表名  [where ...]
select distinct * from 表名 [where ...] : 去重
select 列名 * 1.5 from 表名 [where ...]: 字符串被当做0
select 列名1 + 列名2 from 表名 [where ...]: NULL与任何运算都为NULL

3.2 条件控制

3.2.1 比较运算符
  • 等于: =
  • 大于: >
  • 大于等于: >=
  • 小于: <
  • 小于等于: <=
  • 不等于: !=或<>
select * from students where id > 3; 
select * from subjects where id <= 4;
select * from students where sname != '黄蓉';
select * from students where isdelete = 0;
3.2.2 逻辑运算符
  • and
  • or
  • not
select * from students where id>3 and gender=0;
select * from students where id<4 or isdelete=0;
3.2.3 模糊查询
  • like: 关键字
  • % 表示可以匹配任意多个任意字符,0,1或多个
  • _ 表示可以匹配一个任意字符,1个
select * from students where sname like '黄%'; 查询姓黄的学生
select * from students where sname like '黄_'; 查询姓黄并且名字是一个字的学生
select * from students where sname like '黄%' or sname like '%靖%'; 查询姓黄或叫靖的学生
3.2.4 范围查询
  • in 表示在一个非连续的范围内
  • between ... and ...表示在一个连续的范围内
select * from students where id in(1,3,8); 查询编号是1或3或8的学生
select * from students where id between 3 and 8; 查询学生是3至8的学生
select * from students where id between 3 and 8 and gender=1; 查询学生是3至8的男生
3.2.5 空判断
  • null与' '是不同的
  • 判空 is null
  • 判非空 is not null
select * from students where hometown is null;查询没有填写地址的学生
select * from students where hometown is not null; 查询填写了地址的学生
select * from students where hometown is not null and gender=0; 查询填写了地址的女生
3.2.6 优先级
  • 小括号,not,比较运算符,逻辑运算符
  • and比or先运算,如果同时出现并希望先算or,需要结合()使用

3.3 聚合

  • count(*) 计算总行数
  • max(列)
  • min(列)
  • sum(列)
  • avg(列)
select count(*) from students;查询学生总数
select max(id) from students where gender=0;查询女生的编号最大值
select min(id) from students where isdelete=0;查询未删除的学生最小编号
select sum(id) from students where gender=1;查询男生的编号之和
select avg(id) from students where isdelete=0 and gender=0;查询未删除女生的编号平均值

3.4 分组

  • group by 列1,列2,列3...
  • having 分组后的数据筛选
  • having后面的条件运算符与where的相同

按照字段分组,表示此字段相同的数据会被放到一个组中
分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中
可以对分组后的数据进行统计,做聚合运算

select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
select gender as 性别, count(*) from students group by gender; 查询男女生总数
select hometown as 家乡,count(*) from students group by hometown;查询各城市人数
select 列1,列2,聚合... from 表名 group by 列1,列2,列3... having 列1,...聚合...
1. select count(*) from students where gender=1; 查询男生总人数
2. select gender as 性别,count(*) from students group by gender having gender=1;

对比where与having:
where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
having是对group by的结果进行筛选

3.6 排序

  • order by
  • desc | asc

将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推
默认按照列值从小到大排列
asc从小到大排列,即升序
desc从大到小排序,即降序

select * from 表名 order by 列1 asc|desc, 列2 asc|desc,...
select * from students where gender=1 and isdelete=0 order by id desc;查询未删除男生学生信息,按学号降序
select * from subject where isdelete=0 order by stitle;查询未删除科目信息,按名称升序

3.7 分页

  • limit start,count
  • 从start开始,获取count条数据
  • start索引从0开始
    当数据量过大时,在一页中查看数据是一件非常麻烦的事情

已知:每页显示m条数据,当前显示第n页, 求总页数:
查询总条数p1
使用p1除以m得到p2
如果整除则p2为总数页
如果不整除则p2+1为总页数
求第n页的数据

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

推荐阅读更多精彩内容