MySQL

Skye 22 0

1. 数据库的入门

1.1 数据库基础知识

1.1.1 数据库概述

数据库:数据库提供了一个存储空间用来存储各种数据,可以将数据库视为一个存储数据的容器。

数据库管理系统:数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性

数据库应用程序:很多情况下,数据库管理系统无法满足用户对数据库的管理,此时,就需要使用数据库应用程序与数据湖库管理系统进行通信、访问和管理DBMS中存储的数据

1.1.2 数据库存储结构

1.1.3 SQL语言

数据库定义语言DDL:主要用于定义数据库、表等,其中包括create,alter,drop语句,create用于创建数据库,数据表等,alter用于修改表的定义等,drop用于删除数据库,删除表等。

数据库操作语言DML:主要用于对数据库进行添加,修改和删除操作。其中包括insert语句,updata语句,delete语句。insert用于插入数据,updata用于更新数据,delete用于删除数据

数据库查询语句DQL:用于查询数据,也就是指select语句,使用select查询一条或多条数据

数据库控制语言DCL:用于控制用户的访问权限,包括grant,revoke,commit,rollback语句。grant用于给用户增加权限,revoke回收权限,commit用于提交事务,rollback用于回滚事务。

1.1.4 常见的数据库产品

Oracle,SQL server,DB2,MongoDB,MySQL

1.2数据库的安装

1.2.1 linux下

检查是否安装MySQL:rpm -qa | grep mysql

卸载:rpm -e xxxxxx --nodeps

1.2.4 启动MySQL

service mysql start

1.2.5 操作mysql

登陆:mysql -u root -p xxxxxx

1.2.6 查询数据库信息

show database

1.3 MySQL目录结构

bin目录:放置可执行文件

data目录:放置一些日志文件以及数据库

include目录:放置一些头文件,如mysql.mysqld——ername.h

lib目录:放置一系列的库文件

share目录:放置字符集、语言等信息

my.ini:MySQL数据库中使用的配置文件

my-huge.ini:适合超大型数据库的配置文件

my-large.ini:适合大型数据库的配置文件

my-medium.ini:适合中型数据库的配置文件

my-small.ini:适合小型数据库的配置文件

my-template.ini:配置文件的模板,MySQL配置向导将该配置文件中选择项写入到my.ini文件

my-innodb-heavy-4G.ini:表示该配置文件只对于InoDB存储引擎有效,并且服务器的内存不小于4G

1.4 MySQL的使用

1.4.1 启动MySQL服务

1.通过windows服务管理器启动MySQL服务

2.通过DOS命令启动MySQL服务:net start mysql

1.4.2 登陆MySQL数据库

相关命令登陆:mysql -u root -pitcast

1.4.3 MySQL相关命令

命令:

\s:查看数据库信息

\u:切换使用数据库

1.4.4 重新配置MySQL

通过DOS命令配置MySQL

修改MySQL客户端的字符编码集:set character_set_client =gbk

通过my.ini文件配置MySQL

default-character-set=utf8 修改utf8为gbk就行

2. 数据库和表的基本操作

2.1 数据库的基础知识

2.1.1 创建和查看数据库

创建数据库:create database 数据库名称

查看数据库:show database;

查看创建好的数据库:show create database 数据库名称

2.1.2 修改数据库

MySQL数据库安装成功,创建数据库的编码也就确定了,修改其编码,可用alter database 语句实现

alter database 数据库名称 default character set 编码方式 collate编码方式_bin

eg:修改数据库itcast的编码方式为gbk

alter database itcast default character set gbk collate gbk_bin

2.1.3 删除数据库

drop database 数据库名称

2.2 数据类型

2.3 数据表的基本操作

2.3.1 创建数据表

先使用命令use 数据库名称

创建数据表的基本语法:

create table 表名

{

字段1,数据类型,

字段2,数据类型,

字段n,数据类型,

}

2.3.2 查看数据表

show create table查看数据表

show create table 表名;

show create table tg_grade\G

查看tg_grade表的定义信息,\G是为了显示结果整齐美观

describe查看数据表

显示表的字段信息

describe 表名;

简写:desc 表名;

NULL:表示该列是否可以存储NULL值

Key:表示该列是否已经编制索引

Default:表示该列是否有默认值

Extra:表示获取到的与给定列相关的附加信息

2.3.3 修改数据表

修改表名

alter table 旧表名 rename to 新表名;

eg:把表名tg_garde改为grade

alter table tg_grade rename to grade;

修改字段名

alter table 表名 change 旧字段名 新字段名 新数据类型;

alter table grade change name username varchar(20);

修改字段的数据类型

alter table 表名 modify 字段名 数据类型;

添加字段

alter table 表名 add 新字段名 数据类型;

删除字段

drop table 表名;

2.4 表的约束

约束条件 说明
primary key 主键约束,用于唯一标识对应的记录
foreign key 外键约束
not null 非空约束
unique 唯一性约束
default 默认值约束,用于设置字段的默认值

2.4.1 主键约束

在MySQL中为了快速查找表中的某条信息,可以通过设置主键来实现

单字段主键

字段名 数据类型 prinmary key

eg:创建一个数据表grade,设置id为主键

create table grade(

id int primary key,

name varchar(20),

grade float

);

多字段主键

primary key (字段名1,字段名2,....,字段名n)

create table grade(

stu_id int,

course_id int,

grade float,

primary key(stu_id,course_id)

);

定义为primary key得字段不能有重复值且不能为null值

2.4.2 非空约束

非空约束指的是字段的值不能为null,在MySQL中,非空约束通过not null定义。

字段名 数据类型 not null;

2.4.3 唯一约束

字段名 数据类型 unique;

2.4.4 默认约束

默认约束用于给数据表中的字段指定默认值,即当在表中插入一条新纪录时,如果没有默认值,系统自动插入默认值,默认值通过default定义

字段名 数据类型 default 默认值;

2.5 设置表的字段值自动增加

若想插入的表的id唯一,使用auto_increment约束实现

语句

字段名 数据类型 auto_increment;

2.6 索引

数据库操作中,经常需要查找特定的数据,例如,当执行select * from student where id =10000时,MySQL数据库必须从第1条开始遍历,直到找到id=10000,效率很低,为此,MySQL允许建立索引来加快查询和排序。

2.6.1 索引的概念

好比新华字典的音序表,它是对数据库表中一列或多列的值进行排序后的一种结构,作用就是提高查询速度

普通索引

由key或index定义的索引,可以创建在任何数据类型中,其值是否唯一和非空由字段本身的约束条件所决定。例如,在grade表的stu_id字段上建立一个普通索引,查询时,可以根据该索引进行查询

唯一性索引

由unique定义,字段值必须唯一

全文索引

由fulltext定义,它只能创建在char,varchar或text类型的字段上,只有myisam存储引擎支持全文索引

单列索引

在单个字段上创建索引,可以时普通索引,唯一索引或者全文索引,之哟啊保证该索引值对应表中一个字段就可

多列索引

多个字段创建索引,查询中使用第一个字段,索引才会使用

空间索引

由spatial定义,只能创建在空间数据类型的字段上,空间数据类型有四种,分别geometry,point,linestring和polygon,注意,创建空间索引字段时,必须将其声明为not null,并且空间索引只能在存储引擎为myisam的表中创建

2.6.2 创建索引

create xxx index 索引名称 on 表(字段名);

alter table 表名 add 索引类型 索引名(字段);

2.6.3 删除索引

alter table

alter table 表名 drop index 索引名

drop index

drop index 索引名 on 表名;

3.添加、更新与删除数据

3.1 添加数据

3.1.1 为表中所有字段添加数据

insert语句中指定所有字段名

insert into 表名(字段名1,字段名2, ) values(值1,值2, );

insert语句不指定字段名

insert into 表名 values(值1,值2)

3.1.2 为表的指定字段添加字段

insert into 表名(字段1,字段2, ) values(值1,值2, );

3.1.3 同时添加多条记录

insert into 表名(字段1,字段2, ) values(值1,值2, ),values(值1,值2, ),values(值1,值2, );

3.2 更新数据

3.2.1 update更新部分数据

update 表名 set 字段名1= 值1 where条件

3.2.2 update更新全部数据

update 表名 set 字段名1 =值1

3.3 删除数据

3.3.1 delete删除部分数据

delete from 表名 where条件表达式

3.3.2 delete删除全部数据

delete from 表名
truncate table 表名

4. 单表查询

4.1 简单查询

4.1.1 select语句

group by 字段名 having条件表达式

order by 字段名 asc|desc

4.1.2 查询所有字段

select * from 表名;

4.1.3 查询指定字段

select 字段名1,字段名2, from 表名;

4.2 按条件查询

4.2.1 带关系运算符的查询

select 字段名1,字段名2 from 表名 where 条件表达式

4.2.2 带in关键字的查询

查询student表中,id值为1、2、3的记录

select * from student where id in(1,2,3);

4.2.3 带between and 关键字的查询

select * from 表名 where 字段名 between 值1 and 值2;

查询student表中id值在2-5之间的学生姓名

select id,name from student where id between 2 and 5;

not between 同上

4.2.4 空值查询

查询student表中gender为空值的记录

select id,name,grade,gender from student where gender is null;

is not null同上

4.2.5 带distinct关键字的查询

过滤查询中重复的值

select distinct 字段名 from 表名;

4.2.6 带like关键字的查询

百分号%通配符

查询student表中name字段值以字符“s“开头的学生id

select id,name from student where name like "s%";

下划线_通配符

查询student表中name字段值以字符串”wu“开始,以"org"结束,并且两个字符串之间只有一个字符记录

select * from student where name like 'wu_org';

4.2.7 带and关键字的多条件查询

select * from 表名 where 条件表达式1 and 条件表达式2;

查询student表中id字段值小于5且gender字段值为'女'的学生姓名

select id,name,gender from student where id<5 and gender='女';

4.2.8 带or关键字的多条件查询

select * from 表名 where 条件表达式1 or 条件表达式2;

查询student表中id字段值小于3或gender字段值为'女'的学生姓名

select id,name,gender from student where id<3 or gender='女';

4.3 高级查询

4.3.1 聚合函数

count()函数

count()函数用来统计记录的条数

select count(*) from 表名;

sum()函数

select sum(字段名) from 表名;

avg()函数

select avg(字段名) from student;

max()函数

select max(字段名) from 表名;

min()函数

select min(字段名) from student;

4.3.2 对查询结果排序

select 字段名1,字段名2 from 表名 order by 字段名1 asc|desc,字段名2 asc|desc;

升序ASC,降序DESC

4.3.3 分组查询

单独使用group by分组

select * from student group by gender;

group by 和聚合函数一起使用

统计出某个或某些字段在一个分组中的最大值、最小值、平均值

eg:将student表按照gender字段值进行分组查询,计算出每个组多少名学生

select count(*),gender from student group by gender;

group by和having关键词一起使用

having可接聚合函数,where不可以

eg:将student表按照gender字段进行分组,并查询出grade字段值之和小于300的分组

select sum(grade),gender from student group by gender having sum(grade)<300;

4.3.4 使用limit限制查询结果的数量

select 字段名1,字段名2,···from 表名 limit 记录数;

查询student表中grade字段值从第五位到第八位的学生(高到低)

select * from student order by grade desc limit 4,4;

4.3.5 函数(列表)

查询student表中id和gender字段值,如果gender字段值为"男"返回1,不为”男“返回0

select id,if(gender=‘男’,1,0) from student;

4.4 为表和字段取别名

4.4.1 为表取别名

select * from 表名 as 别名;

为student取别名s,并查询student表中的gender字段为”女“的记录

select * from student as s where s.gender='女';

4.4.2 为字段取别名

select 字段名 as 别名 [,字段名 as 别名,···] from 表名;

查询student表中所有记录的name和gender字段值,并为这两个字段起别名为stu_name和stu_gender

select name as stu_name,gender stu_gender from student;

5. 多表操作

5.1 外键

5.1.1 什么是外键

外键是指引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束。外键用于加强两个表之间的联系

5.1.2 为表添加外键约束

alter table 表名 add constraint FK_ID foregin key(外键字段名) references 主表表名(主键字段名);

建立外键的表必须是InnoDB型,不能是临时表。只有这个才支持外键

定义外键名,不能加引号

5.1.3 删除外键约束

alter table 表名 drop foreign key 外键名;

5.2 操作关联表

 

 

 

 

发表评论 取消回复
表情 图片 链接 代码

分享