zoukankan      html  css  js  c++  java
  • 初识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(可靠性)

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

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

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

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

     

  • 相关阅读:
    HR问“你目前有几个offer”,聪明人会怎么说?
    秋招还有 1 个月到达战场,请做好准备 !
    我人生中的第一场Java面试
    MZ头里面的东西。真他妈多
    特殊的一卦
    今天出门去办事,又倒霉了
    内核回调
    sys_call_table HOOK
    起一卦,看看情况
    我的简陋界面库的模块组成
  • 原文地址:https://www.cnblogs.com/ptxxc/p/12097660.html
Copyright © 2011-2022 走看看