数据库

数据库

1. 查询(select)

条件:

  • 不等于:< > 或 !=

格式:

select 字段1,字段2,...from 表名 where 条件1 连接符 条件2;
例:展示所有的查询结果
SELECT * FROM gy_student_chenjl;

2. 模糊查询 (like)

只对字符串类型的字段进行模糊查询:varchar,char

  • 通配符:

%  代表0-n个任意字符
_   代表1个任意字符

格式:

SELECT * FROM 表名 WHERE 字段名 LIKE '%目标字符%';
例:查询姓名中包含冬字的学生信息
SELECT * FROM customer WHERE name LIKE '%冬%';

3. 非 (not)

例: 查询姓名中不包含冬的学生信息
SELECT * FROM customer WHERE customer_name NOT LIKE '%冬%';

4. in

格式:

  • 单个字段

select * from 表名 where 字段名 in (值1,值2,...);
例: 查询学生id 是77 88 99 111
SELECT * FROM customer WHERE customer_id IN (77,88,111);

  • 多个字段

select * from 表名 where (字段1,字段2...) in ((值1,值2,...),(值1,值2,...)...);
例: 查询年龄不为23且省份不是重庆或者年龄不为29且省份不是安徽的所有学生信息;
SELECT * FROM customer WHERE (age,province) NOT IN ((23,'重庆'),(29,'安徽'));

5. 排序(order by)

规则:

  • 升序:asc
  • 降序:desc

格式:

  • 单字段排序
    select * from 表名 order by 排序字段 排序规则;
    例: 查询出所有学生的信息并对年龄字段进行升序排序
    SELECT * FROM customer ORDER BY age ASC;
  • 多字段排序
    select * from 表名 order by 排序字段1 排序规则,排序字段2 排序规则...;
    例: 查询出年龄大于19岁的所有学生并以年龄进行降序排序,如果有年龄相同的,以序号升序排序
    SELECT * FROM customer WHERE age > 19 ORDER BY age DESC,customer_id ASC;

6. 返回记录(limit)

注意:

  • limit只适用于MySQL中
  • Oracle数据库中用rownum
  • SQLsever数据库中用top

格式:

select * from 表名 limit n,m;
ps:n表示起始位置
       m表示展现m条数据
       数据库中查询结果是以0为起始序号
例: 查询出年龄大于19岁的所有学生并以序号进行降序排序取前10条记录
SELECT * FROM customer WHERE age > 19 ORDER BY customer_id DESC LIMIT 0,10;

7. 去重(distinct)

格式:

select distinct 字段名 from 表名;

例: 查询出所有学生的年龄并去重
SELECT DISTINCT age FROM customer;

8. 分组(group by)

聚合函数:

  • 统计:count()
  • 求和:sum()
  • 平均:avg()
  • 最大:max()
  • 最小:min()

格式:

select 分组字段,统计函数 from 表名 group by 分组字段;
例: 统计出男生和女生的人数
SELECT sex,COUNT(sex) FROM customer GROUP BY sex;

9. 过滤(having)

ps:对聚合函数过滤需要使用having
       普通过滤用where

格式

select 分组字段,聚合函数 from 表名 group by 分组字段 having 过滤条件;
例: 统计出选修人数少于2人的课程
SELECT cno,COUNT() FROM scores GROUP BY cno HAVING COUNT() < 2;

10. 增

  • 插一行
    insert into 表名 (字段1,字段2,...) value (值1,值2,...);
    例: 新增一个学生,学生信息 小张,生日 2018-01-01,性别女
    INSERT INTO Student (id,name,birth,sex) VALUE ('22','小张','2018-01-01','女');
  • 插1-n行
    insert into 表名 (字段1,字段2,...) values (值1,值2,...),(值1,值2,...);
    例: 新增两个学生,学生信息 小张,生日 2018-01-01,性别女,小明,生日 2018-01-02,性别男
    INSERT INTO Student (id,name,birth,sex) VALUE ('22','小张','2018-01-01','女'),('23','小张','2018-01-02','男');
  • 扩展:
    ①把数据从一张表备份到另一张表中
    insert into 目标表 select * from 数据源 where 条件
    ps:两张表的结构必须完全相同
    例:将score_112表备份到score_111表中
    INSERT INTO score_111 SELECT * FROM score_112 WHERE s_id = '01';
    insert into 目标表 (字段名1,字段名2,...) select (字段1,z字段2) from 数据源 where 条件
    ps:不限制表结构
    ②建表:create table
    ③建数据库:create database
    (db:数据库       dba(administrator):数据库管理员)

11. 删

ps: delete from 表名 清空整张表 但是结构还在

  • delete from 表名 where 条件
    例: 删除学号为110的学生信息
    DELETE FROM student WHERE sno = '110';
  • 连表删除(不能使用表别名)
    delete 要删除的表名1,表名2 from 表名1,表名2 where 多表连接 and 条件
    例: 请删除Betty的记录
    DELETE Student,Achievement FROM Student JOIN Achievement ON Student.ID = Achievement.ID WHERE Student.Name = 'Betty';
  • 扩展:
    ①清表:delete from 表名(只清除表数据,不清除表结构)
                  truncate table 表名(表全部清空)
    ②删表:drop table
    ③删库:drop database

12. 改

格式:

  • update 表名 set 字段名1 = 字段值1,字段名2 = 字段值2 where 条件
    例:将学号为110的性别改为男
    UPDATE student SET ssex = '男' WHERE sno ='110';
  • 扩展:
    改表结构:alter

13. 备份

  • 备份到临时表:
    ①条件不成立(where 1 = 2),则只备份表结构
    create table 临时表名 as select * from 源表名 where 1 = 2;
    ②条件成立(where 1 = 1),则备份所有表数据
    create table 临时表名 as select * from 源表名 where 1 = 1;
  • 备份成SQL脚本,右击表-->导出/备份-->SQL
  • 备份成CSV文件

14. 多表关联

  • 嵌套
    select * from 表名 where 字段名 = (select 字段名 from 表名 where 条件)
    例:查询 比王芳操作系统成绩高的所有学生
    SELECT DISTINCT a.sname FROM student a,score c WHERE a.sno = c.sno AND c.degree > (SELECT c.degree FROM student a,course b,score c WHERE a.sno = c.sno AND b.cno = c.cno AND a.sname = '王芳' AND b.cname = '操作系统');

  • where 关联(笛卡尔乘积)
    select * from 表1 别名a,表2 别名b,表3 别名c where a.字段名 = b.字段名 and b.字段名 = c.字段名 连接符(and/or) 条件

  • 内连接(join on 或 inner join on)
    select * from 表1 别名a join 表2 别名b on a.字段名 = b.字段名 join 表3 别名c on b.字段名 = c.字段 where 条件
    例: 查询成绩>85分的学生的姓名
    select a.Name from Student a join Achievement b on a.ID = b.ID where b.Mark > 85;

  • 左连接(left join)
    select * from 表1 别名a left join 表2 别名b on a.字段 = b.字段 where 条件

  • 右连接(right join)
    select * from 表1 别名a right join 表2 别名b on a.字段 = b.字段 where 条件

  • 全连接(full join)
    select * from 表1 别名a full join 表2 别名b on a.字段 = b.字段 where 条件

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

推荐阅读更多精彩内容