初识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,中文叫结构化查询语言。
关系数据库语言的国际标准。SQL92、SQL99
不只是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(可靠性)
原子性:构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行。
稳定性(一致性):数据库在事务执行前后状态都必须是稳定的。
隔离性:事务之间不会相互影响。
可靠性(持久性):事务执行成功后必须全部写入磁盘。