数据库基本操作
将sql的基本操作根据操作对象进行分类,分为三类:库操作,表操作(字段),数据操作
一 、库操作:对数据库的增删改查
- 新增数据库:
基本语法: create database 数据库名字 【库选项】{库选项:用来约束数据库,分为两个选项 字符集设定:charset/character set 具体字符集(数据存储的编码格式)常用字符集:GBK和UTF8 ;校对集设定:collate 具体校对集(数据比较的原则)}
例如:创建mydatabase数据库
其中:数据库名字不能是关键字如果非要使用关键字或者保留字,必须使用反引号
创建中文数据库
也不知道为啥我直接创建中文数据库就能成功,看视频讲解这样直接创建是错误的
2.1 查看所有数据库
show databases;
2.2.查看指定部分的数据库:模糊查询
show databases like ‘pattern’; --pattern是匹配模式
%匹配多个字符;_匹配单个字符
例如:查找以information开头的单个和多个数据库
2.3.查看数据库的创建语句:show create database 数据库名字 ;
例如:查看mydatabase数据库的创建语句
数据库在执行sql语句之前会优化sql,系统保存的结果是优化后的结果。
3.更新数据库:数据库的名字不可以修改,数据库的修改权限仅限库选项:字符集和校对集(校对集依赖字符集)
Alter database 数据库名字 【库选项】;
Charset /charater[=] 字符集 collate=校对集
例如:修改informationtest数据库字符集为gbk
4.删除数据库
所有的操作中:删除是最简单的
Drop database 数据库名字;
例如:删除informationtest数据库
思考:删除数据库语句执行之后发生了什么?
(1)在数据库内部看不到对应的数据库;
(2)在对应的数据库存储的文件夹内,数据库名字对应的文件夹也被删除(级联删除:里面所有的数据表全部删除)
所以,数据库的删除不是闹着玩的,不要随意删除,应该先进行备份后操作(删除不可逆),不要删库跑路噢~
二、表操作:表和字段密不可分
1.新增数据表
Create table [if not exists] 表名(
字段名字 数据类型,
字段名字 数据类型 --最后一行不需要逗号
)[表选项];
if not exists: 如果表名不存在,就创建,然后执行创建代码——检查功能
表选项:控制表的表现
字符集:charset/character set 具体字符集;–保证表中数据存储的字符集
校对集:collate 具体校对集;
存储引擎engine具体的存储引擎(innodb和myisam)
任何一个表的设计都必须指定数据库
方案1:显示指定表所属的数据库
Create table 数据库名.表名();–将当前数据库创建到指定的数据库下
例如:将student表创建到mydatabase数据库下
方案2:隐式的指定表所属数据库:先进入到某个数据库环境,然后这样创建的表自动归属到某个指定的数据库
进入数据库环境:use 数据库名字 ;
例如:进入test数据库
2.查看数据表
数据库能查看的方式表都可以
2.1查看所有表:show tables;
2.2 查看部分表:模糊匹配: show tables like ‘pattern’;
例如:查看以s结尾的表
2.3查看表的创建语句
show create table 表名
例如:查看class表的创建语句
2.4 查看表结构:查看表中的字段信息
Desc 表名/describe 表名/show columns from 表名
例如:三种查看class表结构的方式
3.修改数据表
表本身存在,还包含字段:表的修改分为两个部分:修改表本身和修改字段
3.1修改表本身:表本身可以修改表名和表选项
3.1.1修改表名: rename table 表名 to 新表名
例如:将class表名修改为test_class
3.1.2 修改表选项:字符集,校对集,存储引擎
Alter table 表名 表选项 [=] 值
例如修改字符集:3.2修改字段:字段操作很多:新增,修改,重名,删除
3.2.1 新增字段
Alter table 表名 add [column] 字段名 数据类型 [列属性] [位置];
位置:字段名可以存放表中的任意位置
First:第一个位置
After:在哪个字段名之后:after 字段名;默认的是在最后一个字段之后
例如:给 test_class表增加一个id放到第一个位置
3.2.2修改字段:修改通常是修改属性或者数据类型
Alter table 表名 modify 字段名 数据类型 [属性] [位置];
例如:将test_class表中的room字段变成固定长度,且放到第二位(id之后)
alter table test_class
modify room char(20) after id;
3.2.3 重命名字段
Alter table 表名 change 旧字段 新字段名 数据类型 [属性] [位置]
例如:修改test_class表中的room字段为roomId,并将数据类型修改为varchar(10)
3.2.4 删除字段
Alter table 表名 drop 字段;
例如:删除test_class表中的name字段
Alter table test_class drop name;
小心:如果表中已经存在数据,那么删除数据会清空该字段的所有数据(不可逆)
4.删除数据表
Drop table 表名1,表名2…
例如:删除数据表student
drop table student;
当删除数据表的指令执行之后发生了什么?
1、在表空间中,没有了指定的表(数据也没有了);
2、在数据库对应的文件夹下面,表对应的文件(与存储引擎有关)也会被删除
注意:删除有危险,操作需谨慎(不可逆)!
三、数据操作
1.新增数据
有两种方案:
方案一:给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致,凡是非数值数据,都需要使用引号(最好是单引号)包裹
insert into 表名 values (值列表) [,(值列表)];–可以一次插入多条数据
例如:向test_class插入数据
insert into test_class values(001,001),(002,002);
方案2:给部分字段插入数据,需要选定字段列表,字段列表出现的顺序与字段的顺序无关,但是值列表的顺序必须与选定字段的顺序一致
例如:给test_class只插入id
insert into test_class(id) values (004);
2.查看数据
2.1 select */字段列表 from 表名 [where 条件]
例如:查看test_class所有数据
select * from test_class;
2.2 查看指定字段,指定条件数据
例如:查看test_class表中id为1的id和roomId
select id,roomId from test_class where id=1;
3.更新数据
update 表名 set 字段 = 值 [where条件];–建议都有where,除了更新全部
例如:更新 test_class表中设置id为4的roomId为4
update test_class set roomId=4 where id=4;
更新不一定会成功:如没有真正要更新的数据,例如,再执行一次上图语句
实际上要看被影响的行数
4.删除数据
是不可逆的,谨慎操作
例如: 从test_class中删除id=4的数据
delete from test_class where id=4;