MySQL学习(数据库和表的基本操作)

接下来,主要学习关于sql操作的相关知识点,包括了常用的增删改查sql语句的写法等等,由于日常工作中,有段时间会不太使用sql语句,这就导致了时间长了,对于这一块就又会再次生疏,所以,以博客的形式记录下来。
##SQL ##

SQL的全称:Structured Query Language
###SQL的分类###
SQL分为下面的几类:

  • DDL : Data definition language
    数据定义语言,用来维护存储数据的结构,表结构相关操作。如:create,drop,alter等

  • DML: Data Manipulation language
    数据操作语言,用来对数据进行操作,如:insert,delete,update等

  • DCL: Data control language
    数据控制语言,用来负责管理用户的权限,如:grant,revoke等。

##库操作 ##
###连接mysql服务###
安装完成mysql以后,打开cmd命令行,连接mysql服务:

mysql.exe -hlocalhost -P3306 -uroot -p

这里写图片描述
可以看到,这里已经成功的连接了mysql服务。

###查看当前所有的数据库###
这里写图片描述
###断开mysql服务###
可以使用exit或者quit或者\q来断开已经连接的mysql服务。
这里写图片描述

##SQL的基本操作##
sql的基本操作分为:数据库操作,表操作,数据操作。
###库操作###
库操作,是对数据库的增删改查。

####新增数据库####
基本语法:

create databases 数据库名称 [库选项]

库选项:用来约束数据库,分为:
   a.字符集设定:charset,常用的有:GBK,UTF8
   b.校对集设定:具体校对集(数据比较的规则)

create database mydatabase charset utf8;

-- 创建中文数据库
set names gbk;
create database 中文库 charset utf8;


这里写图片描述

这里写图片描述
这里写图片描述

在每一个数据库目录下,系统会创建一个".opt"文件,改文件包含了当前数据库的库选项,如:

default-character-set=utf8
default-collation=utf8_general_ci

####查看数据库####

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

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

-- 查看以"mybase_"开头的数据库,注意:这类的"_"需要转译
show databases like 'mybase\_%'
show databases like 'mybase_%'

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

这里写图片描述

####更新数据库####

-- 数据库的修改只限库选项: 字符集,校对集

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

-- 修改mydatabase的字符集为GBK
alter database mydatabase charset GBK;

这里写图片描述

####删除数据库####

drop database 数据库名称

##表操作##
###创建表###

create table [if not exists]  表名 (
	字段名字  字段类型,
	字段名字  字段类型,
	......
);

// 显示的指定表格所属的数据库
-- 创建student表格(显示的将student表放入到mydatabase数据库里)
create table if not exists mydatabase.student(name varchar(20),
number varchar(20),
age int
)charset utf8;

// 隐式得使用数据库
1. use mydatabase; -- 使用数据库
2. 创建表

这里写图片描述

###查看数据表###
查看所有表

show tables;

这里写图片描述
查看部分表

-- 查看以's'结尾的表
show tables like '%s';

这里写图片描述
查看表的创建语句

show create table 表名;

这里写图片描述
查看表中的字段信息

Desc 表名;
describe 表名;
show columns from 表名;

这里写图片描述

###修改数据表###
修改数据表,分为修改表表自身,或者表字段

修改表自身

  • 修改表名
-- 修改表名  student----> my_student
rename table student to my_student;

这里写图片描述

  • 修改表选项
-- 修改表的字符集
alter talbe my_student charset = GBK;

这里写图片描述

修改表字段
修改表字段:新增,删除,重命名,删除表字段

  • 新增字段
-- 新增字段
alter talbe 表名 add [column] 字段名 数据类型 [列属性] [位置]

位置:字段名可以存放在表中的任意位置
     first :第一个位置
     after : 在哪一个字段之后,默认存放在表中的最后一个字段后面

-- 给学生表增加一个id字段
alter table my_student add id int first;

  • 修改字段
-- 修改字段
// 修改字段通常是修改字段名或者字段类型
alter table 表名 modify 字段名 数据类型 [属性] [位置]

-- 修改number长度为10,并且放到第二个字段
alter my_student modify number varchar(10) after id;

这里写图片描述

  • 重命名字段
-- 重命名字段
alter table 表名 change 旧字段名称 新字段名称 数据类型

-- 重命名my_student表中的id字段为studentid
alter table my_student change id studentid int;

这里写图片描述

  • 删除字段
alter table 表名 drop 字段名称

-- 删除my_student表中的年龄字段
alter table my_student drop age;

这里写图片描述

###删除数据表###

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

-- 删除class表
drop table class;

这里写图片描述

##数据操作##
###新增数据###

  • 给全表插入数据
    给全表插入数据时候,不需要指定字段列表,但是数据的值的顺序,必须和表中设计的字段的顺序一致,对于非数值数据,需要使用单引号包裹起来
insert into 表名 values(值列表);

-- 向my_student表中,插入一条数据
insert into my_student values(1,'001','zhangsan');

这里写图片描述

  • 给部分字段插入数据
    给部分字段插入数据时候,不需要选定字段列表,字段列表出现的顺序和字段的顺序无关,但是值列表的顺序必须与选定的字段列表顺序一致
insert into 表名 (字段列表) values([值列表],[值列表]);

-- 指定字段列表,插入数据
insert into my_student (studentid,name,number) values
(2,'lisi','002'),
(3,'wangwu','003');

这里写图片描述

###查看数据###

select */字段列表 from 表名

-- 查看所有数据
select * from my_student;

-- 查看指定字段指定条件的数据
select name,number,studentid from my_student where name='zhangsan';

这里写图片描述

###更新数据###

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

-- 将studentid为1的记录的name改为zhaoliu
update my_student set name='zhaoliu' where studentid=1;

这里写图片描述

###删除数据###

delete from 表名 [where 条件];

-- 删除name='zhaoliu'的数据
delete from my_student where name='zhaoliu';

这里写图片描述

##中文字符问题##
这里,我先尝试一下给当前表里插入一条中文数据

insert into my_student values(4,'004','王麻子');

这里写图片描述
可以发现,数据库服务端的字符集比支持当前插入的数据字符集

查看当前数据库支持的字符集

-- 查看所有字符集
show character set;

这里写图片描述

-- 查看服务器默认对外处理的字符集
show variables like 'character_set%';

这里写图片描述

###改变服务器默认的接收字符集为GBK###

-- 修改服务器默认的接收字符集为gbk
set character_set_client = gbk;

这里写图片描述
可以看到这里虽然插入成功了,可是查询以后, 显示依然是乱码。
###改变服务器返回给客户端的字符集为GBK###

-- 改变服务器返回给客户端的字符集为GBK
set character_set_results = gbk;

这里写图片描述

可以看到,到现在为止,已经可以正确的显示表中的中文记录了,可是当前的设置只是针对当前的会话有效,关闭当前会话,就会再次失效。

欢 迎 关 注 我 的 公 众 号 “编 程 大 全”

专注技术分享,包括Java,python,AI人工智能,Android分享,不定期更新学习视频
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值