数据库Mysql基本介绍

数据库及MySQL基本介绍

数据库是什么?

数据库就是长期存储在计算机中,有组织的,可共享的大量数据的集合

数据库的种类

  1. 关系型数据库

用表的方式储存数据

包括:MySQL/Oracle/SQL server/DB2

  1. 非关系型数据库

用文档或字符串等其他非表的方式储存数据

包括MongoDB/Redis/HBase

数据库管理软件

英文名:DBMS

包括:

关系型DBMS:MySQL/Oracle/SQL server/DB2

非关系型DBMS:MongoDB/Redis/HBase

数据库的常用术语

DBA:数据库管理员

DBS:数据库系统,数据库系统就是计算机中加入了数据库之后的系统

SQL语言

SQL(structured query language)结构化的查询语言

SQL语言是用于管理数据库的,用于关系型数据库管理软件,如:MySQL

就是说关系型数据库管理软件中用的语法都是SQL语言

SQL语言包含的种类

  1. DQL:数据查询语言, 常用命令:select. (针对表中的数据)

  2. DML:数据操作语言, 常用命令:insert update delete (针对表中的数据)

注意:delete 用于删除记录,alter用于删除字段,后面会详细讲到

  1. DDL:数据定义语言, 常用命令:create table alter table drop table (针对表)

  2. DCL:数据控制语言, 常用命令:grant revoke (定义数据用户的权限)

MySQL环境配置

修改环境变量

  1. 获得MySQL安装包,放在一个文件夹中,如:D:\mysql

  2. 解压到当前文件夹

在这里插入图片描述

  1. 找到解压号的文件夹中的bin的路径,并复制

在这里插入图片描述

  1. 打开系统环境变量,在系统环境变量中添加你刚才复制的bin路径,注意环境变量之间用英文的分号
    ; 隔开

在这里插入图片描述

上面的步骤是用来配置MySQL的环境变量的,目的就是为了让系统知道bin目录下的命令的位置,我们以后就可以在什么路径下输入命令,而不必CD到Bin目录

配置my.ini文件

  1. 找到MySQL目录下的my.ini文件,以记事本方式打开

在这里插入图片描述

  1. 修改basedir,值为你的MySQL目录的路径,就是bin目录的上一层目录

  2. 修改datadir,值同basedir,只不过在后面加了\data,注意,这里配置之后会在mysql-5.7.18-win32目录下直接生成data文件夹(不需要你去相应目录新建)

  3. Ctrl+s保存

注意:,如果此时保存my.ini时没有自动生成data文件夹,可以采用下面这种方法:

以管理员身份运行cmd

进入mysql的bin目录下

执行命令:

mysqld --initialize-insecure --user=mysql 

在my.ini配置文件中写入的data目录下生成data目录
如果使用这个方法生成data目录,后面还会有个坑,
解决方法:在登陆时,直接使用命令:

mysql -uroot -p

不要输入密码(因为还没有设置密码),直接回车,进入mysql后使用以下命令修改密码:

set password for 'root'@'localhost' = password('123456');

123456即为新密码

安装MySQL服务

  1. 管理员权限打开cmd,切换到bin目录

在这里插入图片描述

  1. 输入命令**mysqld install,**显示安装成功

在这里插入图片描述

  1. 初始化服务器,输入命令:mysqld --initialize --console

在这里插入图片描述

		最后出现的ZCfrBN4ZB\*4a就是你的密码
  1. 启动服务,输入命令:net start mysql

在这里插入图片描述

  1. 登录mysql,输入命令:mysql -uroot -p

在这里插入图片描述

	密码就是上面的ZCfrBN4ZB\*4a
  1. 如果默认密码不方便记,可以更改密码

    在登录之后,输入命令:

	ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
	123456就是新密码

在这里插入图片描述

数据库的常用操作

创建数据库

Create database name;

指定要使用的数据库

Use 数据库名;

查看当前连接的是哪个数据库

Select database();

在这里插入图片描述

查看当前连接的所有数据库

Show databases;

删除数据库

Drop database name;

数据库常用存储数据类型

INTEGER 一个带符号的整数

Float/double/decimal 浮点型,decimal(4,1),4表示总长度,1表示小数占位1个

TEXT 文本型

BLOB 一个BLOB数据块(可放图片,exe文件等)

NULL 空值

Boolean SQLite 没有Boolean类,直接为0(false)或1(true)

Date与Time SQLite 没有对应类,但可存为TEXT,REAL或INTEGER

CHAR和VARCHAR SQLite中都存为TEXT型,CHAR(10)固定字符长度,VARCHAR是可变字符型

表的基本操作

新建表

命令:create table table_name(

column1 datatype primary key [not null],

column2 datatype,

columnx datatype

) ;

注意,最后一个参数后面没有逗号

查看表的结构

Desc 表名;

在这里插入图片描述

显示数据库中的所有表

Show tables;

在这里插入图片描述

表的修改

  1. 改表明

Alter table 旧表名 rename to 新表名;

在这里插入图片描述

  1. 改字段

Alter table 表名 change 旧字段名 新字段名 新字段名类型;

在这里插入图片描述

  1. 添加字段

Alter table 表名 add 字段名 字段类型;

在这里插入图片描述

  1. 删除字段

Alter table 表名 drop 字段名

在这里插入图片描述

  1. 删除表

Drop table 表名;

约束

字段约束

1.主键约束:primary key.作用:使字段数据不能重复,并且不能为空

2.not null约束,作用:字段内容不能为空

3.唯一约束:unique.作用:该字段唯一,不能有跟它一样的

4.默认约束:default 10.作用:没有写字段内容时,默认值为10

外键约束

是指该表的字段是通过另外一个表的主键字段获得相关信息的
外键可以不是主键,但是外键所关联的字段必须是主键

外键可以重复,主键不能

Foreign key(clomun1) references table_name(clomun2),

外键约束使用实例

当你在新建一个表的时候,外键信息需要在最后添加,比如现在有了一个地址表address,address内容如下:

address(

aadd char(50) not null

);

现在新建一个student表:

create table student(

sname varchar primary key not null,

sage int,

sadd char(50),

foreign key(sadd) references address(aadd) //在最后添加

);

foreign key(sadd) references
address(aadd)就表示student表里的字段sadd是外键,是关联address表的aadd字段的外键

常用关键字

update

update table_name set 字段名=值 [where 更新条件];

insert

向表中插入,更新一条记录

具体用法:

insert into table_name values(

column datatype

);

在这里插入图片描述
插入多条记录:
insert into table_name (字段1,2,…,n) values(值1,2,…n),(),…,();

limit

用来限制由select语句返回的数据的数量

select *from table_name limit 3 [offset2];表示查询表中3行信息[从第一行开始偏移2行算起的3行]

在这里插入图片描述

条件查询

where

where sage>18 and sex==‘M’;
where是针对记录,聚合函数不能出现在where内

select

查询表中字段信息

具体用法:

select * from table_name; 查询表的所有记录

select 字段名1 字段名2 from table_name; 查询表中对应的字段信息

select 字段名 from table_name where
sage<18;查询该字段中对应年龄字段的年龄小于18的信息

模糊查询

like

如:

select *from table_name where sname like
‘%s%’;表示查询表中姓名信息里有字符s的数据信息,这里前面的%表示s前面有0个或任意几个字符,后面的%同理

select * from table_name where sname like
‘___h%’;表示查询表中姓名信息中第4个字符为h的数据信息

glob

可实现通配符*的查询

select 字段名 from table_name where 前面的字段名 glob ‘?s*’;

?表示一个字符或一个单一数字,*表示任意字符(可以是0个或1个或多个)

范围查询

in

select * from table_name where sage in (22,26);

表示查找年龄是22和年龄是26的所有记录

select * from table_name where sage not in (22,26);

表示查找年龄不是22且不是26的所有记录

between

between常和and一起使用

select * from table_name where age between 22 and 26;

查询年龄在22到26之间的所有记录,包括22和26

order by

排序,默认升序,后面加desc则为降序

select * from table_name order by sage;

以年龄升序排列信息

select * from table_name order by sage desc;

以年龄降序排列信息

select * from table_name order by sid,sage desc;

以学号升序,年龄降序排列信息
注意这里后面的字段sage只有在前面的字段sid有重复的时候才会启用降序

group by

必须和select一起使用,对相同数据分组

select sname,sum(score) from table_name group by sname;

以姓名分组,查询姓名和总分信息
select xh,count(*) from cjb
group by xh
having cj>60;
where:分组前的条件
having:分组后的条件

having

select sname,sum(score) [as] 总分 from table_name

group by sname

having count(sname)>4

order by 总分;

以姓名分组,查询姓名数量大于4(也就是选课超过4门),最后按总分升序排列的姓名,总分信息.

distinct

与select一起使用,可清除重复出现的记录,保留唯一一个记录

select distinct sname from table_name;

查询有哪几个学生参加了考试(把相同的学生名去掉了)

关键字使用顺序

从前到后

select

from

where

group by

having

order by

常用函数

count()

计算一个数据库中表的行数,或者一个分组中的元素个数

select count(*) from table_name;列出所有行的信息
count(某个字段):计算出这个字段有几行,注意:不会将记录为NULL的那条记录计数
count(*)不管记录为不为空,都会计数
length()是计算字段的长度

max()

得到某列最大值

select max(score) from table_name;

查询表中最大分数的记录

min()

得到某列最小值

sum() avg() upper() lower() length() random() abs()

select random();这里返回的是一个8字节的长整型整数

SQL文件的导入与导出

在Navicat中:

导入

1.激活(双击或右键)数据库
2.选择运行SQL文件,加入你要导入的数据库(SQL文件)

导出

1.激活数据库
2.右键,选择转储SQL文件
3.选择结构和数据

事务

开启事务

start transaction;

rollback;回流到上一次提交状态
commit;提交

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值