第10天 MySQL安装-初识-表设计(命令行模式)

一、MySQL数据库概述

1、为什么****需要数据库

image.png

在实际项目开发中,数据库主要用于保存数据!数据库是一个网站的灵魂,非常非常非常重要!

2、什么****是数据库

数据库其实就是保存数据的容器。数据库常用介质一共有两种:
① 硬盘数据:把数据以文件的形式保存在计算机硬盘中
② 内存数据:把数据以键值对的形式保存在计算机内存中(nosql数据库)
硬盘数据与内存数据的区别:
内存数据运行效率要明显高于硬盘数据,但是内存数据随着计算机停止其也会随之消失。相对硬盘数据而言,不安全。

3、数据库****的分类

①关系型数据库
把数据与数据之间的关系,通过关系模型建立起来,我们把这种数据库就称之为“关系型数据库“。
SQL: Struct Query  Language(结构化查询语言) ,其实是一个“国际化”标准。
各种关系数据库,其实都是实现(并扩充)该标准的一种产品。
关系型数据库在实际项目开发中,就是一张二维表。类似于excel表格
数据表


image.png
编号 班级名称 班级描述
1 PHP1期 横跨前端、后端、移动端的大牛
2 PHP2期 打造最牛x的程序员
3 PHP3期 打造手机APP全能型人才

② 非关系型数据库(NoSQL数据库:memcache、redis、mongodb、ssdb)

3、关系数据库常见术语:

数据data:所有的数据
数据库database:指一个具体的存储数据的“逻辑名称”,通常一个产品(项目/网站),会使用一个数据库来存储其所有数据
数据库管理系统dbms:database management system:通常就是指数据库软件产品,如mysql、oracel、sqlserver、access、DB
我们主推mysql数据库
表(数据表)table:
字段field,列column:
行row,记录record:
一个数据库由几部份组成: 数据库 表 字段 行(记录、数据)
一个数据库由多个表组成,一个表由多个字段和多行数据组成
例如:学生信息管理项目 应该单独由一个数据库组成
班级信息:

编号 班级名称 班级描述
1 PHP1期 横跨前端、后端、移动端的大牛
2 PHP2期 打造最牛x的程序员
3 PHP3期 打造手机APP全能型人才

学生信息:

学号 姓名 年龄 家庭住址 所属班级
160101 严明宝 25 浙江省杭州市 PHP1期
160102 朱永杰 24 上海市奉贤区 PHP1期
160143 刘德华 29 广东省广州市 PHP2期
160154 张学友 28 北京市海淀区 PHP3期

数据库:database,如该项目为学校信息管理系统,可以定义一个数据库叫做school
数据库管理系统:使用mysql作为数据库
表:table, 班级信息表,学生信息表
列:字段(field),比如编号、班级名称、班级描述都是我们的字段信息,相当于表头信息
行:记录(record),主要用于存储实体的相关信息,一条记录就对应条信息
数据:里面学生的所有信息的组合

4、常见的关系型数据库(数据库管理系统)

微软小型数据库:Access数据库(ASP + Access)
微软大中型数据库:SQL Server2000,SQL Server2005,SQL Server2008…
大型数据库:DB2,Oracle数据库(甲骨文公司产品)
主流数据库:MySQL数据库(免费且开源的数据库)
常用的服务器环境LAMP环境:Linux + Apache + MySQL + PHP(免费且开源)


image.png

5、MySQL****简介及****发展史

简介
MySQL是一个开放源码、免费的中小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL发展史
1985 年,瑞典的几位志同道合小伙子(以David Axmark 为首) 成立了一家公司,这就是MySQL AB 的前身。
1996年,MySQL 1.0发布, 在小范围内使用。到了96年10月,MySQL 3.11.1发布了,没有2.x版本。最开始,只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。 此时的MySQL还非常简陋,除了在一个表上做一些Insert,Update,Delete和Select 操作之外,没有其他更多的功能。
1999-2000年,有一家公司在瑞典成立了,叫MySQL AB。 雇了几个人,与Sleepycat合作,开发出了 Berkeley DB引擎, 因为BDB支持事务处理,所以,MySQL从此开始支持事务处理了。
2000 年的时候,MySQL 公布了自己的源代码,并采用GPL(GNU General Public License)许可协议,正式进入开源世界。
2008年1月16号 MySQL被Sun公司收购。
2009年04月20日Oracle收购Sun 公司,MySQL 转入Oracle 门下。
2010年04月22 发布MySQL 5.5, MySQLcuster 7.1.
2016年 发布5.7版本 经典
2018年 发布5.8版本
mariadb mysql一个分支产品
最新版本8。0

6、mysql数据库存储的本质和表现:

本质:将大量的“数据值”通过数据库管理系统进行某种复杂但是逻辑结构上清晰有序的存储
表现:其实也是一些文件存储而已。
data文件夹分析如下:


image.png

image.png

7、MySQL中的四个概念(实质为增、删、改、查操作)

DDL :Data Definition Language,数据库模式定义语言(结构),DDL包括:CREATE(建库与建表)
DML :Data Manipulation Language,数据操做语言(写操作),DML包括:INSERT、UPDATE、DELETE
DQL :Data Query Language,数据查询语言,DQL包括:SELECT
DCL :Data Control Language,数据库控制语言(权限方面的操作),DCL包括:GRANT、REMOVE

三、MySQL基本操作****(****C/S****)

1、数据库系统的基本访问流程

客户端(C)——mysql管理系统 ——数据库文件


image.png

mysql数据库客服端软件常用有:cmd命令行、navicat(本地)、phpMyAdmin、PHP模拟客户端

2****、MySQL原理图

MySQL是一款基于(client/server简称c/s)架构的数据库软件。


image.png

3****、****启动MySQL****服务

1)通过****控制面板启动MySQL服务

① 在控制面板中->管理工具->服务:
② 找到MySQL服务,双击修改
③ 启动MySQL服务
启动类型:手动或自动
手动:当计算机关闭后,MySQL服务器也会随着关闭,当计算机启动时,必须手工启动MySQL服务。
自动:当计算机启动时,MySQL服务器随着计算机自动启动。

2)使用****DOS指令开启MySQL服务

基本语法:net(指令) start|stop 服务名称

4、连接MySQL服务器

登陆:

1、navicat:

image.png

2、网页版的连接方式(推荐线上开发)
image.png

3、完整的CMD命令:
mysql(指令) -h (host缩写:主机名称)127.0.0.1 -P (Port缩写:端口号)3306 -u (user的缩写:用户名)root -p(password的缩写:密码)(推荐回车后输入)
image.png

简化的CMD命令
image.png

如果你默认使用的本地且端口号没有更改,可以直接使用如下指令进行登陆:
mysql -uroot -proot
image.png

在实际项目开发中,为了防止mysql的密码被泄露,保证mysql的安全,建议使用如下方式:
先输入 mysql -u root -p 回车
再输入密码
image.png

退出****:

退出:quit; 或 exit;
修改密码:
进入到mysql数据库中,使用以下命令进行修改
update user set password=password(新密码) where user=’root’ and host=’127.0.0.1’


image.png

更新过后需要刷新权限
flush privileges;


image.png

image.png

MySQL忘记密码的解决方法

输入命令 mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证。注意输入此命令之后命令行就无法操作了,此时可以再打开一个新的命令行。注意:在输入此命令之前先在任务管理器中结束mysqld.exe进程,确保mysql服务器端已结束运行。
然后直接输入mysql,不需要带任何登录参数直接回车就可以登陆上数据库。


image.png

输入show databases; 可以看到所有数据库说明成功登陆。其中mysql库就是保存用户名的地方。输入 use mysql;选择mysql数据库。show tables查看所有表,会发现有个user表,这里存放的就是用户名,密码,权限等等账户信息。
输入select user,host,password from user; 来查看账户信息
更改root密码,输入update user set password=password('123456') where user='root' and host='localhost';
再次查看账户信息,select user,host,password from user; 可以看到密码已被修改。
使用flush privileges命令重新刷新用户表,防止用户直接使用 mysql命令进行


image.png

退出命令行,重启mysql数据库,用新密码尝试登录
image.png

使用新的密码进行登录:
image.png

5****、****发送SQL语句到服务器端

直接在DOS窗口中,输入SQL语句即可。
由于程序的执行过快,所以我们输入SQL语句就能立即看到执行结果,但是其在实际运行时,服务器端要经历三个阶段才能返回数据(① 发送SQL语句(客户端) -> ② 接收客户端SQL语句 ->③ 执行SQL语句 -> ④ 返回执行结果)

四、MySQL数据库之建库(结构)

1、库与表的概述

① 一个MySQL管理系统可以存放多个数据库
② 一个数据库中可以拥有多个表

2、库与表的原理图

image.png

一般情况下,一个项目(留言本、bbs、博客)就对应一个数据库,每个数据库中,保存数据的就称之为数据表。一个数据库可以同时拥有多个表。

3、创建数据库

create database [if not exists] 数据库名称 [数据库选项(如字符编码等)];(结尾必须添加分号)


image.png

特别说明:数据库名要求见名知意,不要使用中文,数字,系统保留的关键字等,类似于变量的规范。

4****、查询****数据库

1) show databases; 查询所有数据库


image.png

2)使用模糊查询查询数据库
show databases like ‘_schema’;
show databases like ‘%schema’;
like :模糊匹配的关键词
_ :只能匹配一个任一字符
% :匹配一个或多个任一字符
3)查询已经创建的数据库结构
show create database 数据库名称;
显示创建数据库时使用的SQL语句(也可以查看编码格式)


image.png

5、修改数据库(编码格式)

修改数据库的编码格式,基本语法:
alter database 数据库名称 charset = 要设定的编码格式;


image.png

6、删除数据库

基本语法:
drop database 数据库名称;
特别说明:在实际项目开发中,强烈不建议直接删除数据库,因为这个过程是不可逆的!

五、数据表****的操作

字段(列)类型

字段类型:指的是当前字段所能存储的数据的类型,SQL语言是一种强类型语言,所以必须在表创建的时候,给字段指定对应的数据类型,而且在数据存储的时候,只能存储的指定的数据类型。

数据类型分类

在SQL中,数据类型同样分为三类:数值型,字符串型,日期时间型
数值型:整型,小数型(浮点型和定点型)
字符串型:定长,不定长,文本,集合,枚举
日期时间型:时间日期,日期,时间,年,时间戳


image.png

数值型

整型

存放整数的数据类型。生活中有不同的需求来使用不同范围内的整型,而SQL就需要根据不同的需求来设定不同的整型(分配不同内存)来记录,提高空间的利用率。
整型分为以下五种
tinyint:迷你整型,1一个字节存储,最多256个数据(0,1)
smallint:小整型,2个字节存储,最多65535个数据
mediumint:中整型,3个字节存储
int:标准整型,4个字节存储 (当前的时间戳最大为15亿)
bigint:大整型,8个字节存储
在SQL中,数值数据默认的都是有符号的,所以有正负之分,应该将数据一分为二

类型 字节 最小值(有符号****/****无符号) 最大值(有符号****/****无符号)
TINYINT 1 -128/0 127/255
SMALLINT 2 -32768/0 32767/65535
MEDIUMINT 3 -8388608/0 8388607/16777215
INT/INTEGE 4 -2147483648/0 2147483647/4294967295
BIGINT 8 -9223372036854775808/0 9223372036854775807/18446744073709551615

无符号
语法:在数据类型之后,使用unsigned关键字

小数型

浮点型:有可能丢失精度的小数型
float:单精度浮点型,7个精确值左右
double:双精度浮点型,15位左右

image.png

浮点型使用语法
字段 float/float(M,D)
M表示整个长度,D表示小数部分的长度
float(5,2) 12.222 不合理的数据
float(5,3) 11.12 合理的数据
float(5,3) 222.22 不合理的数据
定点型
在指定范围内不会丢失精度的小数。
语法:decimal(M,D),M总长度,D小数部分长度
decimal(6,2) 28828.2 整数只能有4位,当前有5位,超过,就不能存储
image.png

字符串类型

字符串类型分为:定长字符串,变长字符串,文本字符串,集合字符串和枚举类型

定长字符串

定长指的是磁盘所分配的空间是固定长度的存储空间,但是里面存储的数据可以没有空间长。
定长:char
语法:字段名 char(长度L),L表示可以存储的字符长度,定长的L长度最大值是255个字符

变长字符串

变长指的是磁盘会根据实际存储的内容来进行磁盘空间的分配。
变长:varchar
语法:字段名 varchar(L),L表示可以存储的字符长度,L的最大值理论上是65535
定长和变长的应用

  1. 长度固定的较小的字符串使用定长,手机号,身份证,md5加密(32位)等
  2. 长度不固定的较小的字符串使用变长,姓名,籍贯,家庭住址等
  3. 如果字符串长度较长(通常超过255个字符)使用文本字符串

面试题:
定长与变长的优劣

  1. 定长:浪费空间,但是读取效率高
  2. 变长:节省空间,但是效率降低


    image.png

文本字符串

文本字符串分为两种:字符型文本,二进制文本
文本字符串:text


image.png

二进制字符串:blob


image.png

枚举字符串**** (了解)

枚举字符串指的是在定义之初就确定要存放的字符串有哪些,然后在数据进行存储的时候就只能存储已经定义过的字符串,只能使用任意的一个字符串。(单选框)
语法:enum
字段名 enum(字符串1,字符串2,…); 枚举采用最多2个字节保存数据,最多能存65535个数据

集合字符串

集合字符串与枚举字符串大致一致,但是集合数据指的是可以选中定义的值中间的部分数据或者全部数据。多选
语法:set
字段名 set(字符串1,字符串2,…);
枚举和集合基本用不到,了解,在mysql高级操作时再讲。

时间日期类型

SQL中用来存储时间或者日期的数据类型

类型 显示格式 取值 存储空间 零值
DATETIME YYYY-MM-DD HH:MM:SS '1000-01-01 00:00:00'到'9999-12-31 23:59:59' 8 0000-00-00 00:00:00
TIMESTAMP YYYY-MM-DD HH:MM:SS 是‘1970-01-01 00:00:00’到2038-01-19 03:14:07 4 0000-00-00 00:00:00
DATE YYYY-MM-DD '1000-01-01'到'9999-12-31 3 0000-00-00
TIME HH:MM:SS -838:59:59'到'838:59:59' 3 00:00:00
YEAR YYYY 1901到2155 1 0000

datetime:日期时间,8个字节存储
timestamp:时间戳,使用标准整型存储,不是整型数据,而是与datetime格式一样的数据
date:datetime的日期部分
time:datetime的时间部分,time表示的不是时间点,是时间段
year:年份
作为php程序员,基本上不使用SQL的任何时间格式,都是使用php的时间戳,即用int类型来表示,存储时使用整型存储,读取时使用格式化函数date格式化

1、****创建****数据表

① 一个项目对应一个数据库
② 一个数据库对应多张表
③ 每个表都对应一个实体
④ 数据表是专门用于存放数据,表现为一张二维表(类似日常生活中的表格)
⑤ 一个表中同时具有多个字段(列),在创建数据表时,必须明确指定数据表字段,表不能脱离字段,字段也不能脱离数据表。
创建数据表的基本语法:

createtable [if not exists] 数据表名称(
   字段1  字段类型,
   字段2  字段类型,
   …
   字段N  字段类型
) [数据表引擎 + 编码格式];
image.png

特别注意,在创建数据表时,必须明确指定是哪个数据库下的数据表:


image.png

在MySQL中,每一条SQL语句执行完毕后,其末尾必须添加分号结束。


image.png

解决中文乱码问题:cmd中默认的编码为gbk,数据库的编码是utf8,想在dos窗口下显示中文,通过 set names gbk;
案例:
为商城系统构建一个数据库专门卖书,库名为shop
Shop数据库中应该有哪些表呢?(设计原则:把具体的实体抽象成数据表)
在图书库中,有一个图书分类(实体),可以抽象出一个表(category),另外应该有一个图书的详细描述,可以抽象出一个表(goods)
分类表中应该有哪些字段呢?(设计原则:把实体的特性抽象成数据表的字段)
分类表:

编号 名称 所属上级分类
1 管理 主分类
2 市场营销 管理(二级分类)
3 电子商务 管理(二级分类)
4 金融 主分类
5 金融学 金融(二级分类)
6 互联网金融 金融(二级分类)

编号 名称 所属上级分类
图书产品表:

编号 产品名称 产品价格 产品缩略图 作者 出版社 来源 添加时间
1 从零开始读懂金融学 21.60 图片路径http://www.jd.com/upload/1.jpg 斯凯恩 立信会计出版社 京东自营 2014-06
2 经济科学译丛:金融学(第2版) 47.60 图片路径http://www.jd.com/upload/2.jpg 兹维·博迪 清华大学出版社 京东自营 2015-07
3 货币金融学(原书第2版) 56.30 图片路径http://www.jd.com/upload/3.jpg 米什金 机械工业出版社 第三方运营 2011-05

**2、查看已创建的数据表

① 使用show tables; 查看当前数据库下的所有数据表


image.png

② 使用show tables like ‘%关键词%’; 查询数据库下指定的数据表
3、查看已创建的表的完整结构
show create table student;


image.png

3、****查看数据表****结构****信息

① desc 数据表名称; 查看数据表结构


image.png

② describe 数据表名称; 查看数据表结构


image.png

4、修改****数据表****名称(****重点)

基本语法:
alter table 数据表名称(旧名) rename to 数据表名称(新名);


image.png

5、修改****数据表引擎****(****myisam****与innodb)****与编码格式****(gbk与****utf****8)

① 更改数据表引擎为innodb(默认都使用myisam引擎)
基本语法:
alter table 数据表名称engine = 要设置的引擎名称;
② 更改数据表的编码格式(默认使用utf8编码)
基本语法:
alter table 数据表名称charset = 要设置的编码格式;


image.png

6、数据表****字段修改(****添加/修改/删除)

① 为数据表添加字段
基本语法:
alter table 数据表名称 add 字段名称 字段类型 [first|after] 字段名称;

image.png

② 修改数据表字段(修改字段名称与修改字段类型)
1)修改字段名称(change)
基本语法:
alter table 数据表名称 change 旧字段名称 新字段名称 字段类型;
image.png

2)修改字段类型(modify)
基本语法:
alter table 数据表名称 modify 字段名称 新字段类型;
image.png

③ 删除数据表中的字段
基本语法:
alter table 数据表名称 drop 要移除的字段名称;
image.png

7、数据****表的删除

基本语法:
drop table 数据表名称;


image.png

六****、****数据库****的****数据****增删改查操作****(****重点中的重点****)

1、向****数据表中添加数据(增加操作)

原则:添加的数据的数据类型必须和所对应的字段的数据类型保持一致
基本语法:
① 不指定字段名称添加数据
insert into 表名 values (字段1对应的数据,字段2对应的数据…字段N对应的数据);
② 指定字段名称添加数据
insert into 表名(字段名称1,字段名称2) values (字段1对应的数据,字段2对应的数据);


image.png

常见错误:


image.png

image.png

2、从****数据表中查询数据****(****查询操作)

基本语法:
① 使用select* from 数据表名称查询所有数据[\G];

  • (通配符) :读取所有字段信息


    image.png

    ② 筛选字段查询数据
    基本语法:
    select 字段名称1,字段名称2 from 数据表名称;


    image.png

    错误:
    image.png

    ③ 查询数据时指定查询条件
    基本语法:
    select * from 数据表名称 where(关键词) id = 1; //查询id = 1的记录信息


    image.png

3、修改****数据表中的数据(修改****|更新****操作****)

基本语法:
注意:修改一定要加条件进行修改,否则就会更改所有的数据
update 数据表名称 set 字段名称1=字段的值,字段名称2=字段的值 where 条件;


image.png

4、从****数据表中删除数据(****删除****操作)

基本语法:
注意:删除一定要加条件进行删除,否则就会删除所有的数据
delete from 数据表名称 [where 删除条件];


image.png

image.png

由上图可知:在删除时一定要指定删除条件,否则系统会删除所有记录,这个过程是不可逆的,所以删除时一定要特别注意。——数据无价

5、truncate

truncate [table] 表名;用于直接删除整个表(结构)并重新创建该表。
1,删除整个表(数据和结构都没有了)
2,重新创建该表(全新表)。
3,跟delete 语句不带where条件,有什么区别?
主要影响的是类似:auto_increment这种类型的字段值:
truncate结果会重新计算,delete还会继续增长。

6、列属性

-- 创建表  CREATE table if NOT EXISTS goods(  
goods_id int PRIMARY KEY  auto_increment not null comment '商品ID',  
goods_name VARCHAR(100) not null comment '商品名称',  
goods_price DECIMAL(8,2) DEFAULT 0.00  comment '商品价格',  
goods_num  int DEFAULT 0 comment '商品的数量',  
goods_date TIMESTAMP comment '商品出厂日期',  
goods_area VARCHAR(100) comment '商品产地',  
goods_new tinyint not null DEFAULT 1 comment '1为新品,0为非新品',  
status tinyint not null DEFAULT 1 comment '商品数据是否被删除,1代表没有被删除,0代表被删除'  
)engine=myisam charset=utf8;

除了数据类型对列进行数据规范之外,还有一些额外的限制对字段进行约束。
列属性:null/not null,default,primary key,auto_increment,comment,unique key

NULL

字段是否允许为空,不允许为空就是not null。
语法:字段名 数据类型 NULL/NOT NULL,默认的是null

默认值

关键字default,在定义结构的时候,如果字段没有被指定数据,那么系统会使用默认的数据来进行数据填充。

主键

主要的键,用主键修饰的字段,不能为null,也不能出现任意数据的重复。能够唯一的标识出一条记录。一张表只能有一个主键。
添加主键:

  1. 在要做主键的字段之后添加primary key关键字
  2. 在所有的字段之后,指定主键
    语法:primary key(字段列表)
  3. 假设表已经存在了,但是需要增加主键,可以通过修改表的结构来增加主键:必须实现保证该字段的数据没有重复。
    a) 修改字段,给字段增加primary key属性
    b) 可以直接通过修改表结构增加主键(复合主键)
    alter table 表名 add primary key(主键字段)
    主要的效果:具有唯一性,不能插入重复的数据
    主键不能修改,但是可以删除
    语法:修改表结构
    alter table 表名 drop primary key;

自增长

auto_increment,当某个字段有了自增长属性之后,如果给该字段在进行数据新增的时候,没有指定数据,那么系统会自动在原有的基础上自动+1,说明字段类型必须是整型。
自动增长通常是搭配主键使用
删除自增长
alter table 表名 modify 字段 不再增加auto_increment属性;
想要删除有自动增长的主键,必须先删除自动增长再删除主键。
注意:主键一般都是和自增长一起使用,一张表只能有一个主键一个自增长。

七、数据库的其他操作

1、数据库****存储****引擎

① 查看MySQL支持的数据库引擎(MySQL5.5以后默认的存储引擎是innerDB)
基本语法:
show engines; 查看MySQL支持的所有引擎


image.png

② 支持的功能不同
Myisam引擎:擅长数据查询和新增操作,另外其还支持全文索引(英文分词技术)
InnoDB引擎:擅长数据的更新和删除操作,还支持事务处理,另外MySQL5.5之后其也支持全文索引了
③ 存储机制也不同
2种引擎对应的数据库的结构不一致,文件数目不一致,且数据保存的文件也不一致


image.png

innerDB的数据文件在[图片上传失败...(image-7089e-1572573913468)]

InnoDB和myisam区别

  1. 文件的存储形式不一样
  2. myisam的批量插入和查询效率高,而InnoDB的修改和删除效率高
  3. 事务安全只有InnoDB支持,myisam不支持
  4. InnoDB支持外键,myisam不支持

2、字符集

字符集:就是使用一组字符来保存数据,常用的字符集有以下三种:
ANSI :美国最早期的字符集,在内存中占用一个字节的长度(1字节 = 8bit),8bit就是八个小房间,每个房间存储的就是0或1。2^8 = 256种字符
GBK :中国自己的字符,一个汉字占用2个字节长度。其所有描述的字符种类:256*256= 65536中字符
UTF8 :国际编码字符集,一种通用字符集
① 查看mysql支持的字符集
show character set;
② MySQL乱码问题
客户端使用GBK编码:一个汉字占用2个字节长度
服务器使用UTF8编码:一个汉字占用3个字节长度
③ 解决办法
set names gbk 或者set names utf8

3、校对集

① 使用show collation; 查看MySQL支持的校对集
MySQL支持多种校对集,但是细分下来只有三种校对集需要掌握:
1)以_bin结尾的:二进制校对集,区分大小写,使用ASCII对元素进行比较。
2)以_ci结尾的:case insensitive缩写,对大小写不敏感
3)以_cs结尾的:case sensitive缩写,对大小写非常敏感,严格区别大小写
默认情况下,如果不特别指定,使用_ci方式设置数据表
校对集的实现:在创建数据表(库)的时候指定校对集:collate = 校对集
②校对集的使用:在需要对数据进行比较的时候会自动的启用
对数据进行排序的时候一定会用到校对集。
基本语法:
select * from 数据表名称 order by name [asc|desc];
asc :正序输出(默认的)
desc:倒序输出

你可能感兴趣的:(第10天 MySQL安装-初识-表设计(命令行模式))