數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)

1. 查詢(xún)(select)

條件:

  • 不等于:< > 或 !=

格式:

select 字段1,字段2,...from 表名 where 條件1 連接符 條件2;
例:展示所有的查詢(xún)結(jié)果
SELECT * FROM gy_student_chenjl;

2. 模糊查詢(xún) (like)

只對(duì)字符串類(lèi)型的字段進(jìn)行模糊查詢(xún):varchar,char

  • 通配符:

%? 代表0-n個(gè)任意字符
_ ??代表1個(gè)任意字符

格式:

SELECT * FROM 表名 WHERE 字段名 LIKE '%目標(biāo)字符%';
例:查詢(xún)姓名中包含冬字的學(xué)生信息
SELECT * FROM customer WHERE name LIKE '%冬%';

3. 非 (not)

例: 查詢(xún)姓名中不包含冬的學(xué)生信息
SELECT * FROM customer WHERE customer_name NOT LIKE '%冬%';

4. in

格式:

  • 單個(gè)字段

select * from 表名 where 字段名 in (值1,值2,...);
例: 查詢(xún)學(xué)生id 是77 88 99 111
SELECT * FROM customer WHERE customer_id IN (77,88,111);

  • 多個(gè)字段

select * from 表名 where (字段1,字段2...) in ((值1,值2,...),(值1,值2,...)...);
例: 查詢(xún)年齡不為23且省份不是重慶或者年齡不為29且省份不是安徽的所有學(xué)生信息;
SELECT * FROM customer WHERE (age,province) NOT IN ((23,'重慶'),(29,'安徽'));

5. 排序(order by)

規(guī)則:

  • 升序:asc
  • 降序:desc

格式:

  • 單字段排序
    select * from 表名 order by 排序字段 排序規(guī)則;
    例: 查詢(xún)出所有學(xué)生的信息并對(duì)年齡字段進(jìn)行升序排序
    SELECT * FROM customer ORDER BY age ASC;
  • 多字段排序
    select * from 表名 order by 排序字段1 排序規(guī)則,排序字段2 排序規(guī)則...;
    例: 查詢(xún)出年齡大于19歲的所有學(xué)生并以年齡進(jìn)行降序排序,如果有年齡相同的,以序號(hào)升序排序
    SELECT * FROM customer WHERE age > 19 ORDER BY age DESC,customer_id ASC;

6. 返回記錄(limit)

注意:

  • limit只適用于MySQL中
  • Oracle數(shù)據(jù)庫(kù)中用rownum
  • SQLsever數(shù)據(jù)庫(kù)中用top

格式:

select * from 表名 limit n,m;
ps:n表示起始位置
???????m表示展現(xiàn)m條數(shù)據(jù)
???????數(shù)據(jù)庫(kù)中查詢(xún)結(jié)果是以0為起始序號(hào)
例: 查詢(xún)出年齡大于19歲的所有學(xué)生并以序號(hào)進(jìn)行降序排序取前10條記錄
SELECT * FROM customer WHERE age > 19 ORDER BY customer_id DESC LIMIT 0,10;

7. 去重(distinct)

格式:

select distinct 字段名 from 表名;

例: 查詢(xún)出所有學(xué)生的年齡并去重
SELECT DISTINCT age FROM customer;

8. 分組(group by)

聚合函數(shù):

  • 統(tǒng)計(jì):count()
  • 求和:sum()
  • 平均:avg()
  • 最大:max()
  • 最?。簃in()

格式:

select 分組字段,統(tǒng)計(jì)函數(shù) from 表名 group by 分組字段;
例: 統(tǒng)計(jì)出男生和女生的人數(shù)
SELECT sex,COUNT(sex) FROM customer GROUP BY sex;

9. 過(guò)濾(having)

ps:對(duì)聚合函數(shù)過(guò)濾需要使用having
???????普通過(guò)濾用where

格式

select 分組字段,聚合函數(shù) from 表名 group by 分組字段 having 過(guò)濾條件;
例: 統(tǒng)計(jì)出選修人數(shù)少于2人的課程
SELECT cno,COUNT() FROM scores GROUP BY cno HAVING COUNT() < 2;

10. 增

  • 插一行
    insert into 表名 (字段1,字段2,...) value (值1,值2,...);
    例: 新增一個(gè)學(xué)生,學(xué)生信息 小張,生日 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,...);
    例: 新增兩個(gè)學(xué)生,學(xué)生信息 小張,生日 2018-01-01,性別女,小明,生日 2018-01-02,性別男
    INSERT INTO Student (id,name,birth,sex) VALUE ('22','小張','2018-01-01','女'),('23','小張','2018-01-02','男');
  • 擴(kuò)展:
    ①把數(shù)據(jù)從一張表備份到另一張表中
    insert into 目標(biāo)表 select * from 數(shù)據(jù)源 where 條件
    ps:兩張表的結(jié)構(gòu)必須完全相同
    例:將score_112表備份到score_111表中
    INSERT INTO score_111 SELECT * FROM score_112 WHERE s_id = '01';
    insert into 目標(biāo)表 (字段名1,字段名2,...) select (字段1,z字段2) from 數(shù)據(jù)源 where 條件
    ps:不限制表結(jié)構(gòu)
    ②建表:create table
    ③建數(shù)據(jù)庫(kù):create database
    (db:數(shù)據(jù)庫(kù) ????? dba(administrator):數(shù)據(jù)庫(kù)管理員)

11. 刪

ps: delete from 表名 清空整張表 但是結(jié)構(gòu)還在

  • delete from 表名 where 條件
    例: 刪除學(xué)號(hào)為110的學(xué)生信息
    DELETE FROM student WHERE sno = '110';
  • 連表刪除(不能使用表別名)
    delete 要?jiǎng)h除的表名1,表名2 from 表名1,表名2 where 多表連接 and 條件
    例: 請(qǐng)刪除Betty的記錄
    DELETE Student,Achievement FROM Student JOIN Achievement ON Student.ID = Achievement.ID WHERE Student.Name = 'Betty';
  • 擴(kuò)展:
    ①清表:delete from 表名(只清除表數(shù)據(jù),不清除表結(jié)構(gòu))
    ??????????????truncate table 表名(表全部清空)
    ②刪表:drop table
    ③刪庫(kù):drop database

12. 改

格式:

  • update 表名 set 字段名1 = 字段值1,字段名2 = 字段值2 where 條件
    例:將學(xué)號(hào)為110的性別改為男
    UPDATE student SET ssex = '男' WHERE sno ='110';
  • 擴(kuò)展:
    改表結(jié)構(gòu):alter

13. 備份

  • 備份到臨時(shí)表:
    ①條件不成立(where 1 = 2),則只備份表結(jié)構(gòu)
    create table 臨時(shí)表名 as select * from 源表名 where 1 = 2;
    ②條件成立(where 1 = 1),則備份所有表數(shù)據(jù)
    create table 臨時(shí)表名 as select * from 源表名 where 1 = 1;
  • 備份成SQL腳本,右擊表-->導(dǎo)出/備份-->SQL
  • 備份成CSV文件

14. 多表關(guān)聯(lián)

  • 嵌套
    select * from 表名 where 字段名 = (select 字段名 from 表名 where 條件)
    例:查詢(xún) 比王芳操作系統(tǒng)成績(jī)高的所有學(xué)生
    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 = '操作系統(tǒng)');

  • where 關(guān)聯(lián)(笛卡爾乘積)
    select * from 表1 別名a,表2 別名b,表3 別名c where a.字段名 = b.字段名 and b.字段名 = c.字段名 連接符(and/or) 條件

  • 內(nèi)連接(join on 或 inner join on)
    select * from 表1 別名a join 表2 別名b on a.字段名 = b.字段名 join 表3 別名c on b.字段名 = c.字段 where 條件
    例: 查詢(xún)成績(jī)>85分的學(xué)生的姓名
    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 條件

數(shù)據(jù)庫(kù)基礎(chǔ).jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容