接下来,主要学习关于sql操作的相关知识点,包括了常用的增删改查sql语句的写法等等,由于日常工作中,有段时间会不太使用sql语句,这就导致了时间长了,对于这一块就又会再次生疏,所以,以博客的形式记录下来。
SQL的全称:Structured Query Language
SQL分为下面的几类:
DDL : Data definition language
数据定义语言,用来维护存储数据的结构,表结构相关操作。如:create,drop,alter等
DML: Data Manipulation language
数据操作语言,用来对数据进行操作,如:insert,delete,update等
DCL: Data control language
数据控制语言,用来负责管理用户的权限,如:grant,revoke等。
安装完成mysql以后,打开cmd命令行,连接mysql服务:
mysql.exe -hlocalhost -P3306 -uroot -p
可以使用exit或者quit或者\q来断开已经连接的mysql服务。
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
set character_set_client = gbk;
可以看到这里虽然插入成功了,可是查询以后, 显示依然是乱码。
-- 改变服务器返回给客户端的字符集为GBK
set character_set_results = gbk;
可以看到,到现在为止,已经可以正确的显示表中的中文记录了,可是当前的设置只是针对当前的会话有效,关闭当前会话,就会再次失效。