MYSQL语法与例题.docx

上传人:b****1 文档编号:2034905 上传时间:2023-05-02 格式:DOCX 页数:10 大小:82.90KB
下载 相关 举报
MYSQL语法与例题.docx_第1页
第1页 / 共10页
MYSQL语法与例题.docx_第2页
第2页 / 共10页
MYSQL语法与例题.docx_第3页
第3页 / 共10页
MYSQL语法与例题.docx_第4页
第4页 / 共10页
MYSQL语法与例题.docx_第5页
第5页 / 共10页
MYSQL语法与例题.docx_第6页
第6页 / 共10页
MYSQL语法与例题.docx_第7页
第7页 / 共10页
MYSQL语法与例题.docx_第8页
第8页 / 共10页
MYSQL语法与例题.docx_第9页
第9页 / 共10页
MYSQL语法与例题.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MYSQL语法与例题.docx

《MYSQL语法与例题.docx》由会员分享,可在线阅读,更多相关《MYSQL语法与例题.docx(10页珍藏版)》请在冰点文库上搜索。

MYSQL语法与例题.docx

MYSQL语法与例题

一、DQL:

数据查询语言,针对单表的查询

查询表中所有学生的信息。

select*fromSTUDENT;

查询表中所有学生的姓名和对应的英语成绩。

selectNAME,ENGLISHfromSTUDENT;

显示英语成绩,过滤表中重复数据

selectdistinctENGLISHfromSTUDENT;

在所有学生数学分数上加10分特长分。

selectNAME,MATH+10fromSTUDENT;

统计每个学生的总分。

selectNAME,MATH+CHINESE+ENGLISHfromSTUDENT;

使用别名表示学生分数。

selectNAMEas姓名,MATH+CHINESE+ENGLISH总分fromSTUDENT;

查询姓名为wu的学生成绩

select*fromSTUDENTwhereNAME='陈冠希';

查询英语成绩大于90分的同学

select*fromSTUDENTwhereENGLISH>90;

查询总分大于200分的所有同学

select*fromSTUDENTwhere(MATH+CHINESE+ENGLISH)>200;

查询英语分数在80-90之间的同学。

selectNAME,ENGLISHfromSTUDENTwhereENGLISHbetween80and90;

查询数学分数为89,90,91的同学。

selectNAME,MATHfromSTUDENTwhereMATHin(89,90,91);

查询所有姓李的学生成绩。

selectNAME,MATHfromSTUDENTwhereNAMElike'李%';

查询数学分>80,语文分>80的同学。

selectNAME,MATH,CHINESEfromSTUDENTwhereMATH>80andCHINESE>80;

注意:

notandor优先级依次降低。

一元运算符比二元的要高。

对数学成绩排序后输出。

selectNAME,MATHfromSTUDENTorderbyMATH;

对总分排序后输出,然后再按从高到低的顺序输出

selectNAME,MATH+CHINESE+ENGLISH总分fromSTUDENTorderby总分desc;

对姓李的学生语文成绩排序输出

selectNAME,CHINESEfromSTUDENTwhereNAMElike'李%'orderbyCHINESE;

注意:

订单,order。

创建表时要注意不要和关键字冲突。

解决办法:

1、把用户定义的内容用反引号引起来。

`(Esc按键的下方)

2、数据库命名习惯:

表名ORDERS(建议)

二、完整性约束

数据完整性是为了保证插入到数据中的数据是正确的,它防止了用户可能的输入错误。

2.1实体(记录)完整性

规定表的一行(即每一条记录)在表中是唯一的实体(Entity)。

实体完整性通过表的主键来实现。

主键:

不能为null;唯一

创建一个表格T1,并声明一个主键

写法一:

(只能指定一个字段作为主键)

createtableT1(

IDintprimarykey,

NAMEvarchar(100)

);

写法二:

(指定联合主键)

createtableT2(

IDint,

NAMEvarchar(100),

primarykey(ID)

);

写法三:

(创建没有任何约束的表格,最后修改约束)建议

createtableT3(

IDint,

NAMEvarchar(100)

);

altertableT3addprimarykey(ID);

注意:

逻辑主键(建议):

除了唯一标识一条记录外,没有别的意义。

一般取名ID

业务主键:

还有一定的业务意义。

MySQL:

createtableT4(

IDintprimarykeyauto_increment,#自动增长,不建议使用。

数据库迁移不方便,并不是所有的数据库都支持自动增长,比如Oracle就不支持。

NAMEvarchar(100)

);

2.2域(字段)完整性

指数据库表的列(即字段)必须符合某种特定的数据类型或约束

1、约束数据的类型:

强类型

2、非空约束:

notnull

3、唯一约束:

unique

createtableT5(

IDintprimarykeyauto_increment,

USERNAMEvarchar(100)notnullunique,

PHONE_NUMvarchar(11)unique,

GENDERvarchar(10)notnull

);

2.3参照完整性(多表的设计):

定义外键

注意:

类和表结构的关系;对象和记录的关系(帮助学习ORM:

Hibernate、MyBatis)

ORM:

ObjectRelationMapping(Java面向对象DB关系型数据库映射)

第一:

(非常多)一对多

createtableCUSTOMERS(

IDintprimarykey,

NAMEvarchar(100),

ADDRESSvarchar(100)

);

createtableORDERS(

IDintprimarykey,

ORDER_NUMvarchar(100),

AMOUNTfloat(10,2),

CUSTOMER_IDint,

constraintCUSTOMER_ID_FKforeignkey(CUSTOMER_ID)referencesCUSTOMERS(id)

);

注意:

表结构:

Java类定义

表中的记录:

Java对象

表间的关系:

Java对象间的关系

第二:

多对多(比较常见)

createtableTEACHERS(

IDintprimarykey,

NAMEvarchar(100),

SALARYfloat(10,2)

);

createtableSTUDENTS(

IDintprimarykey,

NAMEvarchar(100),

GRADEchar

(1)

);

createtableTEACHERS_STUDENTS(

T_IDint,

S_IDint,

primarykey(T_ID,S_ID),

constraintT_ID_FKforeignkey(T_ID)referencesTEACHERS(id),

constraintS_ID_FKforeignkey(S_ID)referencesSTUDENTS(id)

);

第三种:

一对一(很少用到。

实际开发根本不用)

数据库设计:

ERWin

三、多表的查询(面试)

1、连接查询(面试几率很大)

a、交叉连接:

(crossjoin)

返回多表的记录的笛卡尔积。

(第一张表:

5 第二章表:

7,返回5*7=35)

select*fromCUSTOMER,ORDERS;

selectc.ID,c.NAME,o.ORDER_NUMBER,o.pricefromCUSTOMERc,ORDERSo;

b、内连接(innerjoin)

隐式内连接:

select*fromCUSTOMERc,ORDERSowherec.ID=o.CUSTOMER_id;

显式内连接:

select*fromCUSTOMERcinnerjoinORDERSoonc.Id=o.CUSTOMER_id;

c、外连接(outerjoin)

查看所有客户信息,同时有订单的显示订单的详细信息。

左外:

返回满足连接条件的记录,同时返回左表中剩余的其他记录。

select*fromCUSTOMERcleftouterjoinORDERSoonc.ID=o.CUSTOMER_ID;

查看所有订单信息,同时返回下单的客户信息

右外:

返回满足连接条件的记录,同时返回右表中剩余的其他记录。

select*fromCUSTOMERcrightouterjoinORDERSoonc.ID=o.CUSTOMER_ID;

2、子查询

又称之为嵌套查询。

查询中有查询。

执行顺序:

先执行子查询(内查询),再执行外查询。

子查询:

必须放在小括号之内。

查询陈冠希的所有订单信息。

形式一:

多条查询语句

selectIDfromCUSTOMERwhereNAME='陈冠希';

select*fromORDERSwhereCUSTOMER_ID=1;

形式二:

subselect(子查询)

select*fromORDERSwhereCUSTOMER_ID=(selectIDfromCUSTOMERwhereNAME='陈冠希');

查询订单价格大于100的有哪些客户

select*fromCUSTOMERwhereIDin(selectCUSTOMER_IDfromORDERSwherePRICE>100);

3、MySQL常用的函数

SUM():

求和

COUNT():

计数

AVG():

求平均

MAX():

求最大

MIN():

求最小

统计一个班级共有多少学生?

selectcount(*)fromSTUDENT;

统计数学成绩大于90的学生有多少个?

selectcount(*)fromSTUDENTwhereMATH>=90;

统计总分大于250的人数有多少?

where可以使用表达式

selectcount(*)fromSTUDENTwhere(ENGLISH+CHINESE+MATH)>250;

统计一个班级数学总成绩?

selectsum(MATH)fromSTUDENT;

统计一个班级语文、英语、数学各科的总成绩

selectsum(CHINESE),sum(ENGLISH),sum(MATH)fromSTUDENT;

统计一个班级语文、英语、数学的成绩总和

selectsum(ENGLISH+CHINESE+MATH)fromSTUDENT;

统计一个班级语文成绩平均分

继续阅读

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2