MySQL数据库

数据库简介

1、什么是数据库?

存储数据的仓库,本质是一个文件系统,按照特定的格式将文件存储起来(实现持久式存储),使用户可以方便的对数据进行增删改查。

2、数据库的发展

层次数据库 ->网状数据库->关系型数据库->面向对象数据库->分布式数据库

3、常见的关系型数据库

MySQL:免费的开源的数据库,中小型数据库首选 从6.x版本开始收费

Oracle:收费的大型数据库,安全性高

DB2:IBM公司的产品,收费的数据库,性能极高,运行成本高,常用在银行、金融系统

SQLServer :微软收费的中型数据库 性能一般

SQLite:嵌入式超小型数据库,用在手机端

4、MySQL安装与卸载可以查百度

安装上MySQL,相当于安了一个服务器,对外提供服务

5、连接MySQL数据库

两种方式:使用命令窗口或使用可视化的客户端

客户端:负责向服务器发送控制命令 负责展示处理结果

服务器端:负责保存数据 负责管理和维护数据安全 负责执行客户端传来的控制命令

6、命令窗口连接MySQL

mysql -u用户名 -p密码

mysql -h主机名 -u用户名 -p密码 eg:mysql -h127.0.0.1 -uroot -p1234

7、可视化工具

SQLYog

Navicat分为小黄和小绿

进入工具后输入地址,用户名,密码和端口就可以连接

8、DBMS数据库管理系统

所谓安装数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。

为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。

SQL语句

1、数据库定义语言:DDL(Data define language)用来操作数据库和表,关键字create alter drop 结构上的操作

数据操作语言:DML(Manipulation)用来操作表中的数据 ,关键字insert,delete,updata 不涉及结构的变化,只改变数据

数据查询语言:DQL (Query)用来查询表中的记录 ,关键字select from where 结构和数据都不会 发生改变

数据控制语言:DCL(Control)用来定义数据库的访问权限和安全级别及创建用户

2、SQL语句可以单行或多行书写

可使用空格和缩进来增强语句的可读性

数据库的SQL语句不区分大小写

同样可以使用/**/的方式完成多行注释(MySQL还可以使用#作为单行注释)

3、DDL操作数据库

create database 数据库名; // 创建一个新的数据库

create database 数据库名 character set 字符集;

use 数据库名; //切换数据库

select database(); //查看当前正在使用哪个数据库

show databases; //查看服务器中有哪些数据库

show create database 数据库名; //查看某个数据库定义的信息

drop database 数据库名; //删除数据库

alter database 数据库名 character set gbk; //修改数据库编码方式

4、DDL操作表

create table 表名(

字段名1 类型 约束,字段名2 类型 长度...

)

MySQL中常使用的数据类型

int double varchar字符串 date日期(yyyy-MM-dd 没有时分秒)

***注意:datetime和timestamp的区别
datetime最大表示时间 9999-12-31 23:59:59
timestamp最大表示时间 2037-12-31 23:59:59
当数据表是datetime类型的时候,默认值null
如果是时间戳,默认为当前时间。

show tables; //查看当前数据库中的所有表名

desc 表名;describe 表名 //查看某张数据表的结构

drop table 表名; //删除表

alter table 表名 关键字;

1.alter table 表名 add 列名 类型(长度) [约束]; //添加列

2.alter table 表名 modify 列名 类型(长度) [约束]; //只能修改列的类型长度和约束,不能改列名

3.alter table 表名 change 旧列名 新列名 类型(长度) [约束]; //可以修改列名

4.alter table 表名 drop 列名; //删除列

5.rename table 表名 to 新表名; //修改表名

6.alter table 表名 character set 字符集; //修改字符集

5、DML操作

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

Insert into 表名 values(“值”,....) 注意:值必须与字段类型顺序相同,除了数字都需要引号引起来

可一次性插入多条INSERT INTO student VALUES(111,222),(333,444),(555,666);

2.update 表名 set 字段 =值 where 条件;

列名的类型与修改的值要一致.

修改值得时候不能超过最大长度.

除了数值类型外,其它的字段类型的值必须使用引号引起

3.delete from 表名 where 条件; //删除符合条件的记录

6、DQL查询数据

1.select * from 表名; //查询所有记录 效率低 一般使用 select 所有字段的名字 from 表名;

2.select * from 表名 where 条件; //查询符合条件的记录

3.select name as 名字 from 表名 as a; //别名 as可以省

4.select distinct 列名 from 表名; //去掉重复值

5.select num+10 from 表名; //数字+10查询

6.where后的条件

比较运算符 > < <= >= <> !=

between ...and... 某一区间的值,包含头尾

in(100,200) 替代...or...or...100或200

like 模糊查询 %代表0个或多个字符 _代表一个字符

is null判断空

and or not 逻辑运算符

7、排序

select * from 表名 order by 排序字段 ASC|DESC; //ASC是升序 DESC是降序

select * from 表名 order by 排序字段 ASC,排序字段 DESC; //当第一个字段的值相等时按第二个字段排序

8、聚合函数

count(字段)统计总记录数

sum(字段)计算指定列的数值和,非数字为0

max(字段)计算指定列的最大值

min(字段)最小值

avg(字段)平均值

9、分组

select * from 表名 group by 分组字段名 having 条件 order by 字段;

Group by 字段 字段值相同的数据会划分成一组

Having 条件 对每一组分别进行一次运算

Select 字段 把每组中第一条数据取出来。合并成一张新伪表展示这个新伪表上的部分字段

order by 字段 对新伪表进行最后排序

10、数据的备份和还原

在可视化工具中右击数据库,可以看到备份导出字样,也有导入字样

SQL约束

1、主键约束

primary key 唯一且不能为空,每个表只有一个主键 三种方式

create table t(

id int primary key,

name varchar(20)

)

create table t2(

id int,

name varchar(10),

primary key(id)

)

alter table t3 add primary key(id);

2、删除主键约束

alter table 表名 drop primary key;

3、非空约束

not null 不接受空值

create table t4(

id int,

name varchar(10) not null

)

alter table t4 change name name varchar(10) not null;

4、唯一约束

Unique 约束数据库表中的每条记录不重复 会忽略null值

可以有多个Unique约束

添加方式类似于主键

5、外键约束

Foreign key 用于多表查询

6、自动增长

auto_increament 可以为唯一约束或主键约束

多表查询

1、外键特点 作用:进行多表数据关联

从表外键指向主表主键

从表外键的数据类型和长度,必须和主表主键数据类型和长度 一致

格式 :

alter table 从表 add [constraint 外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);

2、多表关系

1.一对多 例如:省和市

在多的一方添加外键,关联到一的那方主键

2.多对多 例如:老师和学生

增加一个中间表,分别用两列外键对应两个表的主键

3.一对一 例如:夫妻

将两个表的主键关连起来

3、多表查询

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。