初识Mysql

什么是Mysql

MySQL 是一个功能齐全的关系数据库管理系统(RDBMS应用软件之一,可以与 Oracle DB Microsoft SQL Server 竞争。

MySQL 由瑞典公司 MySQL AB 赞助,该公司由 Oracle 公司拥有。但是,MySQL 源代码是免费提供的,因为它最初是作为免费软件开发的。

MySQL 是用 C C ++编写的,与所有主流操作系统兼容。

什么是数据库系统管理?

 数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS

它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据

 

为什么要使用MySQL

Mysql是开源的,所以你不需要支付额外的费用Mysql是可以定制的,采用了GPL协议

你可以修改源码来开发自己的Mysql系统MySQL数据库因其体积小、速度快、总体拥有成本低受到中小企业的热捧,

只是MySQL数据库自开发以来已经多次易主,所以很多用户对于MySQL数据库的前途很难乐观起来。

Linux方式安装MySQL

启动和关闭(必须以管理运行cmd命令窗口)

 

设置登录用户名密码

格式1:cmd>  mysql –u用户名 –p密码

例如:mysql -uroot –proot

 

格式2:cmd>  mysql --user=用户名 --host=ip地址 --password=密码

 

2.查看Linux是否已安装MySQL

MySQL的守护进程是mysqld.service,可以查看mysqld服务是否已经启动。

如果已经安装则:[root@localhost ~]# systemctl status mysqld.service

 

如果没有安装则显示如下:

SQL语句的介绍

什么是SQL

全称Structured Query Language简称SQL,中文叫结构化查询语言。

关系数据库语言的国际标准。SQL92SQL99

不只是mysql还有其他数据库SQL92或者SQL99这些国际SQL标准基础之上它们还扩展了自己的一些SQL语句比如MySQL中的limit关键字

SQL语言的分类

1.数据库定义语言: DDL(Data Definition Language):数据库定义语言用于创建(create)、修改(alter)和删除(drop)数据库内的数据结构。
可用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等:CREATE TABLE(表)/VIEW(视图)/INDEX(索引)/SYN(同义词)/CLUSTER(簇)

2.数据库查询语言:DQL(Data Query Language):
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>

3.数据操作语言:DML(Data Manipulation Language): 用与修改数据库中的数据,包括插入(insert)、更新(update)和删除(delete)数据。

4.数据控制语言:DCL(Data Control Language):用于控制对数据库的访问。常用的语句关键字grant、revoke等。

数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。
如:
1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]     //回退到某一点,回滚命令使数据库状态回到上次最后提交的状态。
其格式为:

SQL>ROLLBACK;
3) COMMIT [WORK]                //提交。

SQL语句的使用

常用的SQL语句

1、创建数据库:CREATE DATABASE database-name

2、创建新表:  create table tabname (col1 type1 [not null] [primary key],col2type2 [not null])。

3、增加一个列: Alter table tabname add column col type

4、删除视图:  drop view viewname。

5、创建索引:  create [unique] index idxname on tabname (c01...)

6、添加主键:  Alter table tabname add primary key (col)

7、创建视图:  create view viewname as select statement。

8、使用原有的表创建新表:  create table tab_ new like tab_ old

sql语句示范:

查看表

查看数据库中的所有表:show tables;

查看表结构:desc 表名;

删除表

drop table 表名;

修改表

alter table 表名 add 列名 类型(长度) 约束; --修改表添加列.

alter table 表名 modify 列名 类型(长度) 约束; --修改表修改列的类型长度及约束.

alter table 表名 change 旧列名 新列名 类型(长度) 约束; --修改表修改列名.

alter table 表名 drop 列名; --修改表删除列.

rename table 表名 to 新表名; --修改表名

alter table 表名 character set 字符集; --修改表的字符集

新增语句

insert into (列名1,列名2,列名3..) values  (1,2,3..); -- 向表中插入某些列

insert into values (1,2,3..); --向表中插入所有列

insert into  (列名1,列名2,列名3..) values select (列名1,列名2,列名3..) from

insert into  values select * from

修改语句

update 表名 set 字段名=,字段名=;

update 表名 set 字段名=,字段名=where 条件;

删除语句

delete from 表名 [where 条件];

分组语句

select  cid,count(*) from product group by cid  select查出的列(聚合函数除外)必须出现在group by

执行顺序

FROM(将最近的两张表,进行笛卡尔积)---VT1

ON(将VT1按照它的条件进行过滤)---VT2

LEFT JOIN(保留左表的记录)---VT3

WHERE(过滤VT3中的记录)--VT4…VTn

GROUP BY(对VT4的记录进行分组)---VT5

HAVING(对VT5中的记录进行过滤)---VT6

SELECT(对VT6中的记录,选取指定的列)--VT7

ORDER BY(对VT7的记录进行排序)--游标

LIMIT(对排序之后的值进行分页)

where 条件的时候,优先级高的部分要去编写过滤力度最大的条件语句

多表之间的关系

 

 如上图所示,实际业务数据库中的表之间都是有关系的

表与表之间的关系

表与表之间的关系,说的就是表与表之间数据的关系。

一对一关系

一对多关系

多对多关系

主外键关系

主表是:商品表。主表中,应该有一个字段去关联从表,而这个关联字段就是外键

从表是:分类表。从表中,应该有一个字段去关联主表,而这个关联字段就是主键

 

MySQL事务处理

一般来说,事务是必须满足4个条件(ACID):

Atomicity(原子性)

Consistency(稳定性)

Isolation(隔离性)

Durability(可靠性)

原子性:构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行

稳定性(一致性)数据库在事务执行前后状态都必须是稳定的

隔离性:事务之间不会相互影响

可靠性(持久性)事务执行成功后必须全部写入磁盘

 

原文地址:https://www.cnblogs.com/ptxxc/p/12097660.html