1、90;查询总分大于200分的所有同学select * from STUDENT where (MATH+CHINESE+ENGLISH)200;查询英语分数在 8090之间的同学。select NAME,ENGLISH from STUDENT where ENGLISH between 80 and 90;查询数学分数为89,90,91的同学。select NAME,MATH from STUDENT where MATH in (89,90,91);查询所有姓李的学生成绩。select NAME,MATH from STUDENT where NAME like 李%查询数学分80,语文分
2、80的同学。select NAME,MATH,CHINESE from STUDENT where MATH80 and CHINESE80;注意:not and or 优先级依次降低。一元运算符比二元的要高。对数学成绩排序后输出。select NAME,MATH from STUDENT order by MATH;对总分排序后输出,然后再按从高到低的顺序输出select NAME,MATH+CHINESE+ENGLISH 总分 from STUDENT order by 总分 desc;对姓李的学生语文成绩排序输出select NAME,CHINESE from STUDENT where
3、 NAME like order by CHINESE;订单,order。创建表时要注意不要和关键字冲突。解决办法:1、把用户定义的内容用反引号引起来。(Esc按键的下方)2、数据库命名习惯:表名ORDERS (建议)二、完整性约束数据完整性是为了保证插入到数据中的数据是正确的,它防止了用户可能的输入错误。2.1实体(记录)完整性规定表的一行(即每一条记录)在表中是唯一的实体(Entity)。实体完整性通过表的主键来实现。主键:不能为null;唯一创建一个表格T1,并声明一个主键写法一:(只能指定一个字段作为主键)create table T1(ID int primary key,NAME
4、varchar(100);写法二:(指定联合主键)create table T2(ID int,NAME varchar(100),primary key(ID)写法三:(创建没有任何约束的表格,最后修改约束)建议create table T3(alter table T3 add primary key(ID);逻辑主键(建议):除了唯一标识一条记录外,没有别的意义。一般取名ID业务主键:还有一定的业务意义。MySQL:create table T4(ID int primary key auto_increment,#自动增长,不建议使用。数据库迁移不方便,并不是所有的数据库都支持自动增长
5、,比如Oracle就不支持。2.2域(字段)完整性指数据库表的列(即字段)必须符合某种特定的数据类型或约束1、约束数据的类型:强类型2、非空约束:not null3、唯一约束:uniquecreate table T5(ID int primary key auto_increment,USERNAME varchar(100) not null unique,PHONE_NUM varchar(11) unique,GENDER varchar(10) not null2.3参照完整性(多表的设计):定义外键类和表结构的关系;对象和记录的关系(帮助学习ORM:Hibernate、MyBati
6、s)ORM:Object Relation Mapping(Java面向对象 DB关系型数据库 映射)第一:(非常多)一对多create table CUSTOMERS(ADDRESS varchar(100)create table ORDERS(ORDER_NUM varchar(100),AMOUNT float(10,2),CUSTOMER_ID int,constraint CUSTOMER_ID_FK foreign key (CUSTOMER_ID) references CUSTOMERS(id)表结构:Java类定义表中的记录:Java对象表间的关系:Java对象间的关系第二
7、:多对多(比较常见)create table TEACHERS(SALARY float(10,2)create table STUDENTS(GRADE char(1)create table TEACHERS_STUDENTS(T_ID int,S_ID int,primary key(T_ID,S_ID),constraint T_ID_FK foreign key (T_ID) references TEACHERS(id),constraint S_ID_FK foreign key (S_ID) references STUDENTS(id)第三种:一对一(很少用到。实际开发根本不
8、用)数据库设计:ERWin三、多表的查询(面试)1、连接查询(面试几率很大)a、交叉连接:(cross join)返回多表的记录的笛卡尔积。(第一张表:5 第二章表:7,返回5*7=35)select * from CUSTOMER,ORDERS;select c.ID,c.NAME,o.ORDER_NUMBER,o.price from CUSTOMER c,ORDERS o;b、内连接(inner join)隐式内连接:select * from CUSTOMER c,ORDERS o where c.ID=o.CUSTOMER_id; 显式内连接:select * from CUSTOM
9、ER c inner join ORDERS o on c.Id=o.CUSTOMER_id;c、外连接(outer join)查看所有客户信息,同时有订单的显示订单的详细信息。左外:返回满足连接条件的记录,同时返回左表中剩余的其他记录。select * from CUSTOMER c left outer join ORDERS o on c.ID=o.CUSTOMER_ID;查看所有订单信息,同时返回下单的客户信息右外:返回满足连接条件的记录,同时返回右表中剩余的其他记录。select * from CUSTOMER c right outer join ORDERS o on c.ID=
10、o.CUSTOMER_ID;2、子查询又称之为嵌套查询。查询中有查询。执行顺序:先执行子查询(内查询),再执行外查询。子查询:必须放在小括号之内。查询陈冠希的所有订单信息。形式一:多条查询语句select ID from CUSTOMER where NAME=select * from ORDERS where CUSTOMER_ID=1;形式二:subselect(子查询)select * from ORDERS where CUSTOMER_ID=(select ID from CUSTOMER where NAME=查询订单价格大于100的有哪些客户select * from CUST
11、OMER where ID in (select CUSTOMER_ID from ORDERS where PRICE100);3、MySQL常用的函数SUM():求和COUNT():计数AVG():求平均MAX():求最大MIN():求最小统计一个班级共有多少学生?select count(*) from STUDENT;统计数学成绩大于90的学生有多少个?select count(*) from STUDENT where MATH=90;统计总分大于250的人数有多少?where可以使用表达式select count(*) from STUDENT where (ENGLISH+CHINESE+MATH)250;统计一个班级数学总成绩?select sum(MATH) from STUDENT;统计一个班级语文、英语、数学各科的总成绩select sum(CHINESE),sum(ENGLISH),sum(MATH) from STUDENT;统计一个班级语文、英语、数学的成绩总和select sum(ENGLISH+CHINESE+MATH) from STUDENT;统计一个班级语文成绩平均分继续阅读
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2