精华内容
下载资源
问答
  • 大家好,我是魔王哪吒,话不多说,今天带来的是一篇《考前复习必备MySQL数据库(关系数据库管理系统)》文章,欢迎大家喜欢。前言MySQL是一个关系数据库管理系统,在web应用方面,M...

    大家好,我是魔王哪吒,话不多说,今天带来的是一篇《考前复习必备MySQL数据库(关系型数据库管理系统)》文章,欢迎大家喜欢。

    前言

    MySQL是一个关系型数据库管理系统,在web应用方面,MySQL是最好的关系型数据库管理系统应用软件之一。

    MySQL是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样增加了速度和提高了灵活性。

    MySQL所使用的sql语言是用于访问数据库的最常用标准化语言,由于其体积小,速度快,总体拥有成本低,开放源码,一般中小型网站的开发选择MySQL作为网站数据库。

    应用环境

    和其他的大型数据库例如OracleDB2SQL Server等相比,MySQL也有自己的不足,但是这也没有减少它受欢迎的程度,对于一般的个人使用者和中小型企业来说,MySQL提供的功能是绰绰有余。

    Linux作为操作系统,ApacheNginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。

    应用架构

    单点(Single),适合小规模应用 复制(Replication),适合中小规模应用 集群(Cluster),适合大规模应用

    索引功能

    从理论上来说,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。

    1. InnoDB 数据表的索引

    2. 限制

    索引类别

    1. 普通索引,普通索引(由关键字 KEYINDEX 定义的索引)的任务是加快对数据的访问速度。

    2. 索引,普通索引允许被索引的数据列包含重复的值。

    3. 主索引,必须为主键字段创建一个索引,这个索引就是所谓的“主索引”。

    4. 外键索引,如果为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。

    5. 复合索引,索引可以覆盖多个数据列,如像 INDEX (columnA, columnB) 索引。这种索引的特点是 MySQL 可以有选择地使用一个这样的索引。

    初学基础

    连接MySQL,格式:

    mysql -h 主机地址 -u 用户名 -p 用户密码
    
    连接到本机上的MySQL,首先打开DOS窗口,进入目录mysqlbin,输入mysql -uroot -p,回车后提示你输密码。
    

    连接远程主机上的MySQL,远程主机的IP,和用户名root,密码。

    命令:mysql -h远程主机ip -uroot -p密码

    退出mysql命名:exit回车,但是注意,想要成功连接到远程主机,需要在远程主机打开mysql远程访问权限。

    mysql和sqlite的区别

    mysqlweb世界中使用最广泛的数据库服务器。mysql是为服务器端设计的数据库,能承受高并发访问,同时占用的内存也远远大于SQLite

    SQLite的特点是轻量级,可嵌入,但不能承受高并发访问,适合桌面和移动应用。

    把数据库默认的编码全部改为UTF-8

    MySQL的配置文件默认存放在/etc/my.cnf或者/etc/mysql/my.cnf

    代码如下:

    [client]
    default-character-set = utf8
    
    
    [mysqld]
    default-storage-engine = INNODB
    character-set-server = utf8
    collation-server = utf8_general_ci
    
    重启mysql后,可以通过mysql的客户端命令行检查编码。
    
    $ mysql -u root -p
    

    复习必备

    MySQL数据库管理方法,掌握数据库的初始化,创建,查看,和删除方法。学习数据表管理方法,掌握数据表的创建,查看,修改和删除方法。

    用户账户的管理,用户的创建,与删除,用户权限的授予与回收,用户密码的设置与更改方法。

    目录复习


    为了方便查看学习,我做了思维导图,如下图所示:

    mysql数据库管理

    数据库进行初始化

    初始化数据库,在安装好mysql数据库后,不要直接启动,需要对数据库进行初始化。

    初始化的过程

    1. 创建元数据表

    2. 数据目录

    3. 创建root用户

    mysql提供数据库命令:

    mysql --initialize进行初始化

    • windows+r组合键,可以打开“运行”窗口,在该窗口输入cmdenter键,打开命令行。

    • 使用cd命令进入mysql目录。

    • 执行bin\mysqld --initialize命令,进行初始化。

    初始化完成后,可以启动数据库,启动数据库有两种方式。

    1. 利用windows服务器管理界面启动;

    2. 利用mysql命令启动。

    利用mysql命令方式启动数据库:

    1. windows+r组合键,打开窗口,进入命令行;

    2. 使用cd命令进入mysql目录;

    3. 输入bin\mysqld,启动mysql服务。

    启动数据库

    使用bin\mysql -u root -p命令进入mysql操作环境中。

    服务图片,开启数据库:

    创建数据库

    我们来创建一个数据库,create database语句。

    语法格式如下:

    create database [db_name];
    

    创建一个名为web的数据库:

    create database web;
    

    在数据库创建好后,mysqldata目录下会自动生成一个名为web的目录,该数据库的数据会存储于该目录下。

    mysql中可以支持运行多个数据库,所以我们可以创建多个数据库。

    查看数据库

    数据库创建好后,使用show语句查看当前mysql中有哪些数据库。

    show databases;
    

    删除数据库

    使用drop语句删除数据库,语法格式如下:

    drop database db_name;
    

    删除创建的web数据库,命令如下:

    drop database web
    

    删除数据库是一个不可逆的操作。

    mysql数据表管理

    创建数据表使用create table语句,语法格式如下。

    user 数据库名;
    create table 表名 (字段名 类型(长度),字段名 类型(长度));
    

    创建表语句:

    1. 明确数据表的结构;

    2. 名字段的名称;

    3. 类型;

    4. 长度等。

    查看数据表

    查看表分:

    1. 查看数据库中包含哪些表

    2. 查看某个表的具体结构

    使用的语句有show语句和describe语句。

    • 使用show语句可以查看数据库中有哪些表。

    show tables
    
    • 使用describe语句可以查看某个表的具体结构,查看组成表的各字段的信息。

    describe 库名.表名;
    

    使用describe语句可以查看表的各个字段名称,类型,长度,是否非空,是否有主键,默认值以及备注等信息。

    修改数据表

    可以修改表名,字段名,字段类型等表结构,可使用alter语句来实现修改操作。

    修改表名

    修改表名的语句:

    alter table 旧表名 rename 新表名;
    

    修改数据表student改变为student1

    alter table student rename student1
    

    修改字段名

    修改字段名的语法格式如下:

    alter table 表名 change 旧属性名 新属性名 新数据类型;
    alter table student1 change name s_anme varchar(50);
    

    修改字段类型

    修改字段类型的语法格式:

    alter table 表名 modify 属性名 数据类型;
    alter table student1 modify name varchar(32);
    

    增加字段

    增加字段的语法格式如下:

    alter table 表名 add 属性名 数据类型;
    alter table student1 add sex char(1);
    

    删除字段

    删除字段语句:

    alter table 表名 drop 属性名;
    

    示例:

    alter table student1 drop sex;
    

    删除数据表

    使用drop语句删除数据库中的表。

    use 数据库名;
    drop 表名;
    

    或者是

    drop table 数据库名.表名;
    

    删除某个数据中的某个表:

    use test;
    drop table student;
    

    或者是

    drop table test.student;
    

    mysql用户管理

    mysql提供了一套完善的数据库用户以及权限管理系统。

    创建和删除用户

    1. 创建用户

    使用create语句创建用户:

    create user 'username'@'host' idendified by 'password';
    

    username表示为创建的用户名,host指定该用户在哪个主机上可以登录。

    create user 'test1'@'localhost' idendified by '1234';
    create user 'test3'@'122.xxx' idendified by '1234';
    

    用户删除

    使用drop语句可以删除用户,语法格式:

    drop user 'username'@'host';
    

    示例如下:

    drop user 'test1'@'localhost';
    

    授予与回收用户权限

    授予用户权限

    grant语句可以对用户进行授权:

    grant privileges on dbname.tablename TO 'username'@'host';
    
    1. privileges表示要授予用户的操作权限。

    grant select, insert on mysql.test TO 'test1'@'%';
    

    表示授权用户test1在所有登录主机均对mysql库的test表拥有selectinsert权限。

    grant all on *.* TO 'test2'@'localhost';
    

    表示授权用户test2在本地主机数据库的所有库的所有表拥有所有权限。

    回收用户权限

    使用revoke语句可以对权限进行回收。

    revoke privileges on databasename.tablename from 'username'@'host';
    

    示例:

    revoke select on *.* from 'test2'@'localhost';
    

    设置与更改用户密码

    使用mysql所提供的密码设置与更改语句,语法格式:

    set password for 'username'@'host' = password('newpassword');
    
    1. username表示要设置或更改密码的用户名;

    2. host指定该用户的登录主机;

    3. newpassword表示要设置或更改的密码。

    示例:

    set password for 'test1'@'localhost' = password('12345');
    

    什么是数据库

    数据库是按照数据结构来组织,存储和管理数据的仓库。每个数据库都有一个或多个不同的api用于创建,访问,管理,搜索,复制所保存的数据。

    将数据存储在文件中,但是在文件中读写数据速度相对较慢。

    术语

    1. 数据库是一些关联表的集合。

    2. 数据表是数据的矩阵。

    3. 列,一列包含了相同类型的数据。

    4. 行,一行是一组相关的数据。

    5. 冗余,存储两倍数据,冗余降低了性能,但提高了数据的安全性。

    6. 主键,是唯一的,一个数据表中只能包含一个主键。

    7. 外键,用于关联两个表。

    8. 复合键,将多个列作为一个索引键,一般用于复合索引。

    9. 索引,使用索引可以快速访问数据库中的特定信息。

    10. 参照完整性,参照的完整性要求关系中不允许引用不存在的实体。

    一个关系型数据库由一个或数个表格组成:表头,行,列,键,值。

    表头为每一列的名称,列为具有相同数据类型的数据的集合,行为每一行用来描述某条记录的具体信息,值为行的具体信息,每个值必须与该列的数据类型相同,键的值在当前列中具有唯一性。

    MySQL 下载地址为:MySQL 下载https://dev.mysql.com/downloads/mysql/

    安装 MySQLhttps://dev.mysql.com/downloads/repo/yum/

    Mysql安装成功后,默认的root用户密码为空,可以使用以下命令来创建root用户的密码:

    [root@host]# mysqladmin -u root password "new_password";
    

    登录Mysql

    命令行:mysql -h 主机名 -u 用户名 -p
    

    运行mysql服务:

    mysql -h localhost -u root -p
    

    MySQL PHP 语法

    PHP Mysqli函数格式如下:

    mysqli_function(value,value,...);mysqli_connect($connect);
    mysqli_query($connect,"SQL 语句");
    mysqli_fetch_array()
    mysqli_close()
    

    使用 PHP 脚本连接 MySQL

    mysqli_connect() 函数来连接数据库

    语法:

    mysqli_connect(host,username,password,dbname,port,socket);
    

    参数说明:

    1. host为主机或ip地址;

    2. usernamemysql用户名;

    3. passwordmysql密码;

    4. dbname为默认使用的数据库;

    5. port尝试连接到mysql服务器的端口号;

    语法:

    bool mysqli_close ( mysqli $link )
    

    连接mysql服务器:

    <?php
    $dbhost = 'localhost';  // mysql服务器主机地址
    $dbuser = 'root';            // mysql用户名
    $dbpass = '123456';          // mysql用户名密码
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
        die('Could not connect: ' . mysqli_error());
    }
    echo '数据库连接成功!';
    mysqli_close($conn);
    ?>
    
    mysql创建数据库
    

    使用create命令创建数据库,语法:

    create database 数据库名;
    

    使用php脚本创建数据库

    语法:mysqli_query(connection,query,resultmode);

    1. connection为要使用的mysql连接;

    2. query为查询字符串;

    3. resultmode一个常量,值MYSQLI_USE_RESULTMYSQLI_STORE_RESULT

    使用PHP来创建一个数据库

    代码:

    <?php
    $dbhost = 'localhost';  // mysql服务器主机地址
    $dbuser = 'root';            // mysql用户名
    $dbpass = '123456';          // mysql用户名密码
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
      die('连接错误: ' . mysqli_error($conn));
    }
    echo '连接成功<br />';
    $sql = 'create database web';
    $retval = mysqli_query($conn,$sql );
    if(! $retval )
    {
        die('创建数据库失败: ' . mysqli_error($conn));
    }
    echo "数据库 web 创建成功\n";
    mysqli_close($conn);
    ?>
    

    drop命令删除数据库

    drop命令格式:

    drop database <数据库名>;
    

    使用php脚本删除数据库

    语法

    mysqli_query(connection,query,resultmode);
    

    使用PHP mysqli_query函数来删除数据库:

    删除数据库:

    <?php
    $dbhost = 'localhost:3306';  // mysql服务器主机地址
    $dbuser = 'root';            // mysql用户名
    $dbpass = '123456';          // mysql用户名密码
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
        die('连接失败: ' . mysqli_error($conn));
    }
    echo '连接成功<br />';
    $sql = 'DROP DATABASE web';
    $retval = mysqli_query( $conn, $sql );
    if(! $retval )
    {
        die('删除数据库失败: ' . mysqli_error($conn));
    }
    echo "数据库 web 删除成功\n";
    mysqli_close($conn);
    ?>
    

    使用PHP脚本选择MySQL数据库

    使用函数mysqli_select_db来获取一个数据库

    语法:

    mysqli_select_db(connection,dbname);
    

    示例:

    mysqli_select_db函数来选取一个数据库:

    选择数据库

    <?php
    $dbhost = 'localhost:3306';  // mysql服务器主机地址
    $dbuser = 'root';            // mysql用户名
    $dbpass = '123456';          // mysql用户名密码
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
        die('连接失败: ' . mysqli_error($conn));
    }
    echo '连接成功';
    mysqli_select_db($conn, 'web' );
    mysqli_close($conn);
    ?>
    

    MySQL 数据类型

    mysql支持多种类型,分三类:

    1. 数值;

    2. 日期/时间;

    3. 字符串类型。


    MySQL 5.0 以上的版本

    1、一个汉字占多少长度与编码有关:

    UTF-8:一个汉字=3个字节
    GBK:一个汉字=2个字节
    

    2、varchar(n) 表示 n 个字符,无论汉字和英文,Mysql 都能存入 n 个字符,仅是实际字节长度有所区别

    3、MySQL 检查长度,可用 SQL 语言来查看

    MySQL 创建数据表

    1. 表名

    2. 表字段名

    3. 定义每个表字段

    语法:

    创建mysql数据表的sql语法。

    CREATE TABLE table_name (column_name column_type);
    

    在数据库中创建数据表:

    create table if not exists `table_tb` (
        `table_id` int unsigned auto_increment,
        `table_title` varchar(100) not null,
        `table_author` varchar(40) not null,
        `table_date` date,
        primary key (`table_id`)
    )engine=InnoDB default charset = utf8;
    
    注意:在auto_increment定义列为自增的属性,一般用于主键,数值会自动加1,。engine设置存储引擎,charset设置编码。
    

    创建数据表

    代码:

    <?php
    $dbhost = 'localhost:3306';  // mysql服务器主机地址
    $dbuser = 'root';            // mysql用户名
    $dbpass = '123456';          // mysql用户名密码
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
        die('连接失败: ' . mysqli_error($conn));
    }
    echo '连接成功<br />';
    $sql = "create table table_tbl( ".
            "table_id int not null auto_increment, ".
            "table_title varchar(100) not null, ".
            "table_author varchar(40) not null, ".
            "submission_date DATE, ".
            "primary key ( runoob_id ))ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
    mysqli_select_db( $conn, 'RUNOOB' );
    $retval = mysqli_query( $conn, $sql );
    if(! $retval )
    {
        die('数据表创建失败: ' . mysqli_error($conn));
    }
    echo "数据表创建成功\n";
    mysqli_close($conn);
    ?>
    

    MySQL 字段属性应该尽量设置为 NOT NULL

    首先,考虑空值“”和null的概念:

    1. 空值是不占用空间的

    2. mysqlnull其实是占用空间的


    MySQL删除数据表

    语法,删除mysql数据表的语法:

    drop table table_name;
    

    使用PHP脚本删除数据表

    语法:

    mysqli_query(connection,query,resultmode);
    

    使用了PHP脚本删除数据表:

    <?php
    $dbhost = 'localhost:3306';  // mysql服务器主机地址
    $dbuser = 'root';            // mysql用户名
    $dbpass = '123456';          // mysql用户名密码
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
      die('连接失败: ' . mysqli_error($conn));
    }
    echo '连接成功<br />';
    $sql = "drop table table_tb1";
    mysqli_select_db( $conn, 'web' );
    $retval = mysqli_query( $conn, $sql );
    if(! $retval )
    {
      die('数据表删除失败: ' . mysqli_error($conn));
    }
    echo "数据表删除成功\n";
    mysqli_close($conn);
    ?>
    

    MySQL 插入数据

    mysql数据表插入数据通用insert into语法:

    insert into table_name(field1,field2,...fieldN)
        values
        (value1,value2,...valueN);
    

    添加数据

    代码:

    <?php
    $dbhost = 'localhost:3306';  // mysql服务器主机地址
    $dbuser = 'root';            // mysql用户名
    $dbpass = '123456';          // mysql用户名密码
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
      die('连接失败: ' . mysqli_error($conn));
    }
    echo '连接成功<br />';
    // 设置编码,防止中文乱码
    mysqli_query($conn , "set names utf8");
     
    $table_title = '学习';
    $table_author = 'web';
    $submission_date = '2018-03-06';
     
    $sql = "insert into table_tbl ".
            "(table_title,table_author, submission_date) ".
            "values ".
            "('$table_title','$table_author','$submission_date')";
     
    mysqli_select_db( $conn, 'web' );
    $retval = mysqli_query( $conn, $sql );
    if(! $retval )
    {
      die('无法插入数据: ' . mysqli_error($conn));
    }
    echo "数据插入成功\n";
    mysqli_close($conn);
    ?>
    
    INSERT 插入多条数据
    
    INSERT INTO table_name (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;
    

    SQL基本语法

    学习sql语句和mysql基本数据类型,学习掌握数据插入,修改,删除的sql语句,查询语句,以及各类特定的查询语句。

    学会数据库事务的概念,特性以及使用方法。

    sql的目录也整理一个思维导图:

    sql语句简介

    结构化查询语言简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

    sql 语句就是对数据库进行操作的一种语言。

    sql分三种类型:

    1. DDL语句,数据定义语句,定义了不同数据库,表,列,索引等数据库对象。

    2. DML语句,数据操作语句,用于添加,删除,更新和查询数据库记录,并检查数据完整性。

    3. DCL语句,数据控制语句,定义数据库,表,字段,用户的访问权限和安全级别。

    mysql基本数据类型

    mysql提供了多种数据类型,包括数值类型,字符串类型,日期和时间类型。

    1. 数值类型

    2. 字符串类型

    3. 日期和时间类型


    数值类型

    mysql的数值类型:

    1. 整数类型

    2. 浮点数类型

    3. 定点数类型

    整数类型:

    1. tinyint

    2. small int

    3. medium int

    4. int

    5. big int

    浮点数类型:

    1. float

    2. double

    定点数类型:

    1. decimal

    整数类型的划分是根据存储空间的大小和表示范围的大小来划分

    浮点类型是用来表示实数的一种方法,根据位数和精度,浮点类型分单精浮点数(8位精度)和双精浮点数(16位精度)。

    字符串类型

    提供了多种字符串类型:

    1. char

    2. varchar

    3. binary

    4. varbinary

    5. blob

    6. text

    7. enum

    8. set


    char与varchar

    1. char定义固定长度字符串

    2. varchar定义可变长度字符串

    char的长度固定为创建表时声明的长度,其取值范围为0到255,当保存char值时,在右边填充空格以达到指定的长度。

    当检索到char值时,其尾部的空格会被删除,所以在存储时,一般字符串右边不能有空格。如果字符串右边有空格,在查询出来后会被删除。

    varchar的长度可以指定为0到6535,varchar值在保存时只保存需要的字符串,并另外加一个字节来记录长。

    binaryvarbinary

    binaryvarbinary用来存储二进制字符串。没有字符集,并且会排序和比较基于列值字节的数值。

    text与blob

    textblob是以对象类型保存的文本与二进制。

    text视为足够大的varchar,将blob视为足够大的varbinary,但textblobvarcharvarbinary的不同之处:

    1. 当保存或检索blobtext的值时不删除尾部空格。

    2. 在比较时,会用空格对text进行扩充以适应比较的对象。

    3. 对于blobtext的索引,必须制定索引前缀的长度。

    4. blobtext不能有默认值。

    对弈textblob对象的最大字符串长度由其类型确定。

    text分为tinytext,text,mediumtextlongtext四种类型。

    blog分为tinyblobblobmediumbloblongblob四种类型。

    enum

    enum表示枚举类型,它的取值范围需要在创建表时通过枚举方式显式制定。enum是忽略大小写的。enum只允许从值集合中选取单个值,不能一次选取多个值。

    set

    set是一个集合对象,可以包含0到64个成员,其所占存储空间的大小是因集合成员数量的不同而有所不同的。

    日期和事件类型

    提供了多种日期和时间类型:

    1. year

    2. time

    3. date

    4. datetime

    5. timestamp

    日期格式,year,YYYY;time,HH:MM:SS;date,YYYY-MM-DD;datetime,YYYY-MM-DD HH:MM:SS,timestamp,YYYY-MM-DD HH:MM:SS。

    数据插入

    insert into 表名 values (值1,值2,...);
    insert into 表名 (列1,列2,...) values (值1,值2);
    

    mysql中,insert语句,可以一次性插入多条记录,语法格式如下。

    insert into 表名 (列1,列2,...) values (值1,值2,...), (值1,值2,...),...;
    

    数据修改

    通过update命令进行修改:

    update 表名 set 列名 = 新值 whert 列名 = 某值;
    update 表1,表2,...set 表1.列1,表2.列2,...where 条件;
    

    数据删除

    可以使用delete命令进行删除:

    delete from 表名 where 列名=值;
    

    delete命令可以一次删除多个表的数据:

    delete 表1,表2,... from 表1,表2,...where 条件;
    

    数据查询

    最基本的select语句的语法格式:

    select 字段 from 表名 where 条件;
    

    条件查询

    条件查询的语句:

    select 字段 from 表名 where 条件;
    

    联合查询

    union操作符

    union操作符用于合并两个或多个select语句的结果集。

    代码:

    select 条件 from 表1
    union
    select 条件 from 表2;
    

    unionunion all的主要区别

    1. union all用于将结果集直接合并在一起。

    2. union用于将union all后的解构进行一次distinct,以删除重复结果记录。


    不重复查询

    语法格式如下:

    select distinct 字段 from 表名;
    

    模糊查询

    语法格式:

    select 字段 from 表名 where 字段 like 值;
    

    %的使用,用来匹配0个或多个字符,可以匹配任意类型和长度的字符,对长度没有限制。

    “_”的使用,用来匹配任意单个字符,常用来限制表达式的字符长度。

    排序查询

    使用order by关键字来排序:

    select 字段 from 表名 where 条件 order by field1 desc/asc, field2 desc/asc, ...;
    

    排序方式:desc表示降序排列,asc表示升序排序。默认值为asc

    order by后面可以跟多个不同的排序字段。

    限制查询

    使用limit关键字进行限制查询,格式:

    select 字段 limit 起始偏移量,行数;
    

    聚合

    聚合语句格式:

    select 字段 op_name from 表名 where 条件 group by filed1, filed2, ... with rollup having 条件;
    

    op_name表示要进行的聚合操作,就是聚合函数。

    聚合函数:

    1. sum函数求和

    2. count函数记录数

    3. max函数最大值

    4. min函数最小值

    5. groupby表示要进行分类聚合的字段

    6. with rollup表示是否对分类聚合后的结果进行在汇总

    7. having表示对分类后的结果进行条件过滤


    连接

    内连接

    内连接查询是指所有查询的结果都能够在连接的表中有对应记录。在默认情况下是内连接,可以不写join关键字,或者写inner join

    join分三类:

    1. inner join:获取两个表中字段匹配关系的记录。

    2. left join:获取左表所有记录,即使右表没有对应匹配的记录。

    3. right join:用于获取右表所有记录,即使左表没有对应匹配的记录。

    左连接和右连接

    左连接是指以左边的表的数据为基准,去匹配右边的表的数据。

    1. 如果匹配到相应数据,则显示匹配结果

    2. 如果匹配不到相应数据,就显示为null

    左连接的关键字:left join。右连接的关键字:right join

    右连接反之。

    事务

    事务概述:事务,一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。

    事务由事务开始和事务结束之间执行的全体操作组成。

    事务就是一组由sql语句组成的业务逻辑,只有事务内的所有sql语句都成功执行,整个事务才算成功,否则就是失败。

    事务的四大特性

    1. 原子性

    2. 一致性

    3. 隔离性

    4. 持久性

    事务提交

    默认情况下,sql语句是自动提交的,每条sql语句在执行完毕后会 自动提交事务,要想统一提交事务,需要先关闭mysql的自动提交功能。

    查看数据库是否开启自动提交:

    show variables like 'autocommit';
    

    使用命令关闭自动提交:

    set autocommit=0;
    

    命令手动进行事务提交:

    commit
    

    事务回滚

    事务中已执行成功的语句结果应该回退至未执行状态,称为事务回滚。

    事务回滚:

    rollback
    

    事务隔离级别

    事务的并发读问题

    1. 脏读:读取到另一个事务未提交数据;

    2. 不可重复读:两次读取不一致;

    3. 幻读(虚读):读到另一事务已提交数据。


    开始事务

    事务以begin transaction开始:

    格式:

    begin transaction <事务名称> |@ <事务变量名称>
    

    语法说明如下:

    @<事务变量名称>由用户定义的变量,必须用char,varchar,nchar或nvarchar数据类型来声明该变量。

    begin transaction语句的执行。

    提交事务

    commit表示提交事务,即提交事务的所有操作。

    撤销事务

    rollback表示撤销事务,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。

    语法格式:

    rollback[transaction]
    

    MySQL 正则表达式

    1. ^匹配输入字符串的开始位置。

    2. $匹配输入字符串的结束位置。

    3. [...]字符集合。匹配所包含的任意一个字符。

    4. [^...]负值字符集合。匹配未包含的任意字符。

    5. *匹配前面的子表达式零次或多次。

    6. +匹配前面的子表达式一次或多次。

    7. {n}n 是一个非负整数。匹配确定的 n 次。

    8. {n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

    sql语句

    sql语句:

    select lastname from persons
    
    1. select从数据库表中获取数据

    2. update更新数据库表中的数据

    3. delete从数据库表中删除数据

    4. insert into向数据库表中那个插入数据

    DDL语句

    • create database创建新数据库

    • alter database修改数据库

    • create table创建新表

    • drop table删除表

    • alter table变更数据库表

    • create index创建索引

    • drop index删除索引


    语句

    SELECT 语句用于从表中选取数据。

    SELECT 列名称 FROM 表名称
    SELECT * FROM 表名称
    SELECT LastName,FirstName FROM Persons
    SQL SELECT DISTINCT 语句
    

    在表中,可能会包含重复值。关键词 DISTINCT 用于返回唯一不同的值。

    语法:

    SELECT DISTINCT 列名称 FROM 表名称
    

    WHERE 子句用于规定选择的标准。

    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
    
    操作符描述
    =等于
    <>不等于
    >大于
    <小于
    >=大于等于
    <=小于等于
    BETWEEN在某个范围内
    LIKE搜索某种模式

    如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

    如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

    ORDER BY 语句用于对结果集进行排序。

    INSERT INTO 语句

    INSERT INTO 表名称 VALUES (值1, 值2,....)
    INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
    

    Update 语句用于修改表中的数据。

    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
    

    DELETE 语句用于删除表中的行。

    DELETE FROM 表名称 WHERE 列名称 = 值
    

    总结

    数据库的发展历程:

    1. 网状型数据库

    2. 层次型数据库

    3. 关系数据库

    4. 面向对象数据库

    关系数据库:

    1. 桌面数据库

    2. 客户/服务器数据库

    数据表是存储数据的逻辑单元。

    数据表中,一行称为一条记录,一列称为一个字段。

    主键:唯一标识此条记录。

    后记

    扫码关注公众号,订阅更多精彩内容。

    推荐文章:

    前端面试必备ES6全方位总结

    展开全文
  • 当下各种关系数据库管理系统

    千次阅读 2009-02-28 14:38:00
    ORACLEMicrosoft SQL Server2005SYBASEINFORMIXDB2INGERSMicrosoft ACCESSVisual FoxProMYSQLOracleOracle是一个最早商品化的关系数据库管理系统,也是应用广泛、功能强大的数据库管理系统。Oracle作为一个通用的...

    ORACLE

    Microsoft SQL Server2005

    SYBASE

    INFORMIX

    DB2

    INGERS

    Microsoft ACCESS

    Visual FoxPro

    MYSQL


    Oracle
    Oracle是一个最早商品化的关系型数据库管理系统,也是应用广泛、功能强大的数据库管理系统。Oracle作为一个通用的数据库管理系统,不仅具有完 整的数据管理功能,还是一个分布式数据库系统,支持各种分布式功能,特别是支持Internet应用。作为一个应用开发环境,Oracle提供了一套界面 友好、功能齐全的数据库开发工具。Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、可伸缩性等功能。特别是在Oracle 8i中,支持面向对象的功能,如支持类、方法、属性等,使得Oracle 产品成为一种对象/关系型数据库管理系统。

    具有良好的兼容性,可移植性,可联结性,高生产率,开放性。

    oracle的产品主要有数据库服务器,开发工具,联结产品。


    Microsoft SQL Server
    Microsoft SQL Server是一种典型的关系型数据库管理系统,可以在许多操作系统上运行,它使用Transact-SQL语言完成数据操作。由于Microsoft SQL Server是开放式的系统,其它系统可以与它进行完好的交互操作。目前最新版本的产品为Microsoft SQL Server 2008,它具有可靠性、可伸缩性、可用性、可管理性等特点,为用户提供完整的数据库解决方案。


    SYBASE

    支持企业内各种数据库应用需求(数据仓库,联机事务处理,决策支持系统,小平台应用),优良的开放结构可以工作在便携机到多处理系统等多种平台上。
    2.Sybase数据库的特点

    (1)它是基于客户/服务器体系结构的数据库
     一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来。
    客户/服务器模型的好处是:它支持共享资源且在多台设备间平衡负载 ,允许容纳多个主机的环境,充分利用了企业已有的各种系统
    (2) 它是真正开放的数据库
     由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其它语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编 译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访 问DB-LIB的应用程序很容易从一个平台向另一个平台移植。
    (3) 它是一种高性能的数据库
     Sybase真正吸引人的地方还是它的高性能。体现在以下几方面:
      可编程数据库
      通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。
      事件驱动的触发器
      触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。
      多线索化
      Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管 理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,把与数据库的连接当作自己的一部分来管理。 此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能


    Microsoft Office
    作为Microsoft Office组件之一的Microsoft Access是在Windows环境下非常流行的桌面型数据库管理系统。使用Microsoft Access无需编写任何代码,只需通过直观的可视化操作就可以完成大部分数据管理任务。在Microsoft Access数据库中,包括许多组成数据库的基本要素。这些要素是存储信息的表、显示人机交互界面的窗体、有效检索数据的查询、信息输出载体的报表、提高 应用效率的宏、功能强大的模块工具等。它不仅可以通过ODBC与其它数据库相连,实现数据交换和共享,还可以与Word、Excel等办公软件进行数据交 换和共享,并且通过对象链接与嵌入技术在数据库中嵌入和链接声音、图像等多媒体数据。

     

    DB2数据库是IBM公司的产品,DB2数据库核心又称作DB2公共服务器,DBZ数据库采用多进程多线索体系结构,可以运行于多种操作系统之上,并分别根据相应平台环境作了调整和优化,以便能够达到较好的性能。它支持从个人计算机到UNIX服务器、从中小型机到大型机、从IBM到非IBM(HP及SUN UNIX系统等)各种操作平台。DB2数 据库既可以在主机上以主/从方式独立运行,也可以在客户/服务器环境中运行,其中服务平台可以是OS/400、AIX、OS/2、HP UNIX、SUN Solaris等操作系统,客户机平台可以是OS/2或Windows、Dos、AIX、HP UX、SUN Solaris等操作系统。

    DB2数据库的特色如下。

    (1)支持面向对象的编程。DB2支持复杂的数据结构,如无结构文本对象,可以对无结构文本对象进行布尔匹配、最接近匹配和任意匹配等搜索。可以建立用户数据类型和用户自定义函数。

    (2)支持多媒体应用程序。DB2支持大二分对象(BLOB),允许在数据库中存取二进制大对象和文本大对象。其中,二进制大对象可以用来存储多媒体对象。

    (3)支持存储过程和触发器,用户可以在建表时显示地定义复杂的完整性规则。

    (4)支持异构分布式数据库访问和支持数据复制。

    此外,IBM提供了许多开发工具,主要有Visualizer Query、VisualAge和VisualGen等,通过这些功能很强的可视化应用开发工具,可以大幅度地提高软件的开发效率。


    Oracle数据库产品是当前数据库技术的典型代表,Oracle的产品除了数据 库系统外,还有应用系统和开发工具等。目前的Oracle 9是一个面向对象的数据库系统,它既非纯的面向对象的数据库也非纯的关系数据库,它是两者的结合,因此叫做“对象关系数据库”。由于Oracle包括了几 乎所有的数据库技术,因此被认为是未来企业级主选数据库之一。Oracle主要有以下特点。

    (1)对象/关系模型。Oracle使用了对象/关系模型,也就是在完全支持传统 关系模型的基础上,为对象机制提供了有限的支持。Oracle不仅能够处理传统的表结构信息,而且能够管理由C++、Smalltalk 以及其他开发工具生成的多媒体数据类型,如文本、视频、图形和空间对象等。这种做法允许现有软件开发产品与工具软件及Oracle应用软件共存,保护了客 户的投资。

    (2)动态可伸缩性。Oracle引入了连接存储池和多路复用机制,提供了对大型 对象的支持,当需要支持一些特殊数据类型时,用户可以创建软件插件来实现。Oracle 8采用了高级网络技术,提高共享池和连接管理器来提高系统的可括性,容量可从几GB到几百TB,可允许10万用户同时并行访问,Oracle的数据库中每 个表可以容纳1000列,能满足目前数据库及数据仓库应用的需要。

    (3)系统的可用性和易用性。Oracle提供了灵活多样的数据分区功能,一个分 区可以是一个大型表,也可以是索引易于管理的小块,可以根据数据的取值分区,有效地提高了系统操作能力及数据可用性,减少I/O瓶颈。Oracle还对并 行处理进行了改进,在位图索引、查询、排序、连接和一般索引扫描等操作引入并行处理,提高了单个查询的并行度。

    (4)系统的可管理性和数据安全功能。Oracle提供了自动备份和恢复功能,改 进了对大规模和更加细化的分布式操作系统的支持,加强了SQL操作复制的并行性。为了帮助客户有效地管理整个数据库和应用系统,Oracle还提供了企业 管理系统,数据库管理员可以从一个集中控制台拖放式图形用户界面管理Oracle的系统环境。

    (5)对多平台的支持与开放性。网络结构往往含有多个平台,Oracle可以运行 于目前所有主流平台上,如SUN Solarise、Sequent Dynix/PTX、Intel NT、HP UX、DEC UNIX、IBM AIX等。Oracle的异构服务为同其他数据源以及使用SQL和PL/SQL的服务进行通信提供了必要的基础设施。


    MySQL是一个可运行在Windows平台和大多数的Linux平台上的半商业数据库。MySQL的普及很大程度上源于它的宽松,其中MySQL的Windows版本在任何情况下都不免费,而在包括Linux在内的任何UNIX平台下使用MySQL都是免费的。

    MySQL客户库是客户/服务器结构的C语言库,它意味着一个客户能查询驻留在另一台机器的一个数据 库。然而MySQL真正的强项在于该库中的语言包装器,Perl、Pathon和PHP只是一部分。Apache的Web服务器也有许多模块,例如目录存 取文件等允许各种各样的Apache配置信息。使用MySQL,应用程序接口简单、一致并且相当完整,而且多平台ODBC驱动程序都能够自由获得。

    MySQL包含一些与SQL标准不同的转变,大多数被设计成是对SQL脚本语言的不足的一种补充。但 是另一些扩展确实使 MySQL与众不同,例如LINK子句搜索是自动地忽略大小写的。而且MySQL也允许用户自定义SQL函数,也就是一个程序员可以编写一个函数然后集成 到MySQL中,其表现与任何基本函数没有什么不同。

    MySQL可以说是数据库领域的中间派,它缺乏一个全功能数据库的大多数主要特征,但是又有比类似 Xbase记录存储引擎更多的特征。它需要一个服务守护程序,但是不像它们那样消费资源;查询语言允许复杂的连接查询,但是MySQL的主要的缺陷之一是 缺乏标准的参考完整性机制,所有的参考完整必须由程序员强制保证。可能有些数据库管理员会觉得系统缺乏主要数据库功能,但是MySQL对简单数据库是有其 价值的。


    开放性:    
      SQL   Server   只能在windows   上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT   server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据量的关键 业务时.    
      Oracle   能在所有主流平台上运行(包括   windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。  
      DB2   能在所有主流平台上运行(包括windows)。最适于海量数据。DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%.    
       
      可伸缩性,并行性    
      SQL   server   DB2   并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限。  
      Oracle   平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方  案。   如果windowsNT不能满足需要,   用户可以把数据库移到UNIX中。    
      DB2   DB2具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境.   数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日   志。数据库分区有时被称为节点或数据库节点    
       
      安全性    
      SQL   server   没有获得任何安全证书。    
      Oracle   Server   获得最高认证级别的ISO标准认证。    
      DB2   获得最高认证级别的ISO标准认证。    
       
      性能    
      SQL   Server   多用户时性能不佳    
      Oracle   性能最高,   保持windowsNT下的TPC-D和TPC-C的世界记录。    
      DB2   适用于数据仓库和在线事物处理   性能较高。    
       
      客户端支持及应用模式    
      SQL   Server   C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB   ,ODBC连接.    
      Oracle   多层次网络计算,支持多种工业标准,可以用ODBC,   JDBC,OCI等网络客户连接    
      DB2   跨平台,多层结构,支持ODBC,JDBC等客户    
       
      操作简便    
      SQL   Server   操作简单,但只有图形界面.    
      Oracle   较复杂,   同时提供GUI和命令行,在windowsNT和unix下操作相同    
      DB2   操作简单,同时提供GUI和命令行,在windowsNT和unix下操作相同    
       
      使用风险    
      SQL   server   完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容早期产品。使用需要冒一定风险。    
      Oracle   长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。  
      DB2   在巨型企业得到广泛的应用,向下兼容性好。风险小。

    展开全文
  • mySQL (关系数据库管理系统

    千次阅读 2017-03-13 08:32:00
    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品。MySQL 是最流行的关系型数据库管理系统之一,...MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将...
    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
    MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
    MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
    由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
     

    应用环境

    与其他的大型数据库
    LAMPLAMP
    例如 Oracle、DB2、SQL Server等相比,MySQL 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQ L是开放源码软件,因此可以大大降低总体拥有成本。
    Linux作为操作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合[3]  。
     

    系统特性

    1.使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
    2.支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
    3.为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
    4.支持多线程,充分利用 CPU 资源。
    5.优化的 SQL查询算法,有效地提高查询速度。
    6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
    7.提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。
    8.提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
    9.提供用于管理、检查、优化数据库操作的管理工具。
    10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
    11.支持多种存储引擎。
    12.MySQL 是开源的,所以你不需要支付额外的费用。
    13.MySQL 使用标准的 SQL数据语言形式。
    14.MySQL 对 PHP 有很好的支持,PHP是目前最流行的 Web 开发语言。
    15.MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统。
    16.在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6[4]  新增)
    17.复制全局事务标识,可支持自我修复式集群(5.6[4]  新增)
    18.复制无崩溃从机,可提高可用性(5.6[4]  新增)
    19.复制多线程从机,可提高性能(5.6[4]  新增)
    20.3倍更快的性能(5.7[5]  新增)
    21.新的优化器(5.7[5]  新增)
    22.原生JSON支持(5.7[5]  新增)
    23.多源复制(5.7[5]  新增)
    24.GIS的空间扩展(5.7[5]  新增)
     

    存储引擎

    MyISAMMySQL 5.0 之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务
    InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定, MySQL 5.5 起成为默认数据库引擎
    BDB源 自 Berkeley DB,事务型数据库的另一种选择,支持Commit 和Rollback 等其他事务特性
    Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在 MySQL 重新启动时丢失
    Merge将一定数量的 MyISAM 表联合而成一个整体,在超大规模数据存储时很有用
    Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive 拥有高效的插入速度,但其对查询的支持相对较差
    Federated将不同的 MySQL 服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用
    Cluster/NDB高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用
    CSV: 逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个 .csv 文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV 存储引擎不支持索引。
    BlackHole:黑洞引擎,写入的任何数据都会消失,一般用于记录 binlog 做复制的中继
    EXAMPLE 存储引擎是一个不做任何事情的存根引擎。它的目的是作为 MySQL 源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE 存储引擎不支持编索引。
    另外,MySQL 的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。
     

    应用架构

    Mysql架构及应用
    Mysql架构及应用(3张)
    单点(Single),适合小规模应用
    复制(Replication),适合中小规模应用
    集群(Cluster),适合大规模应用
     

    索引功能

    索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程度上弥补这一缺陷,许多 SQL 命令都有一个 DELAY_KEY_WRITE 项。这个选项的作用是暂时制止 MySQL 在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE 选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
    从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但 MySQL 把同一个数据表里的索引总数限制为16个。
    1.InnoDB 数据表的索引
    与 InnoDB数据表相比,在 InnoDB 数据表上,索引对 InnoDB 数据表的重要性要大得多。在 InnoDB 数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE 命令以及 INSERT、UPDATE 和 DELETE 命令。出于效率方面的考虑,InnoDB 数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。
    2.限制
    如果 WHERE 子句的查询条件里有不等号(WHERE coloum !=),MySQL 将无法使用索引。类似地,如果 WHERE 子句的查询条件里使用了函数(WHERE DAY(column)=),MySQL 也将无法使用索引。在 JOIN 操作中(需要从多个数据表提取数据时),MySQL 只有在主键和外键的数据类型相同时才能使用索引。
    如果 WHERE 子句的查询条件里使用比较操作符 LIKE 和 REGEXP,MySQL 只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是 LIKE 'abc%‘,MySQL 将使用索引;如果查询条件是 LIKE '%abc’,MySQL 将不使用索引。
    在 ORDER BY 操作中,MySQL 只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快 ORDER BY 方面也没什么作用)。如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如 “0/1” 或 “Y/N” 等值,就没有必要为它创建一个索引。
     

    索引类别

    1.普通索引
    普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHERE column =)或排序条件(ORDER BY column)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。
    2.唯一索引
    普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个“员工个人资料”数据表里可能出现两次或更多次。
    如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE 把它定义为一个唯一索引。这么做的好处:一是简化了 MySQL 对这个索引的管理工作,这个索引也因此而变得更有效率;二是 MySQL 会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL 将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。
    3.主索引
    在前面已经反复多次强调过:必须为主键字段创建一个索引,这个索引就是所谓的“主索引”。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是 PRIMARY 而不是 UNIQUE。
    4.外键索引
    如果为某个外键字段定义了一个外键约束条件,MySQL 就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。
    5.复合索引
    索引可以覆盖多个数据列,如像 INDEX (columnA, columnB) 索引。这种索引的特点是 MySQL 可以有选择地使用一个这样的索引。如果查询操作只需要用到 columnA 数据列上的一个索引,就可以使用复合索引 INDEX(columnA, columnB)。不过,这种用法仅适用于在复合索引中排列在前的数据列组合。比如说,INDEX (A,B,C) 可以当做 A 或 (A,B) 的索引来使用,但不能当做 B、C 或 (B,C) 的索引来使用。
     

    索引长度

    在为 CHAR 和 VARCHAR 类型的数据列定义索引时,可以把索引的长度限制为一个给定的字符个数(这个数字必须小于这个字段所允许的最大字符个数)。这么做的好处是可以生成一个尺寸比较小、检索速度却比较快的索引文件。在绝大多数应用里,数据库中的字符串数据大都以各种各样的名字为主,把索引的长度设置为10~15 个字符已经足以把搜索范围缩小到很少的几条数据记录了。在为 BLOB 和 TEXT 类型的数据列创建索引时,必须对索引的长度做出限制;MySQL 所允许的最大索引全文索引文本字段上的普通索引只能加快对出现在字段内容最前面的字符串(也就是字段内容开头的字符)进行检索操作。如果字段里存放的是由几个、甚至是多个单词构成的较大段文字,普通索引就没什么作用了。这种检索往往以的形式出现,这对 MySQL 来说很复杂,如果需要处理的数据量很大,响应时间就会很长。
    这类场合正是全文索引(full-textindex)可以大显身手的地方。在生成这种类型的索引时,MySQL 将把在文本中出现的所有单词创建为一份清单,查询操作将根据这份清单去检索有关的数据记录。全文索引即可以随数据表一同创建,也可以等日后有必要时再使用下面这条命令添加:
    ALTER TABLE tablename ADD FULLTEXT(column1,column2)有了全文索引,就可以用 SELECT 查询命令去检索那些包含着一个或多个给定单词的数据记录了。下面是这类查询命令的基本语法:
    SELECT * FROM tablename
    WHERE MATCH (column1,column2) AGAINST('word1','word2','word3')
    上面这条命令将把 column1 和 column2 字段里有 word1、word2 和 word3 的数据记录全部查询出来。
    注解:InnoDB 数据表不支持全文索引。
     

    查询和索引

    只有当数据库里已经有了足够多的测试数据时,它的性能测试结果才有实际参考价值。如果在测试数据库里只有几百条数据记录,它们往往在执行完第一条查询命令之后就被全部加载到内存里,这将使后续的查询命令都执行得非常快--不管有没有使用索引。只有当数据库里的记录超过了 1000 条、数据总量也超过了 MySQL 服务器上的内存总量时,数据库的性能测试结果才有意义。
    在不确定应该在哪些数据列上创建索引的时候,人们从 EXPLAIN SELECT 命令那里往往可以获得一些帮助。这其实只是简单地给一条普通的 SELECT 命令加一个 EXPLAIN 关键字作为前缀而已。有了这个关键字,MySQL 将不是去执行那条 SELECT 命令,而是去对它进行分析。MySQL 将以表格的形式把查询的执行过程和用到的索引等信息列出来。
    在 EXPLAIN 命令的输出结果里,第1列是从数据库读取的数据表的名字,它们按被读取的先后顺序排列。type列指定了本数据表与其它数据表之间的关联关系(JOIN)。在各种类型的关联关系当中,效率最高的是 system,然后依次是 const、eq_ref、ref、range、index 和 All(All 的意思是:对应于上一级数据表里的每一条记录,这个数据表里的所有记录都必须被读取一遍——这种情况往往可以用一索引来避免)。
    possible_keys 数据列给出了 MySQL 在搜索数据记录时可选用的各个索引。key 数据列是 MySQL 实际选用的索引,这个索引按字节计算的长度在 key_len 数据列里给出。比如说,对于一个 INTEGER 数据列的索引,这个字节长度将是4。如果用到了复合索引,在 key_len 数据列里还可以看到 MySQL 具体使用了它的哪些部分。作为一般规律,key_len 数据列里的值越小越好。
    ref 数据列给出了关联关系中另一个数据表里的数据列的名字。row 数据列是 MySQL 在执行这个查询时预计会从这个数据表里读出的数据行的个数。row 数据列里的所有数字的乘积可以大致了解这个查询需要处理多少组合。
    最后,extra 数据列提供了与 JOIN 操作有关的更多信息,比如说,如果 MySQL 在执行这个查询时必须创建一个临时数据表,就会在 extra 列看到 usingtemporary 字样。
     

    安装教程

    打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup.exe”
    mysql安装向导启动,按“Next”继续,
    选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择“Custom”,有更多的选项,也方便熟悉安装过程:
    在“Developer Components(开发者部分)”上左键单击,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。在上面的“MySQL Server(mysql服务器)”、“Client Programs(mysql客户端程序)”、“Documentation(文档)”也如此操作,以保证安装所有文件。点选“Change...”,手 动指定安装目录。
    填上安装目录,我的是“F:\Server\MySQL\MySQL Server 5.0”,也建议不要放在与操作系统同一分区,这样可以防止系统备份还原的时候,数据被清空。按“OK”继续。
    返回刚才的界面,按“Next”继续
    确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。
    正在安装中,请稍候,直到出现下面的界面
    这里是询问你是否要注册一个账号,或是使用已有的账号直接登陆,一般不需要了,点选“Skip Sign-Up”,按“Next”略过此步骤。
    软件安装完成后,出现上面的界面,这里有一个很好的功能,mysql配置向导,不用向 以前一样,自己手动乱七八糟的配置my.ini了,将 “Configure the Mysql Server now”前面的勾打上,点“Finish”结束软件的安装并启动mysql配置向导。
    mysql配置向导启动界面,按“Next”继续
    选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
    选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“DedicatedMySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”,大家根据自己的类型选择了,一般选“Server Machine”,不会太少,也不会占满。
    选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),随自己的用途而选 择了,我这里选择“Transactional Database Only”,按“Next”继续。
    对InnoDB Tablespace进行配置,就是为InnoDB 数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,这里 不详述。我这里没有修改,使用用默认位置,直接按“Next”继续
    选择您的网站的一般mysql访问量,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”,我这里选“Online Transaction Processing(OLTP)”,自己的服务器,应该够用了,按“Next”继续
    是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数 据库了,我这里启用,把前面的勾打上,Port Number:3306,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。如果您还是个新手,我建议您取消标准模式以减少麻烦。但熟悉MySQL以后,尽量使用标准模式,因 为它可以降低有害数据进入数据库的可能性。按“Next”继续
    西文编码,第二个是多字节的通用utf8编码,都不是我们通用的编码,这里选择第三个,然 后在Character Set那里选择或填入“gbk”,当然也可以用“gb2312”,区别就是gbk的字库容量大,包括了gb2312的所有汉字,并且加上了繁体字、和其它 乱七八糟的字——使用mysql的时候,在执行数据操作命令之前运行一次“SET NAMES GBK;”(运行一次就行了,GBK可以替换为其它值,视这里的设置而定),就可以正常的使用汉字(或其它文字)了,否则不能正常显示汉字。按 “Next”继续。[6] 
    选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),我这里全部打上了勾,Service Name不变。按“Next”继续。
    这一步询问是否要修改默认root用户(超级管理)的密码(默认为空),“New root password”如果要修改,就在此填入新密码(如果是重装,并且之前已经设置了密码,在这里更改密码可能会出错,请留空,并将“Modify Security Settings”前面的勾去掉,安装配置完成后另行修改密码),“Confirm(再输一遍)”内再填一次,防止输错。 “Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。
    确认设置无误,如果有误,按“Back”返回检查。按“Execute”使设置生效。
    设置完毕,按“Finish”结束mysql的安装与配置——这里有一个比较常见的错误, 就是不能“Start service”,一般出现在以前有安装mysql的服务器上,解决的办法,先保证以前安装的mysql服务器彻底卸载掉了;不行的话,检查是否按上面一 步所说,之前的密码是否有修改,照上面的操作;如果依然不行,将mysql安装目录下的data文件夹备份,然后删除,在安装完成后,将安装生成的 data文件夹删除,备份的data文件夹移回来,再重启mysql服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。
     

    安装问题

    1.如果是用 MySQL + Apache,使用的又是 FreeBSD 网络操作系统的话,安装时候你应按注意到FreeBSD的版本问题,在 FreeBSD 的 3.0 以下版本来说,MySQL Source 内含的 MIT-pthread 运行是正常的,但在这版本以上,你必须使用 native threads,也就是加入一个 with-named-thread-libs=-lc_r 的选项。
    2.如果在 COMPILE 过程中出了问题,请先检查你的 gcc版本是否在 2.81 版本以上,gmake 版本是否在3.75以上。
    3.如果不是版本的问题,那可能是你的内存不足,请使用 ./configure--with-low-memory 来加入。
    4.如果要重新做你的 configure,那么你可以键入 rm config.cache 和 make clean 来清除记录。
    5.把 MySQL 安装在 /usr/local 目录下,这是缺省值,您也可以按照你的需要设定你所安装的目录。
     

    MySQL服务无法启动

    1、首先,查看MySQL的服务是否存在。如果不存在需要先安装服务。安装服务的方法是进入MySQL Server的安装目录,找到bin目录,然后找到文件mysqld.exe,使用命令行运行 mysqld --install MySQL57 安装服务(如果不成功尝试使用管理员方式运行,MySQL57是服务的名字,默认是MySQL)。
    MySQL服务无法启动MySQL服务无法启动
    2、如果上述方法安装服务失败,则可采用下述方法安装(成功则跳过此步)。搜索程序“regedit.exe”,即注册表 器,打开后找到 “计算机”——"HKEY_LOCAL_MACHINE"——“SYSTEM”——“CurrentControlSet”——“Services”,然后在该目录下新建项MySQL57(服务的名字)即可成功建立项目。
    3、找到新建的项,然后可以看到其中有ImagePath这一项,这其实是可执行文件的路径。因为MySQL服务是需要靠mysqld这个命令来启动的,所以检查下ImagePath的路径是否正确。路径错误导致启动服务时报错—“无法找到文件”。
    4、修改ImagePath的内容为正确的路径值,正确的值是"D:\MySQL\MySQL Server 5.7\bin\mysqld" --defaults-file="D:\MySQL\MySQL Server 5.7\my.ini" MySQL 是这种形式的,对照一下,如果路径不对,修改过来。
    5、重启计算机,再次启动服务,并可以成功运行MySQL服务。[7] 
     

    报错解决

    1.Starting MySQL.Manager of pid-file quit without updating fi[失败]
    关于这个错误原因有很多,最大的可能是没有创建测试数据库,可以用/usr/local/mysql/scripts/mysql_install_db –user=mysql命令进行创建;另外一个原因可能是权限设置问题,需要赋予mysql的data权限,可以用chmod -R 命令。
    2.FATAL ERROR: Could not find /home/mysql/bin/my_print_defaults If you are using a binary release,you must run this script from
    within the directory the archive extracted into. If you compiled
    MySQL yourself you must run ‘make install’ first.
    这个错误,是没有指明mysql的data路径导致的,可以很简单的进行解决:
    vim /etc/my.cnf
    在[mysqld] 后面加上路径:
    basedir = /usr/local/mysql
    datadir =/opt/data;
    3.-bash: mysql: command not found
    用mysql命令进行登陆mysql报错,原因是没有设置环境变量,需要设置,或者进入到bin目录进行登陆cd /usr/local/mysql/bin
    mysql -u root
    4.ERROR 1130: Host ’192.168.1.3′ is not allowed to connect to this MySQL server
    用mysql远程工具链接数据库报错,这个错误原因是没有开放远程链接功能,可以在mysql里面输入如下命令进行解决:GRANT ALL PRIVILEGES ON *.* TO ’root‘@’%' IDENTIFIED BY ’password’ WITH GRANT OPTION
     

    初学基础

     

    连接 MySQL

    格式:mysql -h 主机地址 -u 用户名 -p 用户密码
    1.例1:连接到本机上的MYSQL。
    首先在打开 DOS 窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root 是没有密码的,故直接回车即可进入到 MySQL 中了,MySQL 的提示符是:mysql>
    2.例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
    mysql -h110.110.110.110 -uroot -pabcd123
    (注:u与root可以不用加空格,其它也一样)
    3.退出 MySQL 命令:exit (回车)
    注意:想要成功连接到远程主机,需要在远程主机打开MySQL远程访问权限
    方法如下:
    在远程主机中以管理员身份进入
    输入如下命令
    mysql>GRANT ALL PRIVILEGES ON *.* TO 'agui'@%'IDENTIFIEDBY '123' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    //赋予任何主机访问数据的权限
    mysql>FLUSH PRIVILEGES
    //修改生效
    agui为我们使用的用户名
    密码为 123
    即:在远程主机上作好设置,我们即可通过mysql -h110.110.110.110 -uagui -p123连接进远程主机
     

    修改密码

    格式:mysqladmin -u用户名 -p旧密码 password 新密码
    1.例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令
    mysqladmin -uroot -password ab12
    注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
    2.例2:再将root的密码改为djg345。
    mysqladmin -uroot -pab12 password djg345
     

    增加新用户

    (注意:和上面不同,下面的因为是 MySQL 环境中的命令,所以后面都带一个分号作为命令结束符)
    格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”
    例1、增加一个用户 test1 密码为 abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以 root 用户连入 MySQL,然后键入以下命令:
    grant select,insert,update,delete on *.* to test1@“%” Identified by “abc”;
    但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。
    例2、增加一个用户 test2 密码为 abc,让他只可以在 localhost 上登录,并可以对数据库 mydb 进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
    grant select, insert, update, delete on mydb.* to test2@localhost identified by “abc”;
    如果你不想 test2 有密码,可以再打一个命令将密码消掉。
    grant select, insert, update, delete on mydb.* to test2@localhost identified by “”;
    下面来看看 MySQL 中有关数据库方面的操作。注意:必须首先登录到 MySQL 中,以下操作都是在 MySQL 的提示符下进行的,而且每个命令以分号结束。
     

    操作技巧

    1.如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就 OK。
    2.你可以使用光标上下键调出以前的命令。但以前我用过的一个 MySQL 旧版本不支持。我用的是mysql-3.23.27-beta-win。
     

    显示命令

    1.显示数据库列表。
    show databases;
    刚开始时才两个数据库:mysql 和 test。mysql 库很重要它里面有 MySQL 的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
    2.显示库中的数据表:
    use mysql; //打开库,学过 FOXBASE 的一定不会陌生吧
    show tables;
    3.显示数据表的结构:
    describe 表名;
    4.建库:
    create database 库名;
    5.建表:
    use 库名;
    create table 表名 (字段设定列表);
    6.删库和删表:
    drop database 库名;
    drop table 表名;
    7.将表中记录清空:
    delete from 表名;
    8.显示表中的记录:
    select * from 表名;
    9.显示最后一个执行的语句所产生的错误、警告和通知:
    show warnings;
    10.只显示最后一个执行语句所产生的错误:
    show errors;
     

    实例

    drop database if exists school; //如果存在SCHOOL则删除
    create database school; //建立库SCHOOL
    use school; //打开库SCHOOL
    create table teacher //建立表TEACHER
    (
    id int(3) auto_increment not null primary key,
    name char(10) not null,
    address varchar(50) default ‘深圳',
    year date
    ); //建表结束
    //以下为插入字段
    insert into teacher values('','glchengang',’XX公司‘,'1976-10-10');
    insert into teacher values('','jack',’XX公司‘,'1975-12-23');
    注:在建表中:
    1.将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key。
    2.将NAME设为长度为10的字符字段。
    3.将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。
    4.将YEAR设为日期字段。
    如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\下,并在DOS状态进入目录\mysql\bin,然后键入以下命令:
    mysql -uroot -p密码 < c:\school.sql
    如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。
     

    文本转到数据库

    1.文本数据应符合的格式:字段数据之间用tab键隔开,null值用\n来代替.
    例:
    3.rose 深圳二中 1976-10-10
    4.mike 深圳一中 1975-12-23
    2.数据传入命令 load data local infile “文件名” into table 表名;
    注意:你最好将文件复制到\mysql\bin目录下,并且要先用use命令打开表所在的数据库
    或者登录数据库前将路径转移(cd)到要导入文本所在路径。
     

    备份数据库

    (命令在DOS的\mysql\bin目录下执行)
    mysqldump --opt school>school.bbb
    注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。
    自动备份 mysql 数据库的方法
    1、先是建立批处理文件,将以下代码另存为.bat文件,文件名最好为英文。注意下面的路径,以笔者自己的数据库为例,数据库安装在D盘下mysql\mysql下,备份位置在F:\beifen,后面的代码是日期[8]  。
    @echo off[9] 
    color 0D
    MODE con: COLS=71 LINES=25
    title mysql数据库自动备份脚本(任务计划)--脚本作者:http://www。***。com
    set sou_dir="D:\mysql\Mysql\data"
    set obj_dir=F:\beifen\%date:~0,10%
    net stop mysql
    md %obj_dir%
    xcopy /e /y %sou_dir% %obj_dir%
    net start mysql
    @echo off&setlocal enabledelayedexpansion
    call:D,30
    echo. 30天前日期为:%D%
    echo. 删除30天以前备份......
    if exist F:\beifen\%D% rd /s /q F:\beifen\%D%
    echo 自动备份完成,程序将自动退出......
     

    还原/导入

    还原/导入数据库[10]  ,导入过程,进入 mysql 数据库控制台,如 mysql -u root -p
    mysql>use 数据库
    然后使用 source 命令,后面参数为脚本文件(如这里用到的.sql)
    mysql>source d:\dbname.sql
    如果提示找不到文件,输完 source 后,可以用鼠标把文件直接拖进命令行窗口
     

    启动跟踪文件

    mysqld --debug
     

    关闭服务器

    mysqladmin -u root shutdown
     

    启动MySQL服务

    mysqld --console
     

    安全设置

    一、内部安全性-保证数据目录访问的安全
    1.1数据库文件。
    1.2日志文件。
    二、外部安全性-保证网络访问的安全
    2.1 MySQL 授权表的结构和内容
    2.2 服务器控制客户访问
    2.3 避免授权表风险
    2.4 不用 GRANT设置用户
     

    管理工具

    可以使用命令行工具管理 MySQL 数据库(命令 mysql 和 mysqladmin),也可以从 MySQL 的网站下载图形管理工具 MySQL Administrator, MySQL Query Browser 和 MySQL Workbench。
    phpMyAdmin是由 php 写成的 MySQ L资料库系统管理程程序,让管理者可用 Web 界面管理 MySQL 资料库。
    phpMyBackupPro也是由 PHP 写成的,可以透过 Web 界面创建和管理数据库。它可以创建伪 cronjobs,可以用来自动在某个时间或周期备份 MySQL 数据库。
    另外,还有其他的 GUI 管理工具,例如 mysql-front 以及 ems mysql manager, navicat等等。
     

    解决方法

    MySQL 中文排序错误的解决方法
     

    方法1

    在 MySQL 数据库中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在 MySQL 的很多版本中都存在。如果这个问题不解决,那么 MySQL 将无法实际处理中文。
    出现这个问题的原因是:MySQL 在查询字符串时是大小写不敏感的,在编绎 MySQL 时一般以 ISO-8859 字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,一种解决方法是对于包含中文的字段加上 "binary" 属性,使之作为二进制比较,例如将 "name char(10)" 改成 "name char(10)binary"。
     

    方法2

    如果你使用源码编译 MySQL,可以编译 MySQL 时使用 --with--charset=gbk 参数,这样 MySQL 就会直接支持中文查找和排序了。[6] 
     

    授权问题

     

    授权协议

    MySQL 遵守的不只是 GPL 协议,而是双授权模式(dual license)[11]  即你在遵守 GPL 协议的开源项目使用 MySQL,需要遵守 GPL 协议方能使用。如果你在非开源项目使用(即软件不打算开放源代码),且该软件用来销售,则需要向 MySQL 支付相应 license 费用。[12] 
     

    文件手册bug

    在 5.5.31 版本时人们发现 Oracle 取消了其中的 GPL 协议,造成了一定的不安。有开发者在 MySQL 程序臭虫网站上举报这项授权错误问题,随即 MySQL 工程服务总监 Yngve Svendsen 在网站上坦言,这的确是一个文件臭虫,因为 man 手册程序重新编译时套用了错误的授权内容。[13]  不过仍然有人认为,Oracle 取消开源授权改采商业授权的“这一天迟早是要到来的”,并寻求其他代替方案。[14] 
     

    安装 MySQL 5.5

    1、运行 mysql 安装文件;
      2、按 Next,然后选择安装方式,有 "Typical(默认)"、"Complete(完全)"、"Custom(用户自定义)",选择第二个选项 "Custom",下一步, MySQL Server (mysql服务器), Developer Components (开发者部分), Debug Symbols (调试符号), Server data files (服务器数据文件) 默认;
      3、改变安装路径;原路径是"C:\Program Files\MySQL\MySQL Server 5.5\",也可以修改为:"E:\Program Files\MySQL Server 5.5\"。下一步,安装,会弹出窗口,点下一步,再点下一步,选择"Launch the MySql instance Configuration Wizard",意思是启动MySQL实例配置向导,再点击Finish,再点下一步,Detailed Configuration(详细配置)和Standard Configuration(标准配置),选择详细配置,下一步;
      4、选择服务器类型,"Developer Machine(开发测试类,mysql占用很少资源)"、"Server Machine(服务器类型,mysql占用较多资源)"、"DedicatedMySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)",根据自己的类型选择,测试软件选"Developer Machine",服务器选"Server Machine",下一步;
      5、选择创建 MySQL表时使用的表处理器,"Multifunctional Database"(通用多功能型,好,同时使用InnoDB和 MyISAM 储存引擎)、"Transactional Database Only"(服务器类型,专注于事务处理,主要使用 InnoDB 只偶尔使用 MyISAM,一般)、"Non-Transactional DatabaseOnly"(非事务处理型,较简单,完全禁用 InnoDB 储存引擎,将所有服务器资源指派给 MyISAM 储存引擎),随自己的用途而选择。[15] 
     

    替代方案

    随着 MySQL 被 Oracle 收购,MySQL 的用户和开发者开始质疑开源数据库的命运,与此同时他们开始寻找替代品。
    有文章写到了放弃 MySQL 的五大理由:[16] 
    1. MySQL 不如其它关系型数据库管理系统那样成熟;
    2. MySQL 是开源的...但只有近似而已;
    3. MySQL 的性能无法与竞争对手相提并论;
    4. MySQL 是 Oracle 所有的,而不是社区驱动的;
    5. 越来越多的强劲对手。
     

    MariaDB

    从 MySQL 转向 MariaDB的代表厂家:谷歌(2013年9月)、RedHat(2013年6月)、维基百科(2013年4月)
    MySQL 在 2008 年被Sun以10亿美金所收购,MySQL 创始人 Michael Widenius 则不满 Sun 开发团队脚步过慢,愤而离职成立开源数据库联盟,另外从现有 MySQL 程序代码中,开发出另一个延伸分支版本,也就是名为玛莉亚数据库的企业级开源数据库[14]  。
    玛莉亚数据库如同 MySQL 的影子版本,玛莉亚数据库是 MySQL 的一个分支版本(branch),而不是衍生版本(folk),提供的功能可和 MySQL 完全兼容。
     

    PostgreSQL

    从 MySQL 转向 PostgreSQL的代表厂家:苹果(2011年)
    PostgreSQL是一个自由的对象-关系数据库服务器(数据库管理系统)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言。并且,因为许可证的灵活,任何人都可以以任何目的免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。
    PostgreSQL 也受 NoSQL 思想的启发,希望能够在今后可以给使用者更多可定制可调节的功能(不是说这个成熟的关系性数据库系统要向 NoSQL 转变)。
     

    NoSQL

    NoSQL(NoSQL = Not Only SQL),意即“不仅仅是 SQL”,是一项全新的数据库革命性运动。NoSQL指的是非关系型的数据库。随着互联网 web2.0网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。
    其代表的开源软件如:Membase、MongoDB、Hypertable、Apache Cassandra、CouchDB等。
     

    Oracle 免费版

    Oracle自 Oracle 10g 后推出对应的免费版。
     

    远程访问 MySQL

    1:将 localhost 改成 "%"
    修改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改成"%"
    mysql>use mysql;
    mysql>update user set host = '%' where user = 'root';
    mysql>select host, user from user;
    mysql>FLUSH PRIVILEGES;
    2:使用 myuser/mypassword 从任何主机连接到 mysql 服务器:
    GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
    使用myuser/mypassword从ip为192.168.225.166的主机连接到mysql服务器:
    GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.225.166' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
    3:泛授权
    mysql -h localhost -u root
    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; //赋予任何主机上以root身份访问数据的权限
    mysql>FLUSH PRIVILEGES;[17] 
     

    MySQL Server 新特性

    1. 表和索引的分区
    2. 行级复制
    3. MySQL 基群基于磁盘的数据支持
    4. MySQL 集群复制
    5. 增强的全文本搜索函数
    6. 增强的信息模式(数据字典)
    7. 可插入的 API
    8. 服务器日志表
    9. XML(标准通用标记语言的子集)/ XPath支持
    10. 实例管理器
    11. 表空间备份
    12. mysql_upgrade 升级程序
    13. 内部任务/事件调度器
    14. 新的性能工具和选项如 mysqlslap[3] 
    MySQL PHP 语法
    MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP。 在这些语言中,MySQL 在 PHP 的 web 开发中是应用最广泛。
    在本教程中我们大部分实例都采用了PHP语言。如果你想了解 MySQL 在 PHP 中的应用,可以访问我们的PHP 中使用 MySQL 介绍。
    PHP 提供了多种方式来访问和操作 MySQL 数据库记录。PHP MySQL 函数格式如下:
    1
    mysql_function(value,value,...);
    1
    2
    3
    4
    5
    以上格式中function部分描述了mysql函数的功能,如
    mysqli_connect($connect);
    mysqli_query($connect,"SQLstatement");
    mysql_fetch_array()
    mysql_connect(),mysql_close()
    以下实例展示了PHP调用mysql函数的语法:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <html>
    <head>
     
    </head>
    <body>
    <?php
    $retval=mysql_function(value,[value,...]);
    if(!$retval)
    {
    die("Error:arelatederrormessage");
    }
    //OtherwiseMySQLorPHPStatements
    ?>
    </body>
    </html>

    转载于:https://www.cnblogs.com/xtdxs/p/6540981.html

    展开全文
  • 数据库管理系统

    千次阅读 2018-10-24 00:14:00
    一、数据库管理系统基本功能 数据库管理系统主要是实现对共享数据有效的组织、存储、管理和存取。围绕数据,数据库管理系统的功能为: 1、数据库定义和创建 创建数据库主要是用数据定义语言定义和创建数据库模式、...

    一、数据库管理系统的基本功能

    数据库管理系统主要是实现对共享数据有效的组织、存储、管理和存取。围绕数据,数据库管理系统的功能为:

    1、数据库定义和创建

    创建数据库主要是用数据定义语言定义和创建数据库模式、外模式、内模式等数据库对象。在关系数据库中就是建立数据库(或模式)、表、视图、索引等,还有创建用户、安全保密定义(如用户口令、级别、角色、存取权限)、数据库的完整性定义。这些定义存储在数据字典(亦称为系统目录)中,是数据库管理系统运行的基本依据。

    2、数据组织、存储和管理

    数据库管理系统要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等。要确定以何种文件结构和存取方式在存储器上组织这些数据,以及如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率和方式存取,提高多种存取方法(如索引查找、hash查找、顺序查找等)以提高存取效率。

    3、数据存取

    数据库管理系统提供用户对数据的操作功能,实现对数据库数据的索引、插入、修改和删除。一个友好的关系数据库管理系统应该提供功能强且易学易用的数据操纵语言、方便的操作方式和较高的数据存取效率。数据操纵语言有两类:宿主型语言和自立(独立)型语言。

    4 、数据库事务管理和运行管理

    数据库管理系统的运行控制和管理功能,包括多用户环境下的事务管理功能和安全性、完整性控制功能;数据库恢复、并发控制和死锁检测(或死锁防止)、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理等。这些功能保证了数据库系统的正常运行,保证了事务的ACID特性。

    5、数据库的建立和维护

    包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组织和重构造以及性能检测分析等。

    6、其他功能

    数据库管理系统包括与网络中其他软件的通信功能,一个数据库管理系统与另一个数据库管理系统或文件系统的数据转换功能;异构数据库之间的互访和互操作功能等。

    和操作系统、编译系统等系统软件相比,数据库管理系统具有跨度大、功能多的特点。从最底层的存储管理、缓冲区管理、数据存取操作、语言处理到最外层的用户接口、数据表示、开发环境的支持都是它要实现的功能。

    数据库管理系统的实现,既要充分利用计算机硬件、操作系统、编译系统和网络通信等技术,又要突出对海量数据存储、管理和处理的特点,还要保证其存取数据和运行事务的高效率。

    二、数据库管理系统的系统结构

    1、数据库管理系统的层次结构

    和操作系统一样,可以将数据管理系统划分为若干层次。例如,IBM公司最早研制的著名的关系数据库管理系统实验系统SystemR,其核心分为底层的关系存储系统(RSS)和上层的关系数据系统(RDS)。
    RDS本质上是一个语言和执行层,包括语法检查与分析、优化、代码生成、视图实现、安全性完整性检查等功能。
    RSS则是一个存取方法层,其功能包括空间和设备管理、索引和存取路径管理、事务管理、并发控制、运行日志管理和恢复。
    按照处理对象的不同,依最高级到最低级的次序来划分的码具有普遍性。关系数据库管理系统的层次结构图示:
    关系数据库管理系统的层次结构

    1. 最上层是应用层,位于关系数据库管理系统的核心之外。应用层处理的对象是各种各样的数据库应用,如用开发工具开发的或用嵌入式SQL、存储过程等编写的应用程序,及终端用户通过应用程序接口发出的事务请求或各种查询要求等。该层是关系数据库管理系统与用户/应用程序的界面层。
    2. 第二层是语言处理层。它处理的对象是数据库语言,如SQL;向上提供的数据接口是关系、视图,即元组的集合。该层的功能是对数据库语言的各类语句进行语法分析、视图转换、安全性检查、完整性检查、查询优化等;通过对下层基本模块的调用,生成可执行代码,这些代码的运行即可完成数据库语句的功能要求。
    3. 第三层是数据存取层。该层处理的对象是单个元组,把上层的集合操作转换为单记录操作。该层执行扫描,排序,元组的增删改查,封锁等基本操作;完成数据记录的存取、存取路径维护、数据管理、并发控制和恢复等工作。
    4. 第四层是数据存储层。该层处理的对象是数据页和系统缓冲区,执行文件的逻辑打开、关闭、读页、写页、缓冲区读和写、页面淘汰等操作,完成缓冲区管理、内外存交换、外存的数据管理等功能。
      操作系统是数据库管理系统的基础,它处理的对象是数据文件的物理块,执行物理文件的读写操作,保证数据管理系统对数据逻辑上的读写真实地映射到物理文件上。操作系统提供的存取原语和基本的存取方法通常作为数据库管理系统数据存储层的接口。
    2、关系数据库管理系统的运行过程示例

    关系数据库管理系统是一个复杂而有序的整体。如下图是应用程序/用户通过关系数据库管理系统读取数据库数据的过程:关系数据库管理系统运行示例
    其中,数据字典是数据库的重要组成部分,存储元数据。

    1. 用户A通过应用程序A向关系数据库管理系统发出调用数据库数据的命令。
    2. 关系数据库管理系统首先对命令进行进行语法检查,检查通过后进行语义检查和用户存取权限检查。具体做法是,关系数据库管理系统读取数据字典,检查是否存在该关系及相应的字段、该用户能否读取它们等,确认语义正确、存取权限合法后便决定指定该命令,否则拒绝执行,返回错误信息。
    3. 关系数据库管理系统执行查询优化。优化器要根据数据字典中的信息进行优化,并把该命令转换成一串单记录的存取操作序列。
    4. 关系数据库管理系统执行存取操作序列(反复执行以下各步,直至结束)。
    5. 关系数据库管理系统首先在系统缓冲区查找记录,若找到满足条件的记录则转到10,否则转到6。
    6. 关系数据库管理系统查看存储模式,决定从哪个文件、用什么方式读取哪个物理记录。
    7. 关系数据库管理系统根据6的结果,向操作系统发出读取记录的命令。
    8. 操作系统执行读取数据的相关操作。
    9. 操作系统将数据从数据库的存储去送至系统缓冲区。
    10. 关系数据库管理系统根据查询命令和数据字典的内容导出用户所要读取的记录格式。
    11. 关系数据库管理系统将数据记录从系统缓冲区传送到应用程序A的用户工作区。
    12. 关系数据库管理系统将执行状态信息。如成功读取或不成功的错误指示、例外状态信息等返回给应用程序A。
      根据数据库管理系统层次结构,可以将以上操作对应相应的层次:
      应用层: 1
      语言处理层:2、3
      数据存取层:4、10、11、12
      数据存储层:5、6、7
      操作系统:8、9

    整个关系数据库管理系统的各层模块相互配合、互相依赖,共同完成对数据库的操纵。

    展开全文
  • 1.什么是数据库? 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据...数据库管理系统(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统 ...
  • 数据库 数据库系统 数据库管理系统

    千次阅读 2019-11-10 08:32:32
    图书管理系统 数据库系统是计算机科学与软件工程学科的核心课程,由IEEE/ACM组织联合制定的计算机类课程。CS2013提出了18个知识领域,信息管理是重要的知识领域,信息管理的核心为数据库系统。 现在社会是大数据...
  • 关系数据库管理系统(RDBMS)

    千次阅读 2010-03-25 11:38:00
    数据库管理系统关系模型数据的基础项是关系在这些表上的操作只产生关系 一个关系表必须符合某些特定条件,才能成为关系模型的一部分储存在单元中的数据必须是原子的。 每个单元只能存储一条数据,叫信息原则...
  • 文章目录1 实体的概念与数据库1.1 数据库的特点1.2 实体存储的的基本单元2 数据库管理系统2.1 DBMS的概念2.2 DBMS的功能2.3 应用程序与DBMS3 SQL与T-SQL3.1 SQL与SQL3.2 T-SQL的组成 1 实体的概念与数据库 1.1 ...
  • mySQL(关系数据库管理系统)编辑

    万次阅读 2014-11-05 18:35:24
    收藏 2906 1034 ...mySQL(关系型数据库管理系统)编辑 ...MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational ... Database Management System:关系数据库管理系统)应用
  • 四大基本概念(1)数据--Data① 数据的定义② 数据的种类③ 数据的特点④ 数据举例(2)数据库--Database① 数据库的定义② 数据库的基本特征(3数据库管理系统--DataBase Management System① 什么是DBMS?...
  • 本文关键字:DB、DBMS、SQL、图形界面工具。刚刚接触数据库的小伙伴可能会对几个名词混淆不清,一上来又是命令又是工具的,这篇文章帮大家来明确一下这几个概念之间的关系
  • 关系数据库管理系统简介

    千次阅读 2015-12-28 21:19:37
    1.1 为什么使用数据库? 所谓数据库,就是在计算机上集中存放数据的地方。 数据库集中式控制的优点: *降低存储数据的冗余度; *更高的数据一致性; *存储的数据可以共享; *可以建立数据库所遵循的标准; ...
  • 数据库课程设计 ——酒店管理系统

    万次阅读 多人点赞 2019-05-31 10:36:11
    (1)酒店管理系统用于满足酒店工作人员和管理人员的需求。 (2)酒店管理人员和工作人员可以为酒店房间加入入住和退房记录,并生成相应的报表用于查阅,确认和保存,酒店工作人员可以浏览、查询、统计、添加酒店...
  • 数据库系统包括:数据库应用系统,数据库管理系统和数据库。 数据库系统 ——DMS; 数据库应用系统——DBAS; 数据库管理系统——DBMS; 数据库——DB; 常用数据模型 层次模型:最早使用的一数据库系统模型...
  • 一、什么是数据库? 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的...数据库管理系统(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统 ...
  • 一、关于数据库 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件...数据库管理系统(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统一般具有存储...
  • 数据、数据库、数据库管理系统、数据库系统

    万次阅读 多人点赞 2018-07-19 21:34:56
    数据库管理系统——DBMS 数据库应用程序——DBAP 数据库(DataBase): 存放数据的仓库,这个仓库是在计算机存储设备上,而且数据是一定的格式存放的。数据库是具有统一的结构形式并存放于同一的存储介质内的...
  • ######################################################### 数据备份 数据备份是一古老而有效的数据保护手段,早期的数据备份手段主要是数据冷备,即定期将数据复制到 某种存储介质(磁带,光盘…)上并物理存档...
  • 一、数据库系统、数据库...3、DBMS是Database Management System的缩写,数据库管理系统。 数据库系统一般由4个部分组成: (1)数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合。数据...
  • 关系代数是一抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。 基本关系代数算法: 传统的集合运算:并、交、差、广义笛卡尔积; 专门的集合运算:选择、投影、象集、连接(等值...
  • 数据库管理系统(Database Management System)是一套操纵和管理数据库的软件,是用于建立、使用和维护数据库 数据库系统(DBS) 数据库 数据库管理系统(及其开发工具) 应用系统 数据库管理员 用户 二、关系...
  • 关系数据库管理系统一般向用户提供多种形式的语言,这些语言都是由关系数据库管理系统的语言处理层来处理。 1、语言处理层的任务和工作步骤 2、解释方法 3、预编译方法 二、数据存取层 1、数据存取层的系统结构 2、...
  • 图书管理数据库系统

    万次阅读 多人点赞 2020-01-29 19:22:44
    发本文的原因:本文是一个很经典的图书管理系统设计,大学本科实验,用例图,流程图真香!包含全部设计架构和源代码 ,可直接使用。 链接:https://pan.baidu.com/s/16Wda96TQ_4MWHj5cXNhZaA 提取码:ug6z 1 系统...
  • ②数据库、数据库管理系统、数据库系统的概念: 数据库(Database) 存放数据的仓库 长期存储在计算机内,有组织的,可共享的大量数据的集合 数据库管理系统(DBMS) 用于科学地组织和存储数据,高效地获取和...
  • 关系数据库基本概念

    千次阅读 2016-10-08 15:24:49
    关系数据库基本概念: 什么是关系模型: 关系模型把世界看做是由实体(Entity)和联系(Relationship)组成的。所谓实体就是指在现实世界中客观存在并可相互区别的事物。 实体所具有的某一特性称为属性...
  • 关系数据库设计——银行业务管理系统

    万次阅读 多人点赞 2017-02-28 15:46:53
    某银行准备开发一个银行业务管理系统,通过调查,得到以下的主要需求:银行有多个支行。各个支行位于某个城市,每个支行有唯一的名字。银行要监控每个支行的资产。银行的客户通过其身份证号来标识。银行存储每个客户...
  • 学生成绩管理系统数据库设计--MySQL

    万次阅读 多人点赞 2020-06-18 13:02:04
    MySQL/SQL Server 数据库设计(学生成绩管理系统) 设计大纲 1. 项目背景及需求分析 1.1 项目背景 1.2 需求分析 1.2.1 信息需求 1.2.2 功能需求 1.2.3 安全性与完整性需求 2. 概念结构设计 2.1 抽象出系统实体 2.2 ...
  • 图书管理系统数据库设计

    千次阅读 多人点赞 2019-12-22 20:30:13
    实验八 图书管理系统数据库设计 一、实验学时 2学时 二、实验目的 (1)熟悉SQL Sever基本操作。 (2)利用T-SQL语句实现相关操作。 (3)通过完成从用户需求分析、概念结构设计,逻辑结构设计等一系列的数据库设计...
  • JDBC--数据库管理系统

    千次阅读 2016-10-03 22:13:29
    1-JDBC概述 ...而持久化的实现过程大多通过各种关系数据库来完成。 持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。  Java 中的数据存储技术 在J
  • 数据库应用中,常用到DB、DBMS、DBS等术语,其形式定义如下。...严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。数据库能为各种用户共享,具有较小冗余度、数据间联系紧密而又有

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 358,293
精华内容 143,317
关键字:

关系数据库管理系统的3种基本关系