sql数据库(资料库)的基本操作
1 Character Set与Collation
任何资讯技术在处理资料的时候,如果只是单纯的数值和运算,那就不会有太复杂的问题;如果处理的资料是文字的话,就会面临世界上各种不同语言的问题。以资料库来说,它必须正确的储存各种不同语言的文字,也就是一个资料库中,有可能同时储存繁体和简体中文、法文等不同语言的文字。
电脑在处理文字资料大多是使用一个「编码」来表示某一个字,对MySQL资料库来说,为了要处理不同语言的文字,它使用一套编码来处理一种语言的文字,称为「字元集、character set」。以英文字母来说,每一个字母都有一个编码,例如A=65、B=66、C=67。
MySQL可以依照你的需要为资料库设定不同的字元集:
Collation指的是在一个字元集中,所有字元的大小排序规则。以英文字母来说,我们会依照A到Z的顺序当成大小的顺序,小写的字母也是一样的。这样的大小顺序是依照编码的大小来决定的,MySQL把它称为「binary collation」。
可是在真实的世界中,大小顺序却不是这么单纯,有时候你会把大小写的英文字母当成是一样的,例如大写的A和小写的a。在这种情况下,大写和小写的字母会被当成是一样的大小,然后再依照编码来决定,例如大写A的编码比小写a的编码小。MySQL把这样的方式称为「case-insensitive collation」。
在决定大小顺序的时候,如果只有考虑字母大小写因素的话,那还不算是太复杂的。如果再考虑各种不同语言特性的话,在决定大小顺序的时候就会变得很复杂。以繁体中文来说,它是没有区分大小写的,而且一个中文字会包含一个以上的位元组,其它的语言也都会有类似的情况。
1.1 Character Set
MySQL资料库把各种不同字元集的编码资料纪录在系统资料库中,你可以使用下列的指令查询MySQL资料库支援的字元集资讯:
- SHOW CHARACTER SET
执行上列的查询指令后可以得到下列的结果:
1.2 COLLATION
MySQL除了支援各种不同的字元集,让资料库可以储存不同语言的文字外,每一种字元集都可以依照实际需要,搭配不同的Collation设定。你可以使用下列的指令查询MySQL支援的Collation资讯:
- SHOW COLLATION
执行上列的查询指令后可以得到下列的结果:
你也可以使用类似「WHERE」子句中的条件设定,查询某一种字元集支援的Collation资讯:
你可以从Collation名称分辨出排序的准则:
2 资料库
资料库(Database)是用来保存各种资料元件的容器,在安装好MySQL资料库伺服器软体后,就可以依照自己的需求建立资料库,MySQL对于资料库的数量并没有限制:
每一个MySQL资料库伺服器软体都会使用一个储存资料的资料夹,称为「data directory」。在这个资料夹下,每建立一个资料库,MySQL都会建立一个资料夹,称为「资料库资料夹、database directory」,一个资料库包含的档案就会放在各自的资料库资料夹中:
注:使用SHOW VARIABLES LIKE 'datadir'
叙述,可以查询MySQL资料库伺服器使用的资料库资料夹。
因为一个资料库会是档案系统中的一个资料夹,所以你要特别留意下列的特性:
- 虽然MySQL对于资料库的数量并没有限制,可是你要注意MySQL资料库伺服器软体所安装的作业系统,它对于资料夹与档案大小的限制。
- MySQL使用资料库名称作为资料库资料夹的名称,所以你要特别注意大小写的问题。在资料夹名称不分大小写的作业系统(例如Windows),资料库名称「MyDB」和「mydb」是一样的;可是在资料夹名称会区分大小写的作业系统(例如Linux),资料库名称「MyDB」和「mydb」就不一样了。
- 每一个资料库资料夹中都有一个特别的档案,档案名称是「db.opt」,这个档案的内容是资料库的字元集与collation设定。
注:MySQL把「DATABASE」与「SCHEMA」当成是一样的,所有你在后续使用的指令,都可以把「DATABASE」换成「SCHEMA」。
2.1 建立资料库
下列是建立资料库的语法:
在你执行新增资料库的指令以后,MySQL会使用你指定的资料库名称建立一个资料库资料夹:
如果你指定的资料库名称已经存在了,MySQL会产生一个错误讯息:
为了避免上列的错误,你可以在建立资料库的时候加入「IF NOT EXISTS」,如果你指定的资料库名称不存在,同样会建立新的资料库;如果已经存在,MySQL只会产生警告讯息:
你可以在建立资料库的时候指定资料库预设的字元集与collation,如果没有指定的话,就会使用MySQL伺服器预设的设定:
注:如果没有修改过MySQL设定的话,预设的字元集是「latin1」,Collation是「latin1_swedish_ci」。
建立资料库的时候指定字元集与collation会有一些不同的组合,例如下列只有指定字元集的话,MySQL会使用你指定字元集的预设collation:
另外一种是只有使用「COLLATE」指定collation,MySQL会使用你指定collation所属的字元集:
注:建立资料库的时候,不管你有没有指定,资料库都会有预设的字元集与collation。以后在这个资料库建立的表格,都会使用资料库预设的字元集与collation。
2.2 修改资料库
建立资料库以后,你唯一能执行的修改是资料库预设的字元集与collation。下列是修改资料库设定的语法:
下列的叙述执行修改资料库预设的字元集与collation。在修改的时候,如果只有指定字元或只有指定collation的话,设定的规则与建立资料库一样:
注:修改资料库的字元集是或Collation,并不会影响原来已经存在的表格。
2.3 删除资料库
下列是删除资料库的语法:
如果在删除资料库的叙述中指定的资料库名称不存在,MySQL会产生一个错误讯息:
为了避免上列的错误,你可以在删除资料库的时候,加入「IF EXISTS」指令,如果你指定的资料库名称存在,同样会删除指定的资料库;如果不存在,MySQL只会产生警告讯息:
注:执行删除资料库的叙述,MySQL不会再跟你确认是否删除资料库,而是直接删除;删除资料库以后,表示资料库资料夹也会从档案系统中删除,除非你另外还有这个资料库的备份,否则原来在资料库中的所有资料就全部消失了。
2.4 取得资料库资讯
MySQL提供「SHOW」指定让你取得跟资料库相关的资讯,执行下列的指令可以取得MySQL伺服器中所有资料库的名称:
你也可以执行下列的指令取得建立资料库的叙述:
MySQL资料库伺服器有一个很重要的资料库,名称为「information_schema」,这个资料库通常会把它称为「系统资料库」,资料库中储存伺服器所有重要的资讯。跟资料库相关的资讯储存在「SCHEMATA」表格中,所以你可以使用查询叙述取得所有资料库的相关资讯:
sql数据库(资料库)的基本操作的更多相关文章
- mysql数据库表的基本操作sql语句总结
1,命令行登录命令 mysql -h localhost -u root -p C:\Users\lenovo>mysql -u root -p Enter password: ***** We ...
- SQL数据库—<2>数据库基本操作(CRUD)
学习基本操作语句之前先简单了解数据库的基本数据类型: 数据类型: 二进制数据:以十六进制形式存储 固定长度:binary 可变长度:varbinary 字符数据 ...
- sqlite嵌入式数据库C语言基本操作(1)
sqlite嵌入式数据库C语言基本操作(1) :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0, ...
- SQL数据库的基础操作
一,认识SQL数据库 美国Microsoft公司推出的一种关系型数据库系统.SQLServer是一个可扩展的.高性能的.为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有 ...
- 菜鸟崛起 DB Chapter 5 MySQL 5.6数据库表的基本操作
5 数据库表的基本操作 在数据库中,数据表是数据库中最重要.最基本的操作对象,是数据存储的基本单位.数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的.每一行代表一条唯一的记录,每一列代 ...
- KTV项目 SQL数据库的应用 结合C#应用窗体
五道口北大青鸟校区 KTV项目 指导老师:袁玉明 歌曲播放原理 SQL数据库关系图 C#解决方案类图 第一步:创建数据库连接方法和打开方法和关闭方法! public class DBHelper { ...
- jquery autocomplete实现读取sql数据库自动补全TextBox
转自我本良人 原文 jquery autocomplete实现读取sql数据库自动补全TextBox 项目需要这样子一个功能,其他部门提的意见,只好去实现了哦,搞了好久才弄出来,分享一下. 1.前台页 ...
- SQL数据库
SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出“做什么”的命令,“怎么做” ...
- 基于Qt5.5.0的sql数据库、SDK_tts文本语音朗读的CET四六级单词背诵系统软件的编写V1.0
作者:小波 QQ:463431476 请关注我的博客园:http://www.cnblogs.com/xiaobo-Linux/ 我的第二款软件:CET四六级单词背诵软件.基于QT5.5.0.sql数 ...
随机推荐
- mysql 授权 user@'%' 为什么登陆的时候localhost 不行呢???
公司业务服务器还没迁移到阿里云上的时候,创建的一个用户明明是所有的,但是本机登陆就是不行,一直也搞不懂原因 今天才知道 原来 %不包括 localhost mysql> grant all on ...
- 01 viewport
<meta name="viewport" content="width=device-width,initial-scale=1.0">
- android中actionbar的title居中
1.配置 activity的主题: android:theme="@style/AppThemeBB" 2. 通过Menu.xml文件布局 添加菜单item menu/menu.x ...
- python模块(os)
os模块 os模块提供了许多与操作系统交互的接口 os.getcwd() -> str # 返回当前路径, 相当于pwd os.chdir("dirname") -> ...
- mysql 快速生成百万条测试数据
1.生成思路 利用mysql内存表插入速度快的特点,先利用函数和存储过程在内存表中生成数据,然后再从内存表插入普通表中 2.创建内存表及普通表 CREATE TABLE `vote_record_me ...
- HTTP报文
HTTP报文分为请求报文(request message)与响应报文(response message). 一.报文的组成部分 一个HTTP报文由3部分组成,分别是: (1).起始行(start li ...
- redhat vim编辑器永久添加行号
cd ~ vim .vimrc 第一行加入: set nu :wq 保存退出,即可 如果想取消设置,同理删除set nu即可
- CSS之CSS hack
由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系.我们就可以根据这个来针对不同的浏览器来写不同的CSS. CSS Hack大致有3种表现形式,CSS类内部Hack.选择器H ...
- compilation filed Unable to write to path xxxxxx 遇到这种情况的话
如果是xib文件的话 查看target —>Build Phases —> Copy Bundle Resources里面查看路径. 可能有重复路径导致编译不通过.
- NSMutableDictionary中元素替换
NSMutableDictionary *dic = [NSMutableDictionary new]; [dic addEntriesFromDictionary:@{@"key&quo ...