常用常考sql语句总结

1 表级操作

CRUD:增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)

C新建

--新建学生表
create table Student (
name Int Not Null UNIQUE AUTO_INCREMENT Primary key,
Name varchar(20) not null,
age int null,
gender varchar(4) null ); 
--插入不存在的数据
insert into student (name,age,gender) value ('andy',30,'女');
--插入查询的数据
insert into student (name,age,gender) value (select name,age,gender from student where id>10);

D删除

--删除学生表
drop table Student
--删除数据项
delete from student where id<10;

U更新

--新增phone列
alter Table Student add (phone varchar(15) null);
--删除phone列
alter table student Drop colum phone;
--修改phone列
alter table student modify phone carchar(13) not null;
--变更字段scor是旧字段名,score是新字段名
alter table studnet change scor score int not null;
--更新
update student set age = age+1 where id>10 and id<=20;

R查询

语法

SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]… 
FROM <表名或视图名>[,<表名或视图名>]… 
[WHERE <条件表达式>] 
[GROUP BY <列名> [HAVING <条件表达式>]] 
[ORDER BY <列名> [ASC|DESC]…]

举例

select * from student where id>10
group by age having avg(age)>20
order by id desc;
--查询指定列
select name,age from student where id>10;
select sum(age) from student;
--只显示结果不同的项
select distinct age from student;
--使用算数表达式
select name,sal*13 as sal_all from emp;
--使用like,in运算符号
--%匹配一个或多个字符,_匹配一个字符
select * from emp where name like 'S_T%' or age >50;
select * from emp where job in ('clerk','analyst');
--为空或非空
select * from emp where sal is null;--is not null;
--排序
select * from emp order by deptno asc,sal desc;
SELECT MAX(sal),MIN(age),AVG(sal),SUM(sal) from emp;
select * from emp where sal = (select max(sal) from emp);
--group by 和having
--group by 用来对查询结果进行分组统计
--having 用来限制分组显示结果
SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno;
SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)<2000;

多表查询

select e.name,e.sal,d.dname from emp e,dept d where e.deptno = d.deptno order by d.deptno;
--自连接
SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno;
--嵌套查询
SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');
--any(比任何一个都) 和all(比所有都) 
SELECT ename,sal,deptno FROM emp WHERE sal> ANY (SELECT sal FROM emp WHERE deptno=30);
--SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MIN(sal) FROM emp WHERE deptno=30);
--多列子查询
SELECT * FROM emp where (job,deptno) = (select job,deptno from emp where name = 'Bob');
--更新数据
UPDATE emp SET(job, sal, comm)=(SELECT job, sal, comm FROM emp where ename='SMITH') WHERE ename='SCOTT';
-- 外连接(outer join):如果数据不存在,也会出现在连接结果中。 
-- 左外连接 left join 如果数据不存在,左表记录会出现,而右表为null填充 
-- 右外连接 right join 如果数据不存在,右表记录会出现,而左表为null填充
SELECT er.ename, ee.ename mgr_name from emp er left join emp ee where er.mgr=ee.empno;
--聚合函数
--求和
sum(age)
--平均值
avg(age);
--计数
count(age);
--最大 、 最小值
max(),min();

2 MySql语句(后期再补充)

--连接数据库
mysql -h127.0.0.1 -uroot -p123456
--查看数据库
show database;
--使用数据库
use XXX;
--查看表结构
desc XXX;

3 数据库索引

定义

聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。就像字段,聚集索引是连续的,a后面肯定是b,非聚集索引就不连续了,就像图书馆的某个作者的书,有可能在第1个货架上和第10个货架上。还有一个小知识点就是:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

举例

  • 图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某作者的,不知道书名怎么办?图书管理员在写一个目录,某某作者的书分别在第几排,第几排,这就是一个非聚集索引

  • 字典的例子:字典前面的目录,可以按照拼音和部首去查询,我们想查询一个字,只需要根据拼音或者部首去查询,就可以快速的定位到这个汉字了,这个就是索引的好处,拼音查询法就是聚集索引,部首查询就是一个非聚集索引.

作用
索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需的数据。当进行数据检索时,系统先搜索索引,从中找到数据的指针,再直接通过指针从表中取数据!
优点:查询快
缺点:
1)占用存储空间
2)在表中执行insert、delete、update操作时,将有额外的操作来维护索引
3)过多的索引起反作用
注意:
1)如果给表中某字段加了 主键约束 或是 唯一约束 ,这时会自动帮你 建立对应这个字段的 唯一索引
2)索引不要轻易的建立
使用

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> 
ON <表名>(<列名>[<次序>][,<列名>[<次序>]]…);
create unique index index_sid on Student (id des);
-- 建立学生表索引:多个字段Id、Name索引倒序
CREATE UNIQUE INDEX INDEX_SId_SName ON Student (Id DESC,Name DESC);
--删除索引
drop index index_sid;

4 视图

定义

就是一张虚拟表,视图就是一个子查询!实际当中的数据依然存在实际的表里面,只不过取的时候是根据这个视图(也就是这个子查询)从实际当中的表里面取出来.
优点:简化查询
缺点:你建视图建多了,如果这表结构突然改了,那么你视图也要跟着改!增加了你维护的支出!所以建的view越多,维护起来越麻烦.

除了简化查询以外,视图还有其他功能:
比如你有一张表,里面有很多数据,这些数据有些是你想给别人看,但是有些是秘密不想给人看,那么你就可以建立视图,然后把视图的权限给他,这样就保护了自己的私有数据。

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

推荐阅读更多精彩内容