程序:指令+数据组成

对数据文件进行有序排列,形成一个索引文件,然后通过索引文件快速找到相对应得数据文件

通过指针指向,帮我们查找文件的方法叫做索引: 

       常见的方法:B+树

                   二分法

DML:数据操作语言:

     insert replace update delete

DDL:数据定义语言

     create ater drop

DCL:数据控制语言:

     grand授权 revoke取回权限 select

RDBMS:数据库软件

     Oracle、Sybase、Infomix、SQL Server、

     MySQL、PostgreSQL、pgsql、EnterpriseDB

   MySQL: facebook 阿里巴巴 淘宝 google

    哪天MySQL不能用了可以用MariaDB/Percona 都是从MySQL发展而来的

    因为Percona太牛了,而且是开源免费,所以 促使着MySQL快速发展

   学习MySQL要多关注Percona网站

反关系型数据库:NoSQL

     MongoDB 文档数据库

     redis   缓存数据库/内存数据库

     HBase   在自己内部实现,数据管理的非关系数据库

###################################################################3

DBMS:

     数据管理的独立性

     有效地完成数据存取

     数据完整性和安全性

     数据集中管理

     能够实现并发存储与故障恢复

     减少应用程序的开发时间

################################################

              SQL命令                          # 

                 |                             # 

 -----------------------------------           #

  |       |              |                     #

优化器  分析器       计划执行器                #

-------------------------------------          #

    |             |            |               #

 事物管理器 文件的存取方法   故障恢复管理器    #

    |             |                            #

 锁管理器      缓存器                          #

                  |                            #

            磁盘空间管理器                     #

################################################                  

 MySQL:

      Community Edtion 社区版

      Enterprise Edtion 企业版 

      Cluster:集群

      workbench:图形化工具

      Connectors 连接器 例:PHP链接MySQL,可以通过API也可以通过驱动,那个驱动就是连接器

软件包格式:

       软件包管理器特有的格式

            rpm包 .exe格式

       通用二进制格式

       源程序

################################

红帽官方提供的RPM包最重要的有两个:

      MySQL 客户端

      mysql-server 服务器端 

   PHP-mysql就是 PHP访问mysql的驱动

二进制程序:

      mysql 客户端

     mysqld 服务器端  

mysql监听在服务器的3306端口

#####################################

应用程序默认保存在 /var/lib/mysql

#####################################

netstat -ntlp 查看监听端口

##################################

mysql -u USERNAME 指定以哪个用户去链接     不指默认root 

      -p 指定密码                          不指默认 空

      -h 指定服务器是谁                    不指默认localhost


mysql 用户不仅有用户名,包含用户名,和允许它登陆的主机

#############################################################

mysql默认将他的数据库存放在/var/lib/mysql

在mysql下创建一个目录相当于创建了一个数据库    

#############################################################

mysql客户端

     交互式模式

     批处理模式

            执行mysql脚本

交互式模式中命令类别:

      客户端命令:

      服务器端命令 :必须使用语句结束符,默认为分号;

#############################################################

SHOW DATABASES;  查看mysql中所有的库;

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


关系数据库对象:   

          库

          表

          索引

          视图

          约束

          存储过程

          存储函数

          触发器:做主动数据库的

          游标

          用户

          权限

          事务

          

核心组件:

     表:

        行row 列field/column

        表;某一类实体的集合


     字段名称 数据类型,类型修饰(限制):

      字符:

           CHAR(n)最多存储256个字符

           VARCHAR(#)最多存储65535个字符

           BINARY()

           VARBINARY()

           TEXT(n)说明要存多大字节的文本

           BLOB(n) 二进制的大对象

       数值:

           精确数值

               整型

                 TINYINT

                 SMALLINT

                 MEDIVMINT

                 INT

                 BIGINT


                 修饰符:UNSIGNED;无符号

                         NOT NULL:

             十进制

                  DECIMAL

           近似数值

             浮点型 

                  FLOAT

                  DOUBLE           

               日期

                  DATE

                  TIME

                  DATETIME

                  STAMP  

               布尔 

########################################################################################

1、创建数据库:

         create database db_name;

2、展现出所有的数据库:

         show databases;

3、如果不存在就添加:

         create database if not exists db_name

4、删除数据库:

         drop database db_name;

5、创建表:

     create table students(Name char(20) not null,age tinyint unsigned,gender char(1) not null)

6、设定默认使用哪个数据库:

            use db_name

7、查看库中的表:

      show tables from db_name;         

8、 查看表结构:

      desc tb_name;

8、删除表:

      drop table if exists tb_name  

9、在students表上新增一个字段:

      alter table students add course varchar(100);

10、修改字段的名称,并第一个显示:

      alter table students change course Course varchar(100) first;

11、删除某个字段

      alter table students drop Course;

12、在表中插入字段

    insert into students (name,Gender) value ('Linghuchong','M'),('Xiaolongnv','F');       insert into students values ('xiaoxiangzi','hamagong',57,'M');  

13、修改某一字段的名称;不指定where全部都改

   update tb_name set 字段名=value where name='xiaoxiangzi'; 修改字段

  范例:update students set course='hamagong' where name='xiaoxiangzi';


14、删除:删除students表中学蛤蟆功的用户

     delete from students where Course='hamagong';     

  

     select 字段 from tb_name where CONDITION;

  范例:只显示名字和课程:select name,Course from students where Gender='M';

15、 创建用户:

     create user 'aaa'@'主机' identified by 'password';

       host 

           ip

           主机名       

           网路地址 

            _: 192.168.9.__ 意思是包含10-99所有的段

            %:任意长度的任意字符

15、查看用户的权限:

          show grants for 'aaa'@'%';

15、把数据库tom上所有的权限给aaa用户

           grant all privileges on tom.* to 'aaa'@'%';

16、删除用户:

     drop user 'username'@'host';

17、赋权限:

   grant pri1,pri2 on db_name.tb_name to 'username'@'host' identified by 'password';

    取消权限:

   revoke pri1,pri2,on db_name.tb_name from 'username'@'%';

    范例创建用户:create user 'jerry'@'%' identified by 'jerry';

    查看用户的授权: show grants for 'jerry'@'host'

    将mydb所有权限给用户:grant all privileges on mydb.* to 'jerry'@'%';


18、远程连接:下载客户端,yum install mysql

        mysql -ujerry -p -h192.168.9.247   就可以链接17了  

19、为用户设定密码

    mysql>set password for 'username'@'host'=password('password');

    # mysqladmin -uroot -hhost -p password 'password';

    # mysqladmin -uroot -h127.0.0.1 -p password '123456'

20、赋权限:

    mysql> grant all privileges on *.* to root@'%' identified by 'redhat';

    mysql> flush privileges; (保存)