数据库的增删改查、数据表的增删改查、数据相关的插入、查看、更改、删除
【一】操作MySQL数据库
【1】数据库相关
(1)创建数据库
create database [if not exists]数据库名字 [charset set 字符编码集];
# 例如:
create database if not exists day01;
# 设置库的默认编码
create databases db1 charset='gbk';
(2)查看当前所有数据库
show databases; -- 查看所有数据库
show databases like '%test%'; -- 查看名字中包含test的数据库
show create database 数据库名; -- 查看数据库的建库sql语句
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| day01 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
(3)修改数据库
- 查看数据编码格式
show variables like "character_set_database";
- 修改数据库编码集
alter database 数据库名 [character set 编码字符集];
#例如:
alter database db2 charset='utf8';
(4)删除数据库
- 不能轻易删除数据库,因为不可逆
drop database [if exists] 数据库名;
# 例如
drop database day01;
【2】数据表相关
- 在操作表的时候要指定所在的数据库
(1)查看当前所在库的名字
select database(); -- 查看当前使用的数据库
# 例如
select database();
(2)切换到指定库
use 数据库名; -- 切换数据库
# 例如
use db1;
- 示例
mysql> use day01;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| day01 |
+------------+
1 row in set (0.00 sec)
- 切换数据库 注意:
- 进入到某个数据库后没办法再退回之前状态,但可以通过 **use **进行切换
(3)创建表
- 数据表就相当于文件,文件有文件名,自然地,数据表也要有表名。
- 同样道理,数据表中的一条记录就相当于文件的一行内容。
- 只是不同的是,数据表需要定义表头(上图中的首行),称为表的字段名。
- 而且因为数据库的存储数据更加科学、严谨,所以需要创建表时要给每一个字段设置数据类型以及字段约束(完整性约束条件)。
create table [if not exists] 表名 (
字段名1 数据类型[ ( 存储空间 ) 字段约束 ],
字段名2 数据类型[ ( 存储空间 ) 字段约束 ],
字段名3 数据类型[ ( 存储空间 ) 字段约束 ],
.....
字段名n 数据类型[ ( 存储空间 ) 字段约束 ],
primary key(一个 或 多个 字段名) -- 注意,最后一段定义语句,不能有英文逗号的出现,否则报错。
) [engine = 存储引擎 character set 字符集];
-
注意:
-
- 上面SQL语句中,小括号中的定义字段语句后面必须以英文逗号结尾,而最后一个字段的定义语句不能有英文逗号出现,否则报错。
- 在同一张数据表中,字段名是不能相同,否则报错!
- 创建数据表的SQL语句中,存储空间和字段约束是选填的,而字段名和数据类型则是必须填写的。
-
示例:
create table classes(
name varchar(10),
password int,
address varchar(100)
);
# #######要点
-- mysql中创建数据表要以 create table `表名`
-- 表的字段信息必须写在 ( ) 小括号里面
create table classes (
-- 建议一行一个字段,id 就是字段名
-- int 表示设置字段值要以整数的格式保存到硬盘中,
-- auto_increment表示当前字段值在每次新增数据时自动+1作为值保存
-- primary key,mysql中叫主键,表示用于区分一个数据表中不同行的数据的唯一性,同时还具备加快查询速度的作用
-- 注意:auto_increment与primary key 一般是配合使用的,对应的字段名一般也叫id,而且在一个数据表中只有一个字段能使用auto_increment primary key进行设置。
id int auto_increment primary key,
-- 字段名:name
-- varchar(10) 表示当前name这一列可以存储的数据是字符串格式,并且最多只能存10个字符
name varchar(10),
-- 字段名:address
-- varchar(100) 表示adderss这一列可以存储的数据是字符串格式,并且最多只能存100个字符
address varchar(100),
-- 字段名:total
-- int 表示当前total这一列的数据只能是整数,而且一个数据表中,整数的最大范围只能是42亿
total int
);
- 要点中
- SQL语句就相当于创建了一个表格。
id | name | address | total |
---|---|---|---|
(4)查看表
- 查看当前数据库下的所有表
show tables;
- 查看指定的表
show create table 表名;
- 查看当前表的详细信息
describe 表名;
# 简写
desc t1;
- 查看建表语句
show create table 表名 \G;
show create table 表名;
(5)修改表
- 修改表的字段类型
- modify 只能改类型不能改名字
alter table 表名 modify 字段名 字段类型(宽度);
- change 名字类型都可以改
alter table 表名 change 字段名 字段类型(宽度);
- 修改表名
alter table 原来的表名 rename 新表名;
# 例如
alter table classes rename class_data;
- 追加字段
alter table 表名 add 字段名 字段类型;
# 例如
alter table class_data add age int;
- 指定某字段添加的位置
alter table 表名 add 字段名 字段类型(长度) after 字段名;
# 例如
alter table class_data add gender varchar(32) after name;
- 将字段插入到头部
alter table 表名 add 字段名 字段类型(长度) first;
# 例如
alter table class_data add sex varchar(3) first;
(6)删除字段
alter table 表名 drop 字段名;
# 例如
alter table class_data drop sex;
(7)删除表
- 删除表结构,并把数据一并删除,
- 使用需谨慎,强烈建议先备份后删除,或者直接改表名来代替删除操作。
drop table 表名;
# 例如
drop table class_data;
【3】数据相关
(1)插入数据
insert into 表名 (字段名,字段名) values(值,值);
INSERT [INTO] <表名> [ <列名1> [ , … <列名n>] ] VALUES (值1) [… , (值n) ];
# 例如
insert into user (name,age) values("chosen",20);
insert into user (name,age) values('max',18),('opp',28);
(2)查看数据
select *|字段1,字段2 ... from 表名
WHERE 条件
GROUP BY field
HAVING 筛选
ORDER BY field
LIMIT 限制条数
# 例如
select * from user;
mysql> select * from user;
+--------+------+----------+
| name | age | password |
+--------+------+----------+
| chosen | 20 | 123456 |
| max | 18 | NULL |
| opp | 28 | NULL |
+--------+------+----------+
3 rows in set (0.00 sec)
(3)更改数据
update 表名 set 字段名=字段值 where name="";
# 例如
update user set age=999 where name="max";
update user set password=123456 where name="chosen";
(4)删除数据
delete from 表名 where 字段名=字段值;
# 例如
delete from user where name="max";
【特别提示】
- 使用 DROP DATABASE/TABLE 命令时要非常谨慎,
- 在执行该命令后,MySQL 不会给出任何提示确认信息。
- DROP DATABASE 删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。
- 因此最好在删除数据库之前先将数据库进行备份。