MySQL基础

来源:互联网 发布:网络推广平均工资 编辑:程序博客网 时间:2024/06/09 23:06

8.4学习心得

1. 数据库基础知识

  • 创建数据库语句:create database 数据库名称;

  • 查看已经存在的数据库:show databases;

创建和查看数据库命令行示例

  • 修改数据库的编码:alter database 数据库名称 default character set 编码方式;

修改数据库编码为jbk

  • 删除数据库:drop database 数据库名称;

删除数据库示例

  • 数据类型

整数类型

小数类型

日期与时间类型

字符串和二进制类型

  • 创建数据表:

Create table 表名
( 字段名1 数据类型 [完整性约束条件],
字段名2 数据类型 [完整性约束条件],
字段名n 数据类型 [完整性约束条件], );

  • 查看数据表:show tables;

创建和查看数据表示例

  • 查看创建表时的定义语句和表的字符编码:Show create table 表名;

查看表的定义语句和字符编码示例

  • 查看表细节:Describe 表名;或者简写为 desc 表名;

单词含义

查看表细节示例

  • 修改数据表

修改数据表1

修改数据表2

修改数据表3

修改数据表示例

  • 表的约束:主键约束(Primary key)、非空约束(Not null)、唯一约束(unique)、默认约束(Default)、外键约束(Foreign key)。

表的约束

  • 表的自增:Auto_increment(AUTO_INCREMENT=n 定义初始值)

  • 添加数据:Insert into 表名(字段名1,字段名2,….)values(值1,值2,……);

添加数据示例

  • 更新数据:Update 表名 set 字段名1=值1[,字段名2=值2,…] [where 条件表达式]

更新数据示例

  • 删除数据:Delete from 表名 [where 条件表达式]

删除数据示例

2. 单表查询(只列出了原来在SQL Server中不熟悉的部分查询方式,总体语法与SQL Server一样 )

  • 实现方式:

Select [distinct] * | {字段名1,字段名2,字段名3,…}
from 表名
[where 条件表达式1]
[group by 字段名 [having 条件表达式2]]
[order by 字段名 [asc | desc]]
[limit [offset] 记录数]

  • in关键字查询

in关键字查询

  • distinct关键字查询

distinct关键字查询

  • or 和 and 查询

注意:and的优先级高于or,因此当两者在一起使用时,应该先运算and两边的条件,再运算or两边的条件。

3. 高级查询(只列出了原来在SQL Server中不熟悉的部分查询方式,总体语法与SQL Server一样 )

  • 聚合函数

(1)count()函数
Count()函数用来统计记录的条数
Select count(*) from 表名

(2)sum()函数
Sum()是求和函数,用于求出表中某个字段所有值的总和
Select sum(字段名) from 表名;

(3)avg()函数
Avg()函数用于求出某个字段所有值的平均值
Select avg(字段名) from 表名

(4)max()函数
Max()函数是求最大值的函数,用于求出某个字段的最大值
Select max(grade) from 表名;

(5)min()函数
Min()函数是求最小值的函数,用于求出某个字段的最小值
Select min(grade) from 表名;

详细函数调用方法:Mysql函数大全

  • limit 限制查询

limit 限制查询

  • 取别名方法

取别名

  • 多表查询

(1)外连接

外连接可分为:左连接、右连接、完全外连接。

左连接:select * from student left join course on student.ID=course.ID;

左连接

右连接:select * from student right join course on student.ID=course.ID;

右连接

完全外连接(MySQL不可用,SQL Server可用):select * from student full join course on student.ID=course.ID;

完全外连接

MySQL可用union,同时实现左右连接,便可达到完全外连接。

(2)内连接(join 或 inner join)

select * from student inner join course on student.ID=course.ID;

(3)交叉连接(用的较少)

select * from student cross join course

交叉连接

(4)两表关系为一对多,多对一或多对多时的连接语句

连接两表查询

作业:

作业

1.查询student表的所有记录

SELECT * FROM student

2.查询student表的第2条到4条记录

SELECT * FROM student LIMIT 1,3

3.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息

SELECT id,`name`,department FROM student

4.student表中查询计算机系和英语系的学生的信息

SELECT * FROM student WHERE department = '英语系' OR department = '计算机系'

5.从student表中查询年龄27~30岁的学生信息

SELECT * FROM student WHERE birth BETWEEN (YEAR(NOW()) - 30) AND    (YEAR(NOW()) - 27)

6.从student表中查询每个院系有多少人

SELECT department,count(*) FROM student GROUP BY department

7.从score表中查询每个科目的最高分

SELECT c_name,MAX(grade) FROM score GROUP BY c_name

8.查询李四的考试科目(c_name)和考试成绩(grade)

SELECT `name`,c_name,grade FROM student,score WHERE student.id=stu_id AND `name`='李四'

9.用连接的方式查询所有学生的信息和考试信息

SELECT student.*,c_name,grade FROM student LEFT JOIN score on   student.id=stu_id

10.计算每个学生的总成绩

SELECT `name`,SUM(grade) FROM student LEFT JOIN score ON student.id=stu_id GROUP BY `name`

11.计算每个考试科目的平均成绩

SELECT c_name,AVG(grade) FROM student LEFT JOIN score ON student.id=stu_id GROUP BY c_name

12.查询计算机成绩低于95的学生信息

SELECT student.* FROM student  WHERE  student.id in (SELECT stu_id from score WHERE c_name = '计算机' AND  grade < 95)

13.将计算机考试成绩按从高到低进行排序

SELECT grade from score WHERE c_name = '计算机' ORDER BY grade DESC

14.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

SELECT `name`,department,c_name,grade FROM student,score WHERE `name`   LIKE '张%' OR `name` LIKE '王%' AND student.id=stu_id
原创粉丝点击