zoukankan      html  css  js  c++  java
  • mySQL 教程 第2章 安装和介绍mySQL

    设置mySQL字符集

    支持中文的字符集是utf8,该设置可以更改mySQL配置文件进行全局设置,也可以针对数据库设置,也可以针对表设置,也可以针对列设置。字符集更改后新插入的数据生效,对以前不生效。

    练习1:更改MySQL的默认字符集

    直接修改 my.cnf,增加一行内容,然后重启 MySQL,使之全局生效,影响新建的所有数据库。

    default-character-set = utf8

    重启mySQL服务

    root@ubuntuServer:~# /etc/init.d/mysql restart

    查看全局默认字符集

    查看支持的所有字符集

    mysql> show character set;

    <img width="" height="" " src="http://img.ddvip.com/2013/0226/201302260159334210.png"/>

    练习2:为一个数据库指定字符集

    指定数据库字符集后,该数据库下创建的表默认都采用该库指定的字符集。

    1、创建数据库时,指定其字符集

    CREATE DATABASE db DEFAULT CHARSET UTF8;

    2、或者采用 ALTER 语法来转换字段的字符集

    ALTER DATABASE db DEFAULT CHARSET UTF8;

    使用图形管理界面也可以为数据库指定字符集

    练习3:为 一个数据表指定字符集

    指定数据表字符集后,该数据表里的所有字符型字段默认都使用该表指定的字符集。

    1、创建数据表时,指定其字符集

    CREATE TABLE tbl

    (

    ......

    ) ENGINE = MyISAM DEFAULT CHARSET UTF8;

    2、或者采用 ALTER 语法来转换字段的字符集

    ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;

    3、采用其他客户端工具来设定,例如 Navicat/MySQL Front/PhpMyAdmin

    练习4:为一个字段指定字符集

    尽管数据表创建时已经指定默认字符集了,但是该表里面的字段还是可以指定自己的字符集的。

    1、创建数据表时,指定其字符集

    CREATE TABLE tbl

    (

    ......

    name CHAR(20) CHARACTER SET UTF8,

    ......

    ) ENGINE = MyISAM DEFAULT CHARSET UTF8;

    2、或者采用 ALTER 语法来转换字段的字符集

    ALTER TABLE tbl CHANGE name name CHAR(20) CHARACTER SET utf8;

    3、采用其他客户端工具来设定,例如 Navicat/MySQL Front/PhpMyAdmin

    练习5:设定客户端字符集

    为客户端连接指定字符集,最好服务器的字符集一致。

    设置putty字符集

    查看姓名是乱码

    点击“应用”。

    MySQL存储引擎

    MySQL存储引擎概述

    插件式存储引擎是MySQL数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据库,是否使用事物等。mySQL默认支持多种存储引擎,以适应不同领域的数据库应用需要。用户可以通过选择使用不同的存储引擎提高应用的效率,提供灵活的存储,用户设置可以按照自己的需要定制和使用自己的存储引擎,以实现最大程度的可定制性。

    MySQL常用的存储引擎为MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。

    MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。

    InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。MySQL支持外键存储引擎只有InnoDB,在创建外键的时候,要求附表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。

    存储引擎各自的一些特点

    上面提到的四种存储引擎都有各自适用的环境,这取决于它们独有的一些特征。主要体现在性能、事务、并发控制、参照完整性、缓存、 故障恢复,备份及回存等几个方面

    目前比较普及的存储引擎是MyISAM和InnoDB.而MyISAM又是绝大部分Web应用的首选。MyISAM与InnoDB的主要的不同点在于性能和事务控制上。

    MyISAM是早期ISAM(Indexed Sequential Access Method,我现在用的MySQL5.0已经不支持ISAM了)的扩展实现,ISAM被设计为适合处理读频率远大于写频率这样一种情况,因此ISAM以及后来的MyISAM都没有考虑对事物的支持,不需要事务记录,ISAM的查询效率相当可观,而且内存占用很少。MyISAM在继承了这类优点的同时,与时俱进的提供了大量实用的新特性和相关工具。例如考虑到并发控制,提供了表级锁。而且由于MyISAM是每张表使用各自独立的存储文件(MYD数据文件和MYI索引文件),使得备份及恢复十分方便(拷贝覆盖即可),而且还支持在线恢复。

    所以如果你的应用是不需要事务,不支持外键。处理的只是基本的CRUD(增删改查)操作,那么MyISAM是不二选择。

    1. 设置mysql的默认存储引擎

    编辑my.cnf配置文件,在服务器端配置信息[mysqld]下面添加:

    default-storage-engine = MyISAM

    即可设置mysql数据库的默认引擎为MyISAM

    2. 指定表的存储引擎

    如:

    create table t_innodb( id int(3))

    engine = innodb;

    然后使用

    mysql> show table status like 't_innodb';

    查看表的详细信息。

    3. 修改表的存储引擎

    ALTER TABLE t_name ENGINE = innodb;

    更改默认存储引擎和表的存储引擎

    4. 更改默认存储引擎

    查看默认存储引擎

    更改默认存储引擎

    编辑配置文件

    在[mysql]下添加

    default-storage-engine = InnoDB

    再次查看默认引擎,发现已经被更改

    重启mySQL服务

    5. 更表的存储引擎

    双击某个表,可以更改表的存储引擎

    使用命令更改

    mysql> use schoolDB;

    mysql> alter table TStudent engine=InnoDB;

    使用管理工具更改

    InnoDB存擎的特点

    6. 自动增长列

    自动增长列可以送给插入,但是插入的如果是空或者为0,则实际插入的值是自动增长后的值。

    创建一个表,指定自动增长列,存储引擎innoDB。

    create table au

    (

    studentid int not null auto_increment,

    name varchar(10),

    primary key(studentid)

    )

    engine=innodb CHARACTER SET UTF8,

    插入记录,有空值且自增列也没按顺序

    insert au values (1,'韩立刚'),(3,'韩立辉'),(2,'张京'),(null,'杨帅')

    可以看到自增列的值

    select * from au

    外键约束

    MySQL支持外键存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建索引

    在删除更新父表时,对子表进行相应的操作,包括restrict、cascade、set null和no action

    使用InnoDB存储引擎数据按主键顺序存放

    如果不创建索引,数据以插入顺序存放

    create table au1

    (

    studentid int,

    name varchar(10),

    )

    engine=innodb

    insert au1 values (1,'韩立刚'),(3,'韩立辉'),(2,'张京'),(8,'杨帅'),(6,'杨柳青')

    select * from au1

    给表添加主键

    alter TABLE `au1` ADD PRIMARY KEY (studentid)

    select * from au1

    创建数据库和表

    练习7:创建数据库

    也可使用命令创建数据库

    输入以下命令 create database SchoolDB; 选中执行

    练习8:创建表

    选中刚才创建的数据库 执行创建表的语句

    创建学生表

    create table TStudent

    (StudentID nvarchar(15),

    Sname nvarchar(10),

    sex nchar(1),

    cardID nvarchar(20),

    Birthday datetime,

    Email nvarchar(40),

    Class nvarchar(20),

    enterTime datetime )

    创建课程表

    create table TSubject

    (

    subJectID nvarchar(10),

    subJectName nvarchar(30),

    BookName nvarchar(30),

    Publisher nvarchar(20)

    )

    创建分数表

    create table TScore

    (

    StudentID nvarchar(15),

    subJectID nvarchar(10),

    mark decimal

    )

    练习9:使用图形界面产生表的SQL语句

    使用图形界面可以产生创建、删除、更改对象的SQL语句。

    使用mySQL帮助

    查看mySQL帮助

    练习10:查看帮助

    如果你不知道帮助能够提供什么?输入

    ? contents

    可以查看可用的帮助

    输入? Data definition

    查看创建表的语法

    快速查阅帮助

    在实际应用当中,如果需要快速查看某项语法时,可以使用关键字进行快速查询。比如想知道show命令都能看到些什么东西,可以使用如下命令。

    查看数据库

    查看创建数据库的命令

    查看创建表的命令

     来源: 51cto   作者:韩立刚

  • 相关阅读:
    Java设计模式-----装饰模式
    Java并发包中Lock的实现原理
    ThreadLocal,静态变量,实例变量,局部变量的线程安全
    ThreadLocal类详解
    SQL之LEFT JOIN,EIGHT JOIN,INSERT JOIN的区别
    Wireshark 、HTTPWatch、Fiddler的介绍
    TCP/IP、HTTP、Socket的区别
    我希望你并不幸福
    Autoregressive Convolutional Neural Networks for Asynchronous Time Series
    DRL Lecture1:Policy Gradient
  • 原文地址:https://www.cnblogs.com/kscnchina/p/2938780.html
Copyright © 2011-2022 走看看