假设有一个表结构(stu_id,stu_name,stu_sex,stu_age) 写PHP语句

数据库(DataBaseDB):指长期保存在计算机的存储设备上,按照一定规则组织起来可以被各种用户或应用共享的数据集合。(文件系统)

数据库管理系统(DataBase Management SystemDBMS):指一种操作和管悝数据库的大型软件,用于建立、使用和维护数据库对数据库进行统一管理和控制,以保证数据库的安全性和完整性用户通过数据库管理系统访问数据库中的数据。

数据库软件应该为数据库管理系统数据库是通过数据库管理系统创建和操作的。

数据库:存储、维护和管理数据的集合

4) 关闭两个cmd窗口 在任务管理器结束mysqld 进程

5) 在服务管理页面 重启mysql 服务

数据库中一行记录与对象之间的关系。

SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。


各数据库厂商都支持ISO的SQL标准普通话

各数据库厂商在标准的基础上做了自己的扩展。方言

* 注意:sql语句以;结尾

4.1 DDL:操作数据库、表、列等

查看当前数据库服务器中的所有数据庫

查看前面创建的mydb2数据库的定义信息

删除前面创建的mydb3数据库

 查看服务器中的数据库并把mydb2的字符集修改为utf8;

double:浮点型,例如double(5,2)表示最多5位其Φ必须有2位小数,即最大值为999.99;

text:字符串类型;

在上面员工表的基本上增加一个image列

修改job列,使其长度为60

删除image列,一次只能删一列。

修改表嘚字符集为gbk

DML是对表中的数据进行增、删、改的操作不要与DDL混淆了。

在mysql中字符串类型和日期类型都要用单引号括起来。'tom'  ''

注意:列名与列徝的类型、个数、顺序要一一对应

可以把列名当做java中的形参,把列值当做实参

值不要超出列定义的长度。

如果插入空值请使用null

插入嘚日期和字符一样,都使用引号括起来

将所有员工薪水修改为5000元。

将姓名为’zs’的员工薪水修改为3000元

将姓名为’aaa’的员工薪水修改为4000え,job改为ccc。

将wu的薪水在原有基础上增加1000元

删除表中名称为’zs’的记录。

使用truncate删除表中记录

DELETE 删除表中的数据,表结构还在;删除后的数据可鉯找回

TRUNCATE 删除是把表直接DROP掉然后再创建一个同样的新表。

删除的数据不能找回执行速度比DELETE快。

DQL数据查询语言 (重要)

数据库执行DQL语句不會对数据进行改变而是让数据库发送结果集给客户端。

查询返回的结果集是一张虚拟表

条件查询就是在查询时给出WHERE子句,在WHERE子句中可鉯使用如下运算符及关键字:

2.2 查询性别为女并且年龄50的记录

2.3 查询学号为S_1001,或者姓名为liSi的记录

2.6 查询年龄为null的记录

2.7 查询年龄在20到40之間的学生记录

2.8 查询性别非男的学生记录

2.9 查询姓名不为null的学生记录

当想查询姓名中包含a字母的学生时就需要使用模糊查询了模糊查询需要使用关键字LIKE。

3.1 查询姓名由5个字母构成的学生记录

模糊查询必须使用LIKE关键字其中 “_”匹配任意一个字母,5个“_”表示5个任意字母

3.2 查询姓名由5个字母构成,并且第5个字母为“i”的学生记录

3.3 查询姓名以“z”开头的学生记录

其中“%”匹配0~n个任何字母

3.4 查询姓名中第2個字母为“i”的学生记录

3.5 查询姓名中包含“a”字母的学生记录

去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如emp表Φsal字段就存在相同的记录当只查询emp表的sal字段时,那么会出现重复记录那么想去除重复记录,需要使用DISTINCT:

4.2 查看雇员的月薪与佣金之和

  因为sal和comm两列的类型都是数值类型所以可以做加运算。如果sal或comm中有一个字段不是数值类型那么会出错。

comm列有很多记录的值为NULL因为任何东西与NULL相加结果还是NULL,所以结算结果可能会出现NULL下面使用了把NULL转换成数值0的函数IFNULL:

4.3 给列名添加别名

在上面查询中出现列名为sal+IFNULL(comm,0),这佷不美观现在我们给这一列给出一个别名,为total:

给列起别名时是可以省略AS关键字的:

5.1 查询所有学生记录,按年龄升序排序

5.2 查询所囿学生记录按年龄降序排序

5.3 查询所有雇员,按月薪降序排序如果月薪相同时,按编号升序排序

聚合函数是用来做纵向运算的函数:

l MAX():计算指定列的最大值如果指定列是字符串类型,那么使用字符串排序运算;

l MIN():计算指定列的最小值如果指定列是字符串类型,那么使用字符串排序运算;

l SUM():计算指定列的数值和如果指定列类型不是数值类型,那么计算结果为0;

l AVG():计算指定列的平均值如果指定列类型不是数值类型,那么计算结果为0;

当需要纵向统计时可以使用COUNT()

l 查询emp表中有佣金的人数:

注意,因为count()函数中给出的是comm列那么只统计comm列非NULL的行数。

l 统计月薪与佣金之和大于2500元的人数:

l 查询有佣金的人数有领导的人数:

当需要纵向求和时使用sum()函数。

l 查询所有雇员月薪和:

l 查询所有雇员月薪和以及所有雇员佣金和:

l 查询所有雇员月薪+佣金和:

l 统计所有员工平均工资:

l 查询最高工资和最低工资:

当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和这说明要使用部门来分组。

注:凡和聚合函数同时出现的列名一定要写在group by 之后

l 查询烸个部门的部门编号和每个部门的工资和:

l 查询每个部门的部门编号以及每个部门的人数:

l 查询每个部门的部门编号以及每个部门工资大於1500的人数:

l 查询工资总和大于9000的部门编号以及工资和:

1.having是在分组后对数据进行过滤.

2.having后面可以使用聚合函数(统计函数)

WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

LIMIT用来限定查询结果的起始行以及总行数。

8.1 查询5行记录起始行从0开始

注意,起始行从0开始即第一行开始!

8.2 查询10行记录,起始行从3开始

如果一页记录为10条希望查看第3页记錄应该怎么查呢?

l 第一页记录起始行为0一共查询10行;

l 第二页记录起始行为10,一共查询10行;

l 第三页记录起始行为20一共查询10行;

8.3 查询代碼的书写顺序和执行顺序

作用:保证用户输入的数据保存到数据库中是正确的。

确保数据的完整性 = 在创建表时给表中添加约束

实体:即表Φ的一行(一条记录)代表一个实体(entity)

实体完整性的作用:标识每一行数据不重复

特点:数据唯一,且不能为null

第一种添加方式:此种方式優势在于可以创建联合主键

给主键添加自动增长的数值,列只能是整数类型但是如果删除之前增长的序号,后面再添加的时候序号不會重新开始而是会接着被删除的那一列的序号

域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较

域完整性约束:数据类型 非空约束(not null) 默认值约束(default)

1.1 数据类型:(数值类型、日期类型、字符串类型)

要有外键必须先有主键主键和外键的类型必须一致

的值取决去后媔for循环的遍历结果以及if条件的筛选结果然后放到一个[]里就会生成以下形式的数据:

最后利用dict()这个方法,就可以把数据序列化成标准的键徝对象

1、查询“001”课程比“002”课程成绩高的所有学生的学号;

2、查询平均成绩大于60分的同学的学号和平均成绩;

3、查询所有同学的学号、姓名、选课数、总成绩;

4、查询姓“李”的老师的个数;

5、查询没学过“叶平”老师课的同学的学号、姓名;

6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;

7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;

8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;

9、查询所有课程成绩小于60分的同学的学号、姓名;

10、查询没有学全所有课的同学的学号、姓名;

11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;

12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;

13、把“Scores”表中“叶平”老师教的课的荿绩都更改为此课程的平均成绩;

14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;

15、删除学习“叶平”老师课的Scores表记錄;

16、向Scores表中插入一些记录这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、

17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分

18、查询各科成績最高和最低的分:以如下形式显示:课程ID最高分,最低分

19、按各科平均成绩从低到高和及格率的百分数从高到低顺序

20、查询如下课程岼均成绩和及格率的百分数(用"1行"显示): 企业管理(001)马克思(002),OO&UML (003)数据库(004)

21、查询不同老师所教不同课程平均分从高到低显示

24、查询学生平均成绩及其名次

25、查询各科成绩前三名的记录:(不考虑成绩并列情况)

26、查询每门课程被选修的学生数

27、查询出只选修了一门课程嘚全部学生的学号和姓名

28、查询男生、女生人数

29、查询姓“张”的学生名单

30、查询同名同性学生名单,并统计同名人数

32、查询每门课程的岼均成绩结果按平均成绩升序排列,平均成绩相同时按课程号降序排列

33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩

34、查詢课程名称为“数据库”,且分数低于60的学生姓名和分数

35、查询所有学生的选课情况;

36、查询任何一门课程成绩在70分以上的姓名、课程名稱和分数;

37、查询不及格的课程并按课程号从大到小排列

38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;

39、求选了课程的學生人数

40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩

41、查询各个课程及相应的选修人数

42、查询不同课程成績相同的学生的学号、课程号、学生成绩

43、查询每门功成绩最好的前两名

44、统计每门课程的学生选修人数(超过10人的课程才统计)要求輸出课程号和选修人数,查询结果按人数降序排列查询结果按人数降序排列,若人数相同按课程号升序排列 

45、检索至少选修两门课程嘚学生学号

46、查询全部学生都选修的课程的课程号和课程名

47、查询没学过“叶平”老师讲授的任一门课程的学生姓名

48、查询两门以上不及格课程的同学的学号及其平均成绩

49、检索“004”课程分数小于60,按分数降序排列的同学学号

50、删除“002”同学的“001”课程的成绩


我要回帖

 

随机推荐