MySQL-1 MySQL基础

1. SQL基本操作

1.1 库操作

1.1.1 新增

Create database 数据库名字 [库选项];
库选项: 用来约束数据库, 分为两个选项

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

其中,数据库名字不能用关键字(已经被使用的字符)或者保留字(将来可能会用到的)。如果非要使用关键字或者保留字,那么必须使用反引号(esc键下面的键在英文状态下的输出:`)

1.1.2 查看

  1. 查看所有数据库: show databases;
  2. 查看指定部分的数据库: 模糊查询 Show databases like ‘pattern’; pattern是匹配模式
  • %: 表示匹配多个字符
  • _: 表示匹配单个字符
  1. 查看数据库的创建语句: show create database 数据库名字

1.1.3 修改

数据库名字不可以修改.

数据库的修改仅限库选项: 字符集和校对集(校对集依赖字符集)

Alter database 数据库名字 [库选项] 
Charset/ character set [=] 字符集 
Collate 校对集

1.1.4 删除

Drop database 数据库名字

1.2 表操作

1.2.1 新增

Create table [if not exists] 表名(
字段名字 数据类型,
字段名字 数据类型	-- 最后一行不需要逗号
)[表选项];

If not exists: 如果表名不存在,那么就创建,否则不执行创建代码: 检查功能
表选项: 控制表的表现

  • 字符集: charset/character set 具体字符集; – 保证表中数据存储的字符集
  • 校对集: collate 具体校对集;
  • 存储引擎: engine 具体的存储引擎(innodb和myisam)

任何一个表的设计都必须指定数据库.

方案1: 显示的指定表所属的数据库
Create table 数据库名.表名(); – 将当前数据表创建到指定的数据库下
方案2: 隐式的指定表所属数据库: 先进入到某个数据库环境,然后这样创建的表自动归属到某个指定的数据库.
进入数据库环境: use 数据库名字

1.2.2 查询

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

  1. 查看所有表: show tables;
  2. 查看部分表: 模糊匹配: show tables like ‘pattern’;
  3. 查看表的创建语句: show create table 表名;
  4. 查看表结构: 查看表中的字段信息 Desc/describe/(show columns from) 表名;

1.2.3 修改

表的修改分为两个部分: 修改表本身和修改字段
(1)修改表本身
表本身可以修改: 表名和表选项
修改表名: rename table 老表名 to 新表名;
修改表选项: 字符集,校对集和存储引擎: Alter table 表名 表选项 [=] 值
(2)修改字段
字段操作很多: 新增, 修改, 重名, 删除
新增字段
Alter table 表名 add [column] 字段名 数据类型 [列属性] [位置];
位置: 字段名可以存放表中的任意位置

  • First: 第一个位置
  • After: 在哪个字段之后: after 字段名; 默认的是在最后一个字段之后

修改字段:
修改通常是修改属性或者数据类型
Alter table 表名 modify 字段名 数据类型 [属性] [位置];
重命名字段
Alter table 表名 change 旧字段 新字段名 数据类型 [属性] [位置];
删除字段
Alter table 表名 drop 字段名;

1.2.4 删除

Drop table 表名1,表名2...; – 可以一次性删除多张表

1.3 数据操作

1.3.1新增

有两种方案

方案1: 给全表字段插入数据, 不需要指定字段列表: 要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致: 凡是非数值数据,都需要使用引号(建议是单引号)包裹

Insert into 表名 
values(值列表)[,(值列表)];

方案2: 给部分字段插入数据,需要选定字段列表: 字段列表出现的顺序与字段的顺序无关; 但是值列表的顺序必须与选定的字段的顺序一致.

Insert into 表名 (字段列表) 
values (值列表)[,(值列表)];

1.3.2查询

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

1.3.3修改

Update 表名 set 字段 = 值 [where条件]

1.3.4删除

Delete from 表名 [where条件];

2.乱码问题

中文数据问题本质是字符集问题
查看服务器到底识别哪些字符集:
Show character set
查看服务器默认的跟客户端打交道的字符集:
Show variables like ‘character_set%’;
在这里插入图片描述
解决方案(界定客户端是GBK编码):
(1)改变服务器,默认的接收字符集为GBK;
Set character_set_client = gbk;
(2)修改服务器给客户端的数据字符集为GBK
Set character_set_results = GBK;

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

设置服务器对客户端的字符集的认识: 可以使用快捷方式: set names 字符集
Set names gbk;
等价于 character_set_client,character_set_results,character_set_connection gbk;
Connection连接层: 是字符集转变的中间者,如果统一了效率更高,不统一也没问题.

3.校对集

校对集: 数据比较的方式

校对集有三种格式

  • _bin: binary,二进制比较, 取出二进制位,一位一位的比较, 区分大小写
  • _cs: case sensitive(大小写敏感): 区分大小写
  • _ci: case insensitice(大小写不敏感):不区分大小写

查看数据库所支持的校对集: show collation;
校对集应用: 只有当数据产生比较的时候,校对集才会生效.
重要】校对集: 必须在没有数据之前声明好,如果有了数据,那么再进行校对集修改: 那么修改无效.

-- 新增 --
[]
Create database 数据库名字 [库选项]

[]
Create table [if not exists] 数据库名字.表名(
字段名字 数据类型,
字段名字 数据类型	-- 最后一行不需要逗号
)[表选项]
use 数据库名字;
Create table [if not exists] 表名(
字段名字 数据类型,
字段名字 数据类型	-- 最后一行不需要逗号
)[表选项]

[数据]
Insert into 表名 values(值列表)[,(值列表)]
Insert into 表名 (字段列表) values (值列表)[,(值列表)]

--查询--
[]
show databases
Show databases like ‘pattern
show create database 数据库名字
[]
show tables
show tables like ‘pattern’
show create table 表名`
Desc/describe/(show columns from) 表名`
[数据]
Select */字段列表 from 表名 [where条件]

-- 修改--
[]
Alter database 数据库名字 [库选项] Charset/ character set [=] 字符集  Collate 校对集
[]
rename table 老表名 to 新表名
Alter table 表名 表选项 [=]Alter table 表名 drop 字段名
[数据]
Update 表名 set 字段 =[where条件]

-- 删除--
[]
Drop database 数据库名字 
[]
Drop table 表名1,表名2...
[数据]
Delete from 表名 [where条件]
发布了135 篇原创文章 · 获赞 5 · 访问量 7080

猜你喜欢

转载自blog.csdn.net/qq_27921205/article/details/104631508
今日推荐