mysql 教学方法总结_MySQL教程之MySQL知识总结

1.MySQL数据库

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,从而增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中

小型网站的开发都选择 MySQL 作为网站数据库,搭配 PHP 和 Apache 可组成良好的开发环境。

2.MySQL存储方式

一台数据库服务器中会创建很多数据库,在数据库中会创建很多张表,在表中会有很多记录。

3.SQL结构化查询语言

SQL是高级的非过程化编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚

本文件的扩展名,可以嵌套,具有极大的灵活性和强大的功能。

4.SQL语言的分类

(1)DDL(数据定义语言)

(2)DML(数据操作语言)

(3)DCL(数据控制语言)

(4)DQL(数据查询语言)

5.MySQL数据库的创建、修改和删除

(1)创建数据库

语法: create database 数据库名称[character set 字符集 collate 字符集校对规则](一般忽略);

(2)查看数据库

查看所有数据库:

语法: show databases;

查看某个数据库:

语法: show create database 数据库名称;

(3)修改数据库:

语法:alter database 数据库名称[character set 字符集 collate 字符集校对规则](一般忽略);

(4)删除数据库:

语法:drop database 数据库名称;

(5)使用或者切换数据库:

语法:use 数据库名称;

6.MySQL表的创建、修改和删除

(1)创建表

语法:create table 表名(

数据名称 数据类型(长度) 约束,

.......

);

注:括号内的语句用逗号进行多次创建,最后的语句不加任何标点符号

数据类型:(MySQL所对应的Java类型)

Java中的类型                        MySQL中的类型

byte/short/int/long             tinyint/smallint/int/bigint

float                            float

double                            ouble

boolean                            bit

char/String                        char和varchar类型

char和varchar的区别:

char代表是固定长度的字符或字符串。

定义类型char(8),向这个字段存入字符串hello,那么数据库使用三个空格将其补全。

varchar代表的是可变长度的字符串。

定义类型varchar(8), 向这个字段存入字符串hello,那么存入到数据库的就是hello。

Date                            date/time/datetime/timestamp

datetime和timestamp区别

datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用null存入

到数据库中

timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的

系统时间存入到数据库中。

File                            BLOB/TEXT

约束:

约束作用:保证数据的完整性

单表约束:

主键约束:primary key (主键约束默认就是唯一 非空的)

唯一约束:unique

非空约束:not null

(2)查看表

查看一个数据库下的所有的表:

语法:show tables;

查看单独一个表:

语法:desc 表名;

(3)删除表

语法:drop table 表名;

(4)修改表

增添列:

语法: alter table 表名 add 列名 数据类型(长度) 约束;

修改列类型,长度和约束:

语法: alter table 表名 modify 列名 数据类型(长度) 约束;

删除列:

语法: alter table 表名 drop 列名;

修改列名称:

语法: alter table 表名 change 旧列名 新列名 数据类型(长度) 约束;

修改表名:

语法: rename table 表名 to 新的表名;

修改表的字符集:

语法: alter table 表名 character set 字符集;

7.MySQL数据的增删改查

(1)添加表记录

向表中插入某些列:

语法: insert into 表名 (列名1,列名2,列名3…) values (值1,值2,值3…);

向表中插入所有列:

语法: insert into 表名 values (值1,值2,值3…);

注意:

1.值的类型与数据库中表列的类型一致;

2.值的顺序与数据库中表列的顺序一致;

3.值的最大长度不能超过列设置最大长度;

4.值的类型是字符串或者是日期类型,使用单引号引起来。

(2)修改表记录

语法: update 表名 set 列名=值,列名=值 [where 条件];

注意:

1.值的类型与列的类型一致;

2.值的最大长度不能超过列设置的最大长度;

3.字符串类型和日期类型添加单引号。

(3)删除表记录

语法: delete from 表名 [where 条件];(或者truncat from 表名;)

注意:

1.删除表的记录,指的是删除表中的一行记录;

2.删除如果没有条件,默认是删除表中的所有记录。

(4)查看表记录

语法: select  *(或者列名) from 表 [条件];

8.MySQL解决向数据库中插入中文记录会出现错误

解决方法:

需要将MySQL数据库服务器中的客户端部分的字符集改为gbk,找到MySQL的安装路径:my.ini文件,修改文件中[client]下的字符集,将

[default-charaacter-set=ISO-8895-1]改成[default-charaacter-set=gbk],然后再重新启动MySQL的服务器。

9.按不同方式查看表记录

(1)按条件查询:

使用where 字句

> ,< ,<= , >= , <> *不等 , =

like:模糊查询 , in:范围 查询 ,  条件关联:and or not

查询李四信息: select * from 表名 where 列名[name = 李四] = '李四';

查询李四信息并且英语大于90: select * from 表名 where 列名[name = 李四] ='李四' and 列名[Englist]>90;

在lik可以使用: _ , %  _只能带表一个字符 %带表多个字符  * %王% 带表中间包含着个字就行

查询姓李的学生信息: select * from 表名 where name like '%李%'

查询英语成绩是69,75,89的学生: select * form 表名 where 列名[english] in (69 , 75 , 89);

(2)查询排序:

使用order by 字段名称 asc/desc; *默认是用asc , 倒序desc;

查询学生信息按成绩排: selech * from order by 列名[english];

查询学生成绩按倒序: selech * from order by 列名[english] desc;

查询学生按语文成绩倒序再按英语升序排列: select * from order by  列名[chinese] desc, 列名[english] asc;

查询姓李的学生,英语按倒序排列: select * from 表名 where 列名[name] like '李%' order by 列名[english] desc;

(3)分组统计查询:

聚合函数:

sum(); 获得总数: count();*个数;  最大值:max() 最小值:min() 平均值:avg;

获得所有成绩的和: select sum(exam)from 表名;

count();

获得所有的计数: select count(*) from 表名;

max()/min();

获得某门考试的最大和最小成绩: select max(math) from 表名;/select min(math) from 表名;

avg()

获得平均数:select avg(chinese) from 表名;

分组查询

语法:使用group by 字段名称;

按商品名称统计,每类商品所花费的总金额:select product,sum(price) from orderitem group by product;

注意:

where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字HAVING;

例:select product,sum(price) from orderitem  group by product having sum(price) > 5000 order by sum(price) asc;

10.单表查询的执行顺序流程

select ... from ... where ...  group by ... having ...order by ...;

11.多表查询

表与表之间的关系-外键

作用:保证多张表之间的数据如果有关联,则关联的数据的完整性。

设计与建表原则

一对多:将外键设置在多的一方,指向一的主键

多对多:必须有第三张表,这张表中最少会有两个字段作为外键,指向多对多的两张表的主键

一对一:唯一外键约束

主键对应:

实质就是建立外键并且让这个外键唯一。

查询:

准备环境:多表分析创建

连接查询:关联条件就是外键

内连接:交集, select * from 表1, 表2 where 条件

左外连接:左表的数据和交集数据

select * from 表1 left join 表2 on 条件

右外连接:右表的数据和交集数据

select * from 表1 right join 表2 on 条件

子查询

12.分页查询

select * from 表名 limit begin, length  :begin 从0开始,表示索引;length:表示查询多少条记录

select * from 表名 limit number; 从第一条数据开始,总共查询number条数据。

13.MySQL常见bug

select * from 表名 where score = '80abc' 实质就是:SELECT * FROM stu where score = 80, 会将不能转化为数值的字符舍弃

select * from 表名 where NAME = 'abC' :MySQL查询的时候不区分大小写

解决方法:

select * from stu where BINARY NAME = 'Abc'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值