澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

核对集难点

2019-11-04 作者:数据库网络   |   浏览(188)

1.1 数据库的发展史

1 MySQL学习路线

  • 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图、触发器、函数、存储过程等)。
  • 优化阶段:如何提高数据库的效率,如索引,分表等。
  • 部署阶段:如何搭建真实的环境系统,如服务器集群,负载均衡等。

 

1.1.1 萌芽阶段——文件系统

核对集难点。文件系统

2 数据库的基础

1.1.2 第一代数据库——层次模型、网状模型

1.1.2.1层次模型

这是一种导航结构,导航结构的优点:分类管理;导航结构的缺点:如果保存不是同一类的数据,效率很低。

层次结构最大问题是失去了数据的完整性

澳门新萄京官方网站 1

 

1.1.2.2网状模型

澳门新萄京官方网站 2

 

2.1 什么是数据库?

  • 数据库:database,存储数据的仓库。
  • 数据库(专业定义):高效的存储和处理数据的介质(介质主要是两种:磁盘和内存)。

 

1.1.3 第二代数据库——关系型数据库

每一个存放数据的表都是独立的,通过公共字段建立关系。

澳门新萄京官方网站 3

 

1、 优点:

a) 每个都独立了,查询的时候效率高

b) 对数据的约束功能强大

2、 缺点:多表查询效率低。

多学一招:非关系型数据库(NoSQL),这种数据库是一种键值对形式的数据库,查询效率高,但对数据约束功能很低。(redis、mongodb)。非关系型数据库是对关系型数据库的一种补充。

2.2 数据库的分类?

  • 基于存储介质的不同
    • 关系型数据库(SQL)
    • 非关系型数据库(NoSQL)  

 

1.2 数据库系统

数据库的本质就是文件

数据库系统(DBS)=数据库(DB) 数据库管理系统(DBMS)

也就是说:数据库系统包括数据库文件和操作数据库文件的软件。

2.3 不同的数据库阵营中的产品有哪些?

  • 关系型数据库:
    • 大型数据库:Oracle、DB2。
    • 中型数据库:SQL Server、MySQL等。
    • 小型数据库:access等。  
  • 非关系型数据库:
    • memached
    • mogodb
    • redis  

 

1.3 SQL

SQL是Structured Query Language(结构化查询语言)缩写,用来操作关系型数据库的语言。

SQL语句是一个标准SQL,可以用来操作所有的关系型数据库。

2.4 两种数据库阵营的区别?

  • 关系型数据库:安全(保存磁盘基本不可能丢失),容易理解,比较浪费空间。
  • 非关系型数据库:效率高,不安全(断电会丢失)。

 

1.3.1 关系型数据库

每个公司为了更多的占有市场份额,在原来的标准SQL基础上扩展自己独有的东西用来吸引消费者。

数据库

使用语言

开发公司

access

SQL

微软

SQL Server

T-SQL

微软

MySQL

MySQL

Oracle公司收购

Oracle

PL/SQL

甲骨文公司

问题:已知MySQL和Oracle都支持标准SQL(SQL-92),请问在MySQL上编写的MySQL语句能否运行在Oracle上?

答:不能,因为MySQL是MySQL扩展的东西。不能运行在Oracle上。他们只能相互运行标准SQL。

3 关系型数据库

1.4 MySQL操作过程

澳门新萄京官方网站 4

3.1 什么是关系型数据库?

  • 关系型数据库:是一种建立在关系模型(数学模型)上的数据库。
  • 关系模型:一种所谓建立在关系的模型,关系模型包括以下三个方面:
    • 数据结构:数据存储的问题,二维表(有行和列)。
    • 操作指令集合:所有SQL语句。
    • 完整性约束:表内数据约束,表与表之间约束(外键)。  

 

1.5 启动关闭MySQL服务

3.2 关系型数据的设计?

  • 从需要存储的数据需求中分析,如果是一类数据(实体,比如人、书本等)应该设计成一张二维表,表是由表头(字段名)和数据部分(实际存储的数据单元)组成,如下图所示。  
表头 字段1 字段2
数据单元 数据1 数据2

 

 

 

  • 以实际案例来进行处理:分析一个教学系统,讲师负责教学,教学生,在教室教学。
    • ①找出系统中的实体:讲师表,学生表,班级表。
    • ②找出实体中应该存在的数据信息:
      • 讲师:姓名,性别,年龄,身高,工资等。
      • 学生:姓名,性别,学好,学科等。
      • 班级:班级名字,教室编号等。 

 

      • 关系型数据库:维护的是实体内部,实体与实体之间的联系。
      • 实体内部的联系:每个学生都有姓名,性别,学号,学科,年龄等信息。    
姓名 性别 学号 学科 年龄
张三 001 java 23
李四 002 MySQL  
王二   003 Linux 17

 

 

 

 

      • 第二行的所有字段,都是描述张三这个学生(内部联系);第二列只能存放性别(内部约束)。    
      • 关系型数据库的特点之一:如果表中对应的某个字段没有值(数据),但是系统依然需要分配空间,所以关系型数据库比较浪费空间。    

 

      • 实体与实体之间的联系:每个学生属于某个班级,每个班级一定有多个学生(一对多)。    
      • 学生表:      
姓名 性别 学号 学科 年龄
张三 001 java 23
李四 002 MySQL  
王二   003 Linux 17

 

 

 

 

      • 班级表:    
班级名称 教室编号
java001 A001
Linux002 B005

 

 

 

 

      • 解决方案:在学生表中增加一个班级字段来指向班级(必须能够唯一的找到一个班级信息)    
姓名 性别 学号 学科 年龄 所属班级
张三 001 java 23 java001
李四 002 MySQL   MySQL005
王二   003 Linux 17 Linux002

 

 

 

 

      • 学生实体与班级实体之间的关系:实体与实体之间的关系。    

 

1.5.1 方法一:在服务面板中启动或关闭

澳门新萄京官方网站 5

 

 

多学一招:通过命令打开服务面板

打开运行面板(win R),在面板中输入services.msc

澳门新萄京官方网站 6

 

4 关键字说明

  • 数据库:database。
  • 数据库系统:database system(DBS):是一种虚拟系统,将多种内容关联起来的称呼。DBS=DBMS DB。
  • DBMS:数据库管理系统,database management system,专门管理数据库。
  • DBA:数据库管理员,database administrator。
  • 行/记录:row/record,本质是一个东西,都是指表中的一行(一条记录)。行是从结构角度,记录是从数据角度出发。
  • 列/字段:column/Field,本质是一个东西。

 

1.5.2 方法二:通过命令行启动和关闭

启动服务:net start 服务名

关闭服务:net stop 服务名

澳门新萄京官方网站 7

 

 

 

澳门新萄京官方网站 8

 

多学一招:net start 显示当前所有的服务列表。

5 SQL

  • SQL:Structured Query Language,结构化查询语言(数据主要以查询为主)。
  • SQL分为三个部分:
    • DDL:Data Definition Language,数据定义语言。用来维护存储数据的结构(数据库,表),代表指令:create、drop、alter等。
    • DML:Data Manipulation Language,数据操作语言,用来对数据进行操作(数据表中的内容),代表指令:Insert、delete、update等。其中DML内部又单独进行了一个分类:DQL(Data Query Language:数据查询语言,如select)。
    • DCL:Data Control Language,数据控制语言,主要负责权限管理,代表指令:grant、revoke等。  
  • SQL是关系型数据库的操作指令,SQL是一种约束,但不强制(类似于W3C),所以不同的关系型数据库产品(Oracle,MySQL等)内部可能有一些细微的差别。

 

1.6 MySQL客户端

 

6 MySQL数据库

  • MySQL数据库是一种C/S结构的软件:客户端/服务端,如果想访问服务器必须通过客户端(服务器一直运行,客户端在需要使用的时候运行)。
  • 交互方式:
    • ①客户端连接认证:连接服务器,认证身份。  

澳门新萄京官方网站 9

    • ②发送SQL指令。 
    • ③服务器接收SQL指令,处理SQL指令,返回操作结果。
    • ④客户端接收结果,显示结果。 

澳门新萄京官方网站 10

    • ⑤断开连接(释放资源:服务器并发限制)。  

 澳门新萄京官方网站 11

 

1.6.1 MySQL自带的命令行客户端

安装MySQL后,会自带一个MySQL 5.5 Command Line Client命令行客户端。

澳门新萄京官方网站 12

 

 

双击打开,输入密码,就连接上服务器了。

缺点:此客户端只能连接本地的MySQL服务器。

7 MySQL服务器对象

  •  没有办法完全了解服务器内部的内容:只能粗略的去分析数据库服务器的内部结构。
  •  将MySQL服务器内部对象分成了四层:
    • 系统(DBMS)
    • 数据库(DB)
    • 数据表(Table)
    • 字段(Field)  

 

1.6.2 window界面客户端

1、 MySQL-Front

2、 Navicat

8 SQL的基本操作

  •  基本操作:CRUD。
  • 将SQL的基本操作根据操作对象进行分类,分为三类,如下所示:
    • 库操作。
    • 表操作(字段)。
    • 数据操作。  

 

1.6.3 web界面

phpMyAdmin

9 库操作 

  •  对数据库的增删改查。

1.6.4 windows的命令行

运行——cmd

9.1 新增数据库 

  •  基本语法

    create database 数据库名字 [库选项];

  • 库选项:用来约束数据库,分为两个选项。

    • 字符集设定:charset/character set 具体字符集(数据存储的编码格式)。
    • 校对集设定:collate 具体校对集(数据比较的规则)。    

 

  • 示例:创建一个数据库。

    核对集难点。-- 单行注释,也可以用# # 创建数据库 CREATE DATABASE mydatabase CHARACTER SET utf8;

澳门新萄京官方网站 13

 

  •  其实,数据库名字不能使用关键字(已经被使用的字符)或保留字(将来可能会使用的字符)。

 

  • 当创建数据库的SQL语句执行之后,发生了什么?
    • ①在数据库系统中,增加了对应的数据库信息。
    • ②会在保存数据的文件夹下:Data目录,创建一个对应数据库名字的文件夹。  

澳门新萄京官方网站 14

    • ③每个数据库下都有一个opt文件:保存了库选项。  

澳门新萄京官方网站 15

 

1.7 windows命令行连接服务器

host主机-h

username用户名-u

password密码-p

port端口-P

澳门新萄京官方网站 16

 

 

注意:如果配置了MySQL的环境变量,执行mysql命令就不需要进入mysql.exe的目录。

127.0.0.1表示本地地址,等价于localhost

多学一招:如果连接的是本地的MySQL服务器,-h可以省略;如果使用的是3306端口,-P也可以省略

澳门新萄京官方网站 17

 

可以通过密文来登录

 澳门新萄京官方网站 18

 

9.2 查看数据库

  • 基本语法

    • ①查看所有数据库。  

    -- 查看所有数据库 show databases;

    • ②查看指定部门的数据库:模糊查询。  

    -- 查看指定部分的数据库 show databases like 'pattern'; -- pattern是匹配模式 %:表示匹配多个字符 _:表示匹配单个字符

    • ③查看数据库的创建语句。  

    -- 查看数据库的创建语句 show create database 数据库名字;

 

  • 示例:查看所有数据库

澳门新萄京官方网站 19

 

  • 示例:查看指定名称为test的数据库。

澳门新萄京官方网站 20

 

  • 示例:查看含有t名称的数据库。

澳门新萄京官方网站 21

 

  • 示例:显示mydatabase数据库的创建语句。

澳门新萄京官方网站 22

 

1.8 退出MySQL客户端并关闭连接

1、 exit

 澳门新萄京官方网站 23

2、 quit

 澳门新萄京官方网站 24

 

3、 q

澳门新萄京官方网站 25

9.3 更新数据库

  • 数据库名字是不可以改变的,不然如何定位哪一个数据库,换句话说,原来有一个数据库名为test,你现在将其它数据库改为test,这样好吗?
  • 数据库的修改仅限库选项:字符集和校对集(校对集依赖于字符集)。

 

  • 基本语法

    alter database 数据库名字 [库选项]。 character set [字符集] collate 绞对集

 

  • 示例:修改mydatabase数据库的默认编码。

澳门新萄京官方网站 26

 

1.9 数据库基本概念

1、 数据库和表

数据库用来存放表,表里面存放数据,一个数据库可以存放多个表,一个表中存放多个数据

澳门新萄京官方网站 27

 

 

2、 关系:两个表的公共字段称为关系

3、 行:也称为记录,也称为实体

4、 列:也称为字段,也称为属性

在结构上称为行和列

在数据上称为记录和字段

5、 数据冗余:相同的数据存储在不同地方

澳门新萄京官方网站 28 

脚下留心:冗余只能减少,不能杜绝。减少冗余后,表的数量就增加了。

6、 数据完整性=正确性 准确性

正确性:数据类型正确

准确性:数据的范围准确

思考:学生年龄是int型,输入10000岁,正确性和准确性如何?

答:正确的,但是不准确

9.4 删除数据库

  • 所有的操作中:删除是最简单的。
  • 基本语法

    -- 删除数据库 drop database 数据库名字;

 

  • 示例:删除mydatabase数据库。

澳门新萄京官方网站 29

 

  • 当删除数据库语句执行之后,发生了什么?
    • 在数据库内部看不到对应的数据库。
    • 在对应的数据库存储的文件夹内,数据库名字对应的文件夹也被删除(级联删除:里面的数据库表一起被删除)。  

 

  • 注意:数据库的删除不是闹着玩的,不要随意的删除,应该先进行备份操作,然后才考虑是否删除(删除不可逆)。

 

1.10 数据库操作

10 表操作

  •  表和字段是密不可分的。

 

1.10.1 创建数据库

1、语法:create database if not exists`数据库名` charset=字符编码

澳门新萄京官方网站 30

 

2、如果创建的数据库已经存在,则会报错

澳门新萄京官方网站 31

 

 

解决:创建时候判断一下,数据库是否存在,如果不存在就创建

澳门新萄京官方网站 32

 

 

3、如果数据库名是关键字或特殊字符会报错

澳门新萄京官方网站 33

 

 

解决:是数据库名上加上反引号

澳门新萄京官方网站 34

 澳门新萄京官方网站 35

澳门新萄京官方网站 36

 

为了保证创建数据库成功,可以在所有的数据库名上加上反引号

4、可以给创建的数据库指定字符编码

 澳门新萄京官方网站 37

 

 澳门新萄京官方网站 38

 

10.1 新增数据表

  • 基本语法

    -- 新增数据表 create table [if not exists] 数据表名字(

    字段名字 数据类型,
    字段名字,数据类型   -- 最后一行不不要逗号
    

    )[表选项]; if not exists:如果表名不存在,那么就创建,否则不执行创建。 表选项:控制表的表现。 字符集:charset/character set 具体字符集;--保证表中数据存在的字符集。 校对集:collate 具体校对集。 存储引擎:engine 具体的存储引擎(innodb和myisam)

 

  • 示例:创建一个名为student的表。

澳门新萄京官方网站 39

    • 任何一个表的设计都必须指定数据库。  
    • 解决方案:
      • ①显示指定表所在的数据库。  

    -- 显示的指定表所在的数据库 create table 数据库名.表名( 字段1 数据类型, 字段2 数据类型 );

澳门新萄京官方网站 40

      • ②隐式的指定表所属数据库:先进入到某个数据库环境,然后这样创建的数据库表自动归属到某个数据库。    

    -- 进入到数据库环境 use 数据库名字; -- 创建数据表 create table 数据表名( 字段1 数据类型, 字段2 数据类型 );

澳门新萄京官方网站 41

 

  • 当创建数据库的SQL指令执行之后,到底发生了什么?
    • 指定数据库下已经存在对应的表。
    • 在数据库对应的文件夹下,会产生对应表的结构文件(和存储引擎有关)。  

澳门新萄京官方网站 42

 

1.10.2 MySQL数据库目录

1、 此目录在安装mysql服务器的时候选择路径

2、 可以在my.ini中查看并更改

 澳门新萄京官方网站 43

 

3、 创建一个数据库就在data文件夹下创建一个与数据库同名的文件夹,并在此文件夹下多了一个db.opt文件。db.opt文件是设置数据库的字符集和校对集。

 澳门新萄京官方网站 44

 澳门新萄京官方网站 45

10.2 查看数据表

  • 数据库能查看的方式,表都可以查看。

 

  • 基本语法

    • 查看所有表  

    -- 查看所有表 show tables

    • 查看部分表  

    -- 查看部分表 show tables like 'pattern';

    • 查看表的创建语句  

    -- 查看表的创建语句 show create table 表名;

    • 查看表结构:查看表中的字段信息  

    -- 查看表结构 ①desc 表名; ②describe 表名; ③show columns from 表名;

 

  • 示例:查看所有表

澳门新萄京官方网站 46

 

  • 示例:查看创建student表的语句。

澳门新萄京官方网站 47

 

  • 示例:查看表结构。

澳门新萄京官方网站 48

 

1.10.3 显示数据库

语法:show databases;

 澳门新萄京官方网站 49

 

information_schema:存储了mysql服务器的管理数据库的信息。比如:数据库名、表名、字段名、字段的数据类型、访问权限

performance_schema:MySQL5.5新增的一个数据库,主要用来收集数据库服务器性能参数。

mysql:mysql系统数据库,保存比如用户名、密码

test:给用户学习测试用的数据库

10.3 修改数据表

  • 表本身存在,还包含字段,所以表的修改分为两个部分:修改表本身和修改字段。

 

  • 修改表本身:

    • 表名  
      • 基本语法:    

    -- 修改表名 rename table 老表名 to 新表名;

      • 示例:将student表的名字改为stu.    

澳门新萄京官方网站 50

 

    • 表选项:字符集,校对集和存储引擎。  

    alter table 表名 [表选项];

      • 示例:修改stu表的编码为gbk          

澳门新萄京官方网站 51

 

  • 修改字段

    • 新增字段    

    alter table 表名 add [column] 字段名 数据类型[列属性][位置]; 位置:字段名可以存在表中的任意位置

     first:第一个位置
     after:在哪个字段之后,after 字段名,默认在最后
    

澳门新萄京官方网站 52

 

    • 修改字段  

    alter table 表名 modify 字段名 数据类型[列属性] [位置];

澳门新萄京官方网站 53

 

    • 重命名字段  

    alter table 表名 change 旧字段名 新字段名 数据类型[列属性][位置];

澳门新萄京官方网站 54

 

    • 删除字段  

    alter table 表名 drop 字段名;

澳门新萄京官方网站 55

 

1.10.4 显示创建数据库的SQL语句

语法:show create database `数据名`

澳门新萄京官方网站 56

10.4 删除数据表

  • 基本语法

    -- 删除表 drop table 表名1,表名2,……;

澳门新萄京官方网站 57

 

  • 当删除数据表的指令执行之后发生了什么?
    • ①在表空间中,没有了指定的表(数据也没有了)。
    • ②在数据库对应的文件夹下,表对应的文件(与存储引擎有关)也会被删除。  

澳门新萄京官方网站 58

 

1.10.5 修改数据库

只能修改数据库字符编码

语法:alter database `数据库名` charset=字符编码

 澳门新萄京官方网站 59

11 数据操作

1.10.6 删除数据库

1、语法:drop database [if exists] `数据库名`

澳门新萄京官方网站 60

2、如果删除的数据库不存在会报错

澳门新萄京官方网站 61

解决:删除之前判断一下,存在就删除

 澳门新萄京官方网站 62

 

11.1 新增数据

  • 有两种方案

    • ①给全表字段插入数据,不需要指定字段列表:要求数据的值出现的位置必须和表中设计的字段出现的顺序一致,凡是非数值的数据,都需要使用引号包裹。  

    insert into 表名 values (值列表)[,(值列表)]; -- 可以一次性插入多条记录

澳门新萄京官方网站 63

    • ②给部分字段插入数据:需要选定字段列表,字段列表出现的顺序和字段的顺序无关,但是值列表的顺序必须和选定的字段的顺序一致。

    insert into 表名 (字段列表) values (值列表); 

澳门新萄京官方网站 64

 

1.10.7 选择数据库

语法:use `数据名`

澳门新萄京官方网站 65

11.2 查看数据表

  • 基本语法

    select */字段列表 from 表名 [where 条件] ;

 

  • 示例:查看学生的所有信息

澳门新萄京官方网站 66

 

  • 示例:查看学生的姓名和性别

澳门新萄京官方网站 67

 

1.11 表的操作

11.3 更新数据

  • 基本语法

    update 表名 set 字段1=值1,字段2=值2,……[where 条件];

 

  • 示例:更新id=1的年龄为32

澳门新萄京官方网站 68

 

1.11.1 创建表

语法:

create table [if not exists] `表名`(

字段名 数据类型 [null|not null] [default] [auto_increment] [primary key] [comment],

……

)[engine=存储引擎] [charset=字符编码]

null|not null:是否为空

Default: 默认值

Auto_increment: 自动增长

Primary key: 主键

Comment: 备注

Engine:存储引擎,不同存储引擎表示不同的数据存储方式

Charset:设置表的字符编码

1、创建最简单的表

澳门新萄京官方网站 69 

2、创建复杂的表

澳门新萄京官方网站 70

 

 

11.4 删除数据

  • 基本语法

    delete from 表名 [where 条件];

 

  • 示例:删除name为zhangsan的学生信息

澳门新萄京官方网站 71

 

1.11.2 数据表文件

一个数据库对应一个文件夹,一个表对应一个或多个文件。

1、引擎是myisam,一个表对应三个文件

 澳门新萄京官方网站 72澳门新萄京官方网站 73

2、引擎是innodb,一个表对应是一个文件

澳门新萄京官方网站 74

 

 

 

所有的innodb的数据放在一个统一的文件中管理,路径在data文件夹下ibdata1文件。如果数据量很多,mysql会自动的生成ibdata2,ibdata3,…文件

多学一招:myisam引擎的表相互之间独立, Myisam的表可以随意的拷贝粘贴。innodb引擎的表相互之间不独立,

12 中文数据问题

  • 中文数据问题本质是字符集问题。
  • 计算机只识别二进制,人类更多的是识别符号,所以需要有个二进制和字符的对应关系(字符集)。

 

  • 客户端向服务器插入中文数据:没有成功

澳门新萄京官方网站 75

  • 原因:xD5xC5xC8FD 代表的是“”张三”在当前编码(字符集)下的二进制转换为十六进制,两个汉字-->四个字节(GBK)。

澳门新萄京官方网站 76

  • 报错:服务器没有识别对应的四个字节,服务器认为数据是utf8的,一个汉字对应三个字节;所以服务器读取三个字节转换成汉字,失败了;剩余的再读三个字节,最终失败。
  • 所有的数据库服务器认为(表现)的一些特性是通过服务器端的变量来保存的,系统先读取自己的变量,看看应该怎么表现。

 

  • 查看服务器识别的所有字符集

    show character set;

澳门新萄京官方网站 77

 

  • 服务器默认的和客户端打交道的字符集。

    show variables like 'character_set%';

澳门新萄京官方网站 78

  • 问题根源:客户端数据只能是GDK,而服务器认为是utf8。
  • 解决方案:改变服务器。默认的接收字符集为GBK。

    -- 修改服务器认为的客户端数据的字符集为GBK set character_set_client=gbk;

澳门新萄京官方网站 79

  • 插入中文的效果

澳门新萄京官方网站 80

  • 查看数据效果:依然是乱码

澳门新萄京官方网站 81

  • 原因:数据来源是服务器,解析数据是客户端(客户端只识别GBK:只会两个字节一个汉字),但是服务器给的数据是UTF8,所以导致乱码。
  • 解决方案:修改服务器给客户端的数据字符集为GBK。

    set character_set_results=gbk;

澳门新萄京官方网站 82

  • 查看数据效果

澳门新萄京官方网站 83

 

  • set 变量=值;这样修改只是会话级别(当前客户端当次连接有效,关闭失效)

澳门新萄京官方网站 84

  • 设置服务器对客户端的字符集的认知,如果按照上面的方式,太麻烦了。可以使用快捷方式。

    set names 字符集;

澳门新萄京官方网站 85

 

1.11.3 myisam和innodb引擎

1、 Myisam

a) 读取速度快

b) 对数据的约束能力低(不支持触发器,存储过程等等)

c) 容易产生大量碎片

2、 Innodb

a) 读取速度没有myisam快

b) 对数据的约束能力强(支持触发器,存储过程等等)

c) 不产生碎片

13 校对集问题

  • 校对集:数据比较的方式。
  • 校对集有三种方式:
    • _bin:binary,二进制比较,取出二进制位,一位一位的比较。区分大小写。
    • _cs:case sensitive,大小写敏感,区分大小写。
    • _ci:case insensitive.大小写不敏感,不区分大小写。  

 

  • 查看数据库所支持的绞对集

    show collation;

澳门新萄京官方网站 86

澳门新萄京官方网站 87

澳门新萄京官方网站 88

澳门新萄京官方网站 89

 

  • 校对集应用:只有当数据产生比较的时候,校对集才会生效。

 

1.11.4 给指定的数据库中创建表

澳门新萄京官方网站 90

14 Web乱码问题

  • 动态web由三个部分构成:浏览器、web服务器(如Tomcat等)、数据库服务器,三个部分都有自己的字符集(尤其是中文),数据需要在三个部分之间来回传递,很容易产生乱码。
  • 如果解决乱码问题:统一编码(三码合一)。

1.11.5 显示表

语法:show tables;

澳门新萄京官方网站 91

 

1.11.6 显示表的创建语句

语法:show create table 表名[G]

澳门新萄京官方网站 92

 

G的作用:

G是将显示的字段竖着排列

1.11.7 查看表结构

语法:describe[desc] 表名

澳门新萄京官方网站 93

 

澳门新萄京官方网站 94

 

1.11.8 复制表

基于现在的表创建一个新表

语法一:create table 新表 select 字段1,字段2 from 旧表

澳门新萄京官方网站 95

 

脚下留心:这种方式创建表不能从父表中复制主键,自动增长;但是父表中的数据被复制过来。

语法二:create table 新表 like 旧表

澳门新萄京官方网站 96

 

脚下留心:like的方法只能复制表结构,不能复制表数据。

1.11.9 修改表

语法:alter table 表名,可以对表添加字段,删除字段等等操作

1、 添加字段   add [column]

1、在最后一列后面添加字段

澳门新萄京官方网站 97

 

2、将字段添加到第一列

澳门新萄京官方网站 98

 

3、将添加的字段放在指定字段之后

澳门新萄京官方网站 99

 

2、 删除字段

澳门新萄京官方网站 100

不能清空所有的字段。

3、 修改字段 modify   change

a) 只改字段属性,不改字段段名(modify)

将name的属性改为varchar(30),并将位置移动到第一列

澳门新萄京官方网站 101

能修改字段的所有属性,除了字段名和默认值,备注,可以添加任意属性,

b) 改属性并改字段名

将name改名为myname varchar(10)并将位置放在id的后面

澳门新萄京官方网站 102

 

澳门新萄京官方网站 103

能修改字段的所有属性,可以添加任意属性,除了默认值,如果想设置   

4、 修改引擎

澳门新萄京官方网站 104

 

5、 修改表名   rename to

澳门新萄京官方网站 105

 

6、将stu1表移动到data数据库下并改名为stu.

澳门新萄京官方网站 106

 

1.11.10 删除表

语法:drop table [if exists] 表1,表2.表3,…

删除多个表

澳门新萄京官方网站 107

 

删除之前可以判断表是否存在

 澳门新萄京官方网站 108

 

可以一次判断多个表是否存在

澳门新萄京官方网站 109

 

1.12 数据操作

新建测试表

create table stuinfo(

id int auto_increment primary key comment '主键',

name varchar(20) not null comment '姓名',

sex char(1) not null default '男' comment '性别',

score int comment '成绩'

)engine=innodb charset=utf8;

1.12.1 插入数据

澳门新萄京官方网站,语法:insert into 表名 (字段名) values (值)

 

总结:

1、 值的个数、顺序和插入字段的个数、顺序必须一致。

澳门新萄京官方网站 110

 

2、 自动增长列可以手动输入数字,也可以通过null让MySQL自动增长

澳门新萄京官方网站 111

 

3、 插入字段和表字段顺序可以不一致,但是插入的值必须和插入字段的顺序一致。

 澳门新萄京官方网站 112

 

4、 如果插入值的顺序、个数和表字段的顺序个数一致的话,插入字段可以省略

 澳门新萄京官方网站 113

 

5、 插入默认值

a) 如果一个字段有默认值,此字段上没有值的插入就会自动的插入默认值

 澳门新萄京官方网站 114

 

b) 通过default关键字插入默认值

 澳门新萄京官方网站 115

 

6、 一次插入多条数据

澳门新萄京官方网站 116

7、 使用insert…set插入数据

 澳门新萄京官方网站 117

 

1.12.2 修改数据

语法:update 表名 set 字段名=值 [where 条件] [order by 排序] [limit 限制]

将rose的性别改成“女”,成绩改成66

澳门新萄京官方网站 118

将班级的前3名同学性别改成男

 澳门新萄京官方网站 119

 

1.12.3 删除数据

语法:delete from 表 [where条件] [order by 排序 asc|desc] [limit 数量]

--删除学号是1的学生

澳门新萄京官方网站 120

 

--删除第一名

 澳门新萄京官方网站 121

 

--删除成绩在80分以下的

 澳门新萄京官方网站 122

 

--清空表 

澳门新萄京官方网站 123

 

 

多学一招:清空表的方法有两个,第一个是delete from 表名,还有一个是truncate table 表名。delete from 表名执行过程是将数据一条一条的依次删除。truncate table执行过程是将整个表删除同时创建一个相同的表,很显然这种方式清空表的效率高。

澳门新萄京官方网站 124

 

Select * from  表名  删除表的时候自增长的属性还在,在重新加入的时候会延续自增长的键值。

1.13 字符集

字符集:可见字符在保存和传输时对应的二进制编码集合。由概念可知,字符

集在两个地方使用

1、 数据存储的时候

2、 数据传输的时候

1.13.1 数据存储的时候使用字符集

MySQL可以在服务器、数据库、表、字段上设置字符编码

澳门新萄京官方网站 125

 

注意:字符编码在数据库上设置就可以了。

1.13.2 数据在传输的时候使用字符集

场景:

1、 创建表的时候只用中文就报错

澳门新萄京官方网站 126

 

2、 在插入数据中出现中文报错

 澳门新萄京官方网站 127

 

分析

澳门新萄京官方网站 128

 

客户端发送的编码有客户端决定的。我们现在用的客户端是windows的命令行,查看命令行的编码:客户端右键——属性——

澳门新萄京官方网站 129

 

查看服务编码

澳门新萄京官方网站 130

 

解决:告诉服务器通过gbk编码解析发送SQL语句。语法:set 变量名=值

澳门新萄京官方网站 131

 

现在插入成功!

场景:查看插入的数据

澳门新萄京官方网站 132

 

原因:返回的编码是utf8,客户端用gbk去解析的。

解决:将返回的结果编码设置为gbk;

澳门新萄京官方网站 133

 

再次查询,成功

注意:我们一般只执行set names ‘字符编码’,因为这个SQL语句可以一次更改3个变量。

澳门新萄京官方网站 134

 

1.14 校对集

1.14.1 概念

在某种字符集下,字符和字符的比较关系。比如a和B的大小关系,如果区分大小写a>B,如果不区分大小写a<B。这种比较的关系是有校对集决定的。

校对集依赖于字符集,不同的字符集他们的比较规则也不一样,如果字符集发生更改,校对集也要重新定义。

不同的校对集对同一组字符比较结果不一致的。

1.14.2 定义校对集

语法:collate=校对集

定义两个表,校对集不一样

create table t1(

name char(1)

)charset=utf8 collate=utf8_general_ci;

 

create table t2(

name char(1)

)charset=utf8 collate=utf8_bin;

插入测试数据

insert into t1 values ('a'),('B');

insert into t2 values ('a'),('B');

通过排序查看结果

澳门新萄京官方网站 135

 

澳门新萄京官方网站 136

 

校对集名字规则

_bin:表示按二进制编码进行比较

_ci:不区分大小写

_cs:区分大小写

中文排序规则:按照汉字的拼音来排序

1.14.3 显示所有的字符集

澳门新萄京官方网站 137

 

1.14.4 显示所有的校对集

澳门新萄京官方网站 138

 

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:核对集难点

关键词: