mysql建立基本表之前必须先建立_mysql进阶基础

SQL的基本操作

CRUD:create(创建:增),read/retrieve(读取:查),update(更新:改),delete(删除:删)

软件结构

mysql是一种c/s软件结构。在运行之前,必须保证服务端和客户端同时运行才能正常工作。

工作流程

1.      客户端发送连接请求,建立连接:mysql–h –P –u –p

a)        h:host,ip地址或者域名,默认可以没有代表localhost

b)        P:大写,端口默认为3306

c)        u:username,用户名

d)        p:password,用户密码

登录成功

2.      准备SQL语句:逐行执行,以分号为结束符

3.      发送SQL语句:发送给服务器

4.      服务器接收SQL并执行

5.      服务器发送执行结果给客户端

6.      客户端解析结果

电脑反应太快,看到的结果是以上四个步骤感觉就是一步到位

7.      关闭连接

a)        exit

b)        quit

c)        \q

mysql客户端操作服务端原理

所有的处理操作都是在服务端,客户端只是负责发送SQL语句和接收执行结果,并解析。

管理服务端

windows下有三种方式进行服务端管理

1.      windows服务管理

2.      通过服务命令在dos(CMD)下管理

net:管理服务

net start|stop 服务名

3.      直接通过mysqld.exe启动

mysqld的执行必须要指定配置文件才能启动成功

mysqld.exe –defaults-file=d:/server/mysql/my.ini

服务端内部结构

服务器是由数据库系统在帮助运行。

在服务器端,有四个对象,分别是:数据库管理系统->数据库->数据表->数据字段->管理数据

数据库基本操作

数据库基本操作包含三个部分:库操作,表操作(字段操作),数据操作

库操作

SQL语句是以行为执行单位,每行结束都应该有结束符号分号(有特例:建议每行语句都有分号)

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

库选项:

字符集设置(charset):表示以后在当前数据库存储的数据,默认采用utf-8的字符集存储

校对集设置(collate):如何比较大小

执行以上语句,数据库管理系统做了哪些事情?

1.      创建了一个叫做mydatabase的数据库(默认使用utf8来存储数据)

2.      会在磁盘里开辟一块空间来存储数据(对应外部体现就是创建一个文件夹,文件夹的名字叫做mydatabase)

文件夹的路径可以通过my.ini查看

新建的数据库

3.      库选项在数据库文件夹下有一个对应的文件db.opt

数据库命名规范

1.      使用字母,下划线和数字构成

2.      不能是关键字,如果是关键字,需要使用反引号将名字包裹

a)        反引号:esc下面的波浪线按键对应的英文状态下的输出

错误

正确

3.      可以使用中文作为数据库名字,但是也需要使用反引号(强烈建议:不用使用中文)

查看数据库:

查看数据库基本信息:show databases;||模糊查询:show databases like ‘pattern’

查看所有

模糊匹配:%匹配任何内容,_表示匹配一个字符

下划线使用

查看数据库创建语句:show createdatabase 数据库名字

修改数据库:数据库名称不可修改,只能修改数据库的库选项

语法:alter database 数据库名字 [库选项]

删除数据库:drop Database 数据库名字;

表操作

表不能脱离字段存在,字段也不能脱离表,所谓的表操作就是表和字段同时操作。

新增表:create table 表名(字段1 字段类型,字段2 字段类型)[表选项]

1.      字段必须要有字段类型:字段 字段类型

2.      字段与字段之间使用逗号分隔

3.      最后一个字段不需要使用逗号

表选项

字符集:当前表的数据采用什么字符集保存,字符集以表的字符集为标准

存储引擎:当前表的数据采用什么样的存储引擎来存储

存储引擎:不同存储和处理数据的方式

创建数据库出现问题

注意:数据表必须存储在数据库的内部。

两种方式解决以上问题

1.      显示指定数据库:在创建表名的时候使用:库.表名

2.      隐式的指定数据:事先进入到某个数据库的环境:use 数据库名字

创建表语句执行之后的结果:在对应的数据库文件夹下创建两个对应的数据表的结构文件

该结构与选定的存储引擎有关系

存储引擎:InnoDB和Myisam

InnoDB:只会创建一个表结构文件,其他的索引和数据存放在ibdata1文件中

Myisam:会创建三个文件,一个是结构文件,一个是数据文件,一个是索引文件

查看表:

1.      查看表基本信息:showtables || show tables like ‘pattern’;

2.      查看表的创建语句:showcreate table表名;

3.      查看表结构:desc|describe表名/show columns from 表名

修改表

可以修改表的名字,表的字段的增删改查,字段的属性的修改,字段的位置的修改

语法:alter table 表名 [add/modify/drop] [column] 字段名字 [字段类型] [字段位置]

增加字段

alter table 表名 add column 字段名字 字段类型 [位置]

字段默认在表最后增加

位置:first表示在最前面,after表示在某个字段之后(默认其实是after在最后一个字段之后)

修改字段

修改字段位置,修改字段的类型,修改字段的名字

修改字段类型+字段位置

修改字段名字

alter table 表名 change 旧字段 新字段 字段类型字段位置

注意:不管是修改字段的那部分都应该跟上字段类型。

删除字段

alter table 表名 drop 字段名字

语法:rename table 旧表名 to 新表名

删除表:drop table 表名

删除表还会对表文件进行删除

注意:

1.      创建过程中会不知道当前表名是否存在:if not exists表示只有表名不存在的时候才去创建,否则放弃执行;

2.      删除表的过程中,不知道表是否已经存在:if exists

3.      数据库和数据表都不能随意的删除,删除具有不可逆性。如果确定要删除数据库或者数据表,那么必须要事先备份。

数据操作

新增数据:insert into 表名 (字段列表) values(值列表)

字段列表可以没有,意味着值列表里的字段数必须与表中的字段数完全一致

插入数据必须注意

1.      插入的值类型必须与数据字段定义的数据类型一致,除了整型可以不加引号之外,其他的都要加上引号

2.      整型也可以加上引号

在严格模式下,只能将数值字符串转化成数值

在严格模式下,自增不能使用空字符串来代替

3.      允许一次性插入多条记录,在values字段后面使用逗号分隔即可

查看数据:select 字段列表 from 表名 [where 条件]

修改(更新)数据:update 表名 set 字段 = 值 [where条件]

删除数据:delete from 表名 [where条件]

注意:一定要小心删除数据,切记需要使用where条件,在删除之前需要对数据进行备份

行(row)和记录(record):行和记录表示的意思是完全一样的,行是站在表结构的角度上定义,而记录是站在数据的角度上去定义

列(column)和字段(Field):与行和记录的区别是一样的。

字符集问题(乱码问题)

1.      mytable1存储的数据是utf8字符集(在创建表的时候,指定了表的数据存储字符集为utf8)

2.      cmd控制台只能是gbk格式的数据:说明cmd下只能输入和显示gbk格式的数据

3.      set names gbk的功能

客户端与服务端进行不同编码的通信的原理

了解数据库的字符集

查看数据库支持哪些字符集?showcharacter set;

mysql支持39中字符集编码。

查看服务器对客户端的默认识别方式:将客户端当前何种字符集对待。

show variables like ‘character_set_%’;

1.      要保证服务器能够正确识别客户端传过去的数据,只要保证character_set_client的字符集与客户端的字符集一致即可。

set character_set_client = gbk;

2.      要保证服务器能够正确的给客户端提供对应字符集的数据,只要保证character_set_results与客户端的字符集一致即可

set character_set_results = gbk;

3.      set names gbk:所做的事情就是将传输数据以及接受数据都设置成当前客户端的字符集

set names gbk;

<=========>

set character_set_client = gbk;

set character_set_connection = gbk;

set character_set_results = gbk

set character_set_database = gbk;

在使用cmd下面的mysql.exe的时候:set namesgbk

在使用EditPlus的时候,EditPlus下面的编码是ANSI,ANSI代表当前电脑默认的字符集,中国大陆销售的电脑默认都是gbk编码:set names gbk

在使用EditPlus的时候,EditPlus下面的编码是utf-8:set names utf8

一旦数据库存储的数据本身是乱码,那么任何修改都不可以生效,全部查看到的都是乱码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值