接下来,主要学习关于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服务###
可以使用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分享,不定期更新学习视频