赞
踩
这是关于五天学习MYSQL数据库的笔记,如果想要观看视频可以访问(视频链接(b站)
或者访问视频链接
之前的笔记已经记到了1.3的mysql基本介绍,接下来主要是:
一. Mysql服务端架构以下几层构成
数据库是数据存储的最外层(最大单元)。
创建数据库:
基本语法:create database 数据库名 [库选项];
库选项:数据库的相关属性
字符集:charset 字符集,代表当前数据库下的所有表存储的数据默认指定的字符集(如果不指定,则采用DBMS默认)
create database 数据库名 charset 字符集名称;
校对集:collate 校对集(校对集默认是随字符集的)
用户每通过SQL指令创建一个数据库,那么系统就会产生一个对应的存储数据的文件夹(data)。每个数据库文件夹下面有一个opt文件,保存的是对应的数据库选项。
一. 显示全部
基本语法:show databases;
二. 显示部分
基本语法:show databases like ‘匹配模式’;
匹配模式:
_:匹配当前位置的单个字符。
%:匹配指定位置多个字符,前后。
三. 显示数据库创建语句
基本语法:show create database 数据库名字;
如图:
一. 选择数据库
为什么要选择数据库?
因为数据存储再数据表中,数据表存在数据库下,要操作数据,必须首先进入到数据库下。
基本语法:use 数据库名字;
二. 修改数据库
修改数据库的字符集(库选项)
是否可以修改数据库的名字?mysql5.5之前可以,rename命令,但是5.5之后就不可以了
基本语法:alter database数据库名字 charset[=]字符集;
一旦修改成功,opt文件改变。
三 .删除数据库
基本语法:drop database 数据库名字;
删除要做好安全操作,确保里面数据没有问题。
删除数据库之后,对应的存储数据的文件夹也会被删除。
一.创建数据表
表选项和数据库选项类似:
Engine:存储引擎,mysql提供的具体存储数据的方式,默认有一个innodb(5.5之前默认是myisam)
Charset:字符集(只对当前自己表有效,级别比数据库高)
Collate:校对集
例:create table student(
name varchar(10)
)charset utf8;
每当一个数据表创建,就会在对应的数据库下面创建一些文件(与存储引擎有关)。 Frm代表结构文件。
注意:这个结构文件来自于innodb存储引擎。Innodb存储引擎的所有文件都存储在外部的ibdata文件中。
一 .显示所有表
基本语法:show tables;
二 .匹配显示表
基本语法:show tables like ‘匹配模式’;
三 .显示表结构
本质含义:显示表中所包含的字段信息(名字,类型,属性等等)
基本语法:
describe 表名;
desc 表名;
show columns from 表名;
四. 显示表的创建语句
查看数据表创建时的语句,显示结果不一定是用户之前输入的。
基本语法:show create table 表名;
Mysql中有多种语句结束符:
;和\g效果一样,都是字段在横排,下面是对应的数据。
\G字段在竖排,右侧是对应的数据。
一 .设置表属性
表属性就是表选项,engine,charset,collate
基本语法:alter table 表名 表选项[=]值;
例:alter table class charset gbk;
注意:如果数据库已经确定,里面有很多数据,不要轻易的修改表选项(字符集影响不大)。
二 .修改表结构
数据库中数据表名字通常有前缀,取数据库的前两个字母加下划线
修改表名:rename table 旧表名 to 新表名;
修改表选项:alter table 表名 表选项[=]新值;
新增字段:alter table 表名 add [column] 新字段名 列类型 [列属性] [位置first/after字段名];
例:alter table teacher add column age int; 默认加在表的最后面
修改字段名:alter table 表名 change 旧字段名 新字段名 字段类型 [列属性] [新位置];
修改字段类型(属性):alter table 表名 modify 字段名 新类型 [新属性]
[新位置];
删除字段:alter table 表名 drop 字段名;
三.删除表结构
基础语法:drop table 表名1[,表名2……];可以同时删除多个数据表
一 插入操作
本质含义:将数据以SQL的形式存储到指定的数据表(字段)里面
基本语法:
Insert into 表名 [(字段列表)] values(对应字段列表);
例:
注意:后面values中的对应的值列表只需要与前面的字段列表相对应即可,不一定与表结构完全一致。
字段列表不一定非要有表中的所有字段。
Insert into 表名 values (对应表结构);(向表中所有字段插入数据,值列表必须与字段列表一致)
一. 查询操作
查询表中全部数据:select * from 表名; // *表示匹配所有的字段
查询表中部分字段:
select 字段列表 from 表名;//字段列表使用逗号隔开
简单条件查询数据:
select 字段列表/ * from 表名 where 字段名 = 值;
二 .删除操作
基本语法:
delete from 表名 [where 条件];
如果没有where条件,系统会自动删除该表的所有数据(慎用)。
三. 更新操作
更新:将数据进行修改,通常是修改部分字段数据。
基本语法:update 表名 set 字段名 = 新值 [where 条件];
如果没有where条件,那么表中那个字段会被修改成统一值。
一. 字符编码的概念
字符:各种文字和符号的总称。
在计算机中看到的任何内容都是字符构成的。
字符编码: 是计算机针对各种符号,在计算机中的一种二进制存储代号。
二. 字符集概念
字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。
常见字符集名称: ASCII字符集、GB2312字符集、BIG5字符集、GB18030 字符集、Unicode 字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。中文文字数目大,而且还分为简体中文和繁体中文两种不同书写规则的文字,而计算机最初是按英语单字节字符设长的,因此,对中文字符进行编码,是中文信息交流的技术基础。
一. 设置客户端所有字符集
如果直接通过cmd下的mysql.exe进行中文数据插入,可能出错。
出错原因:
用户是通过mysql.exe来操作mysqld.exe
真正的SQL执行是mysql.exe来执行
mysql.exe将数据传入mysqld.exe的时候,没有告知其对应的符号规则(字符集),而mysqld.exe也没有能力自己判断,就会使用自己默认的字符集。
解决方案:
Mysql.exe客户端在进行数据操作之前将自己所使用的字符集告诉mysqld.exe。
Cmd下的mysql.exe默认都只有一个字符集:GBK
如何告知mysqld.exe字符集是gbk呢?
快捷方式: set names 字符集;
深层原理: 客户端,服务端,连接层
(show variable like ‘character set_%’)
Mysql.exe与mysqld.exe之间的处理关系一共分为三层:
客户端传入数据给服务端:client--------character_set_client
服务端返回数据给客户端:server---------character_set_result
客户端与服务端之间的连接:collection----------character_set_collection
set names 字符集;
语句的本质: 就是一次性打破三层关系的字符集,变得一致。
在系统中有三个变量来记录着这三个关系对应的字符集: show variable
like ‘character_set%;
查看一个新的客户端的对应的字符集关系:
修改变量的值:
set 变量 = 值;
如果只修改服务器端变量的值为gbk,则插入中文能够成功,但是查询显示出插入的中文数据是乱码。
因为:客户端给服务端的数据正确,服务端返回的结果默认是utf8,但是当前窗口只识别gbk
解决方法:set character_set_results = gbk;
对应的character_set_database也会自动修改为gbk;
Connection只是为了更方便客户端与服务端进行字符集转换而设。
set names gbk;
等价于
set character_set_client = gbk;//为了让服务器识别客户端传来的数据
set character_set_connection = gbk; //更好的帮助客户端与服务端之间进行字符集转换
set character_set_results= gbk; //为了告诉客户端服务端所有的返回的数据字符集
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。