MySQL基础

数据库基础

SQL: Structured Query Language, 结构化查询语言(数据以查询为主: 99%是在进行查询操作)

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等

Mysql数据库

Mysql数据库是一种c/s结构的软件: 客户端/服务端, 若想访问服务器必须通过客户端(服务器一直运行, 客户端在需要使用的时候运行).

Mysql服务器对象


将mysql服务器内部对象分成了四层: 系统(DBMS) -> 数据库(DB) -> 数据表(Table) -> 字段(field)

SQL基本操作

库操作
--  查询数据库列表
SHOW DATABASES;

-- 创建数据库
CREATE DATABASE mydatabase CHARSET utf8;

-- 查看数据库创建语句
SHOW CREATE DATABASE mydatabase;

-- 修改数据库字符集
ALTER DATABASE test CHARSET utf8;

-- 删除数据库
DROP DATABASE test;

-- 进入数据库
use mydatabase;
表操作
-- 创建表
CREATE TABLE class(
name VARCHAR(10),
room VARCHAR(10)
)charset utf8;

-- 查看所有表
SHOW TABLES;

-- 查看以S结尾的表
SHOW TABLES LIKE '%s%';

-- 查看创建表语句
SHOW CREATE TABLE student;

-- 查看表结构
DESC class;
DESCRIBE class;
SHOW COLUMNS FROM class;

-- 重命名表:studet表 ->my_student(取数据库名字前两个字母)
RENAME TABLE student TO my_student;

-- 修改表选项:字符集
ALTER TABLE my_student CHARSET utf8;

--  给学生表增加ID放到第一个位置
ALTER TABLE my_student ADD COLUMN id INT FIRST;

-- 修改字段
ALTER TABLE my_student MODIFY number char(10) AFTER id;

-- 修改字段名
ALTER TABLE my_student change gender sex VARCHAR(10);

-- 删除表中的字段
ALTER TABLE my_student DROP age;

中文数据问题

-- 本质是字符集问题 ,计算机只识别二进制:人类更多是识别符号:需要有个二进制与字符的对应关系(字符集)

-- 客户端向服务器插入中文数据:没有成功
insert into my_student values(5,'itcast0005','张越','男');
-- 报错:服务器没有识别对应的四个字节:服务器认为数据是UTF8,一个汉字对应三个字节,而客户端是GBK默认2个字节是一个汉字

-- 查看服务器支持的所有字符集
SHOW CHARSET;

-- 所有数据库服务器认为(表现)的一些特性都是通过服务器端的变量来保存:系统预先读取自己的变量,看看应该如何表现

-- 查看服务器默认的对外处理的字符集
SHOW VARIABLES LIKE 'character_set%';

-- 服务器默认的客户端来的数据的字符集  character_set_client

-- 连接曾字符集 character_set_connection

-- 当前数据库字符集 character_set_database

-- 问题根源: 客户端数据只能是GBK, 而服务器认为是UTF8: 矛盾产生
-- 解决方案: 改变服务器, 默认的接收字符集为GBK;
-- set character_set_client = gbk;

-- 原因: 数据来源是服务器, 解析数据是客户端(客户端只识别GBK: 只会两个字节一个汉字): 但是事实服务器给的数据却是UTF8,三个字节一个汉字: 乱码
-- 解决方案: 修改服务器给客户端的数据字符集为GBK
-- SET 变量 = 值; 修改只是会话级别(当前客户端,当次连接有效: 关闭失效)
-- set character_set_results = GBK;

-- 设置服务器对客户端的字符集的认识: 可以使用快捷方式: set names 字符集
-- set names gbk; ====> character_set_client,character_set_results,character_set_connection

-- connection连接层: 是字符集转变的中间者,如果统一了效率更高,不统一也没问题.

校对集

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

-- 查看数据库所支持的校对集: 
show collation;

-- 创建表使用不同的校对集
create table my_collate_bin(
name char(1)
)charset utf8 collate utf8_bin;

create table my_collate_ci(
name char(1)
)charset utf8 collate utf8_general_ci;

-- 插入数据
insert into my_collate_bin values('a'),('A'),('B'),('b');
insert into my_collate_ci values('a'),('A'),('B'),('b');

-- 排序查找
select * from my_collate_bin order by name;
select * from my_collate_ci order by name;

-- 注意:有数据后修改校对集无效
alter table my_collate_ci collate = utf8_bin;
alter table my_collate_ci collate = utf8_general_ci;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值