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命令都能看到些什么东西,可以使用如下命令。
查看数据库
查看创建数据库的命令
查看创建表的命令
mySQL 教程 第2章 安装和介绍mySQL的更多相关文章
- MySQL入门——在Linux下安装和卸载MySQL
MySQL入门——在Linux下安装和卸载MySQL 摘要:本文主要学习了如何在Linux系统中安装和卸载MySQL数据库. 查看有没有安装过MySQL 使用命令查看有没有安装过: [root@loc ...
- mySQL教程 第1章 数据库设计
E-R设计 很多同学在学SQL语句时,觉得非常困难,那是因为你在学一个你根本不了解的数据库,数据库中的表不是你设计的,表与表之间的关系你不明白.因此在学SQL语句之前,先介绍一下数据库设计. 下面举例 ...
- mySQL 教程 第7章 存储过程和函数
存储过程和存储函数 MySQL的存储过程(stored procedure)和函数(stored function)统称为stored routines. 1. MySQL存储过程和函数的区别 函数只 ...
- 【MySQL】源码编译安装和配置MySql 5.5.32(单实例)
[需求描述] 在CentOS环境中,通过编译源码的方式,安装并且配置“单实例”的MySQL5.5.32数据库. MySQL的安装目录为:/application/mysql-5.5.32 MySQL数 ...
- linux - mysql - 卸载:RPM包安装方式的MySQL卸载
(1)检查是否安装了MySQL组件 [root@DB-Server init.d]# rpm -qa | grep -i mysql MySQL-devel-5.6.23-1.linux_glibc2 ...
- Mysql教程:[1]下载安装配置详细教程
如果不小心你下载了免安装的mysql,那么你比较倒霉,你找不到setup文件,还得自己去配置很多东西,然后再使用命令安装.所以我今天呢写一篇教程,写的尽量详细,即便是菜鸟也能安装,我自己安装过很多遍了 ...
- MySQL教程详解之存储引擎介绍及默认引擎设置
什么是存储引擎? 与其他数据库例如Oracle 和SQL Server等数据库中只有一种存储引擎不同的是,MySQL有一个被称为“Pluggable Storage Engine Architectu ...
- mySQL 教程 第4章 数据查询
mySQL运算符 这些运算符在SQL查询中用得到. 算数运算符 + 加 - 减 * 乘 / DIV 除 % MOD 取余数 比较运算符 = 等于 <> != 不等于 < <= ...
- mySQL 教程 第3章 数据类型和数据完整性
准备数据库 创建练习数据库,以下实验都是在这个数据库中完成. 练习1:比较各种数值型 create table tmp1 ( id INT, name VARCHAR(25), deptId deci ...
随机推荐
- 体验异步的终极解决方案-ES7的Async/Await
阅读本文前,期待您对promise和ES6(ECMA2015)有所了解,会更容易理解.本文以体验为主,不会深入说明,结尾有详细的文章引用. 第一个例子 Async/Await应该是目前最简单的异步方案 ...
- OC self注意事项
#import <Foundation/Foundation.h> @interface Person : NSObject - (void)test; + (void)test; - ( ...
- 共享内存创建shmget控制操作shmat,shmctl
1.共享内存的数据结构 共享内存就是分配一块能被其他进程访问的内存.每个共享内存段在内核中维护着一个内部结构: struct shmid_ds { struct ipc_perm shm_perm; ...
- POJ 3013最短路变形....
DES:计算输的最小费用.如果不能构成树.输出-1.每条边的费用=所有的子节点权值*这条边的权值.计算第二组样例可以知道树的费用是所有的节点的权值*到根节点的最短路径的长度. 用dij的邻接矩阵形式直 ...
- ASP.NET MVC4 Razor
2014-09-18 14:06 by 易code, 2854 阅读, 0 评论, 收藏, 编辑 1 Code Expressions 代码表达式 @表达式 or @(Expressions ) ...
- bzoj1086
题解: 树分块 每一次当个数大于B的时候分成一块 省会城市为当前子树根 然后最后剩下的节点和前一个分为一块 代码: #include<bits/stdc++.h> using namesp ...
- (C/C++学习笔记) 十二. 指针
十二. 指针 ● 基本概念 位系统下为4字节(8位十六进制数),在64位系统下为8字节(16位十六进制数) 进制表示的, 内存地址不占用内存空间 指针本身是一种数据类型, 它可以指向int, char ...
- CUDA ---- Dynamic Parallelism
Dynamic Parallelism 到目前为止,所有kernel都是在host端调用,GPU的工作完全在CPU的控制下.CUDA Dynamic Parallelism允许GPU kernel在d ...
- [翻译]HTTP: Response Code
原文地址:HTTP: Response Code 在上一篇文章中,我们总结说HTTP管理客户端和服务端之间的交互,并且解释HTTP头部的概念.在随后的系列文章中我们将讨论更多关于以下方面的信息:对交互 ...
- magento小常识
magento后台设置好产品分类及添加产品后前台没有显示出来:以下几个可能: 1.首先检查网店商城的Root Category 以 及跟目录下面的子目录设置是否有误,具体在目录->管理分类-&g ...