数据库基本操作参考表
目录
一、数据库操作
1.登入数据库:
mysql -u root -p
2.查看数据库
show databases;
3.创建数据库:
create database 库名 default charset=utf8;
例如:
create database bookshop default charset=utf8;
4.使用数据库:
use bookshop;
5.删除数据库:
drop database bookshop;
6.退出登陆:
exit; 或者 quit;
二、表的增删改查
1.查看该库下所有表:
show tables;
2.创建表:
create table if not exists users(
id int not null primary key auto_increment,
name varchar(4) not null,
age tinyint,
sex enum('男','女')
)engine=innodb default charset=utf8;
解释:
if not exists 表示是否已存在该表,不存在则创建、存在则不创建;
not null 保证不为空 primary key 主键 auto_increment 自动递增
3.查看某一个表结构
desc users;
4.查看创建表语句
show create table users;
5.删除表:
drop table users;
6.修改表名:
语法:alter table 原表名 rename as 新表名
alter table users rename as u;
三、表字段的修改
1.表添加字段:alter table 表名 add 添加的字段信息
1.1在 users 表中 追加 一个 num 字段
alter table users add num int not null;
1.2在指定字段后面追加字段 在 users 表中 age字段后面 添加一个 email 字段
alter table users add email varchar(50) after age;
1.3在表的最前面添加一个字段
alter table users add phone char(11) first;
2.表删除字段
删除字段 alter table 表名 drop 被删除的字段名
alter table users drop phone;
3.修改字段:alter table 表名 change|modify 被修改的字段信息
change: 可以修改字段名,
modify: 不能修改字段名。
3.1修改表中的 num 字段 类型,使用 modify 不修改表名
alter table users modify num int;
3.2修改表中的 num 字段 为 int并且字段名为 nn
alter table users change num nn int;
4.在常规情况下,auto_increment 默认从1开始继续递增
alter table users auto_increment = 1000;
四、表引擎操作
1.推荐在定义表时,表引擎为 innodb,查看表创建语句。
2.通过查看建表语句获取当前的表引擎:
show create table users;
3.直接查看当前表状态信息:
show table status from bookshop where name = 'users';
4.修改表引擎语句:
alter table users engine = 'myisam';
五、*表操作——数据管理语句(DML)
1.添加数据
1.1标准添加所有字段
insert into stu(id, name, age, sex, classid) values(1, 'zhangsan', 25, '男', '1');
1.2添加部分字段
insert into stu(name, age) value('lisi', 28);
1.3不指定字段
insert into stu value(2, 'zhangsan3', 25, '男', '1');
1.4批量添加
insert into stu values
(null, 'zhangsan3', 25, '男', '1'),
(null, 'zhangsan3', 25, '男', '1'),
(null, 'zhangsan3', 25, '男', '1');
2.修改数据
update stu
set age = 30, class = '2'
where id = 1;
3.删除数据
delete from stu
where id = 1;
六、***表操作——数据查询语句(DQL)
语法格式:[]表示该关键字可有可无
select 字段列表|* from 表名
[where 搜索条件]
[group by 分组字段 [having 分组条件]]
[order by 排序字段 排序规则]
[limit 分页参数]
1.全表查询
select *
from users;
2.1 where条件查询
select *
from users
where id = 1;
2.2 where的模糊查询like
%表示多位不确定值
_表示一位不确定值
例如:查找名字中有阳的用户所有信息
select *
from users
where name like '%阳%';
3.聚合函数
3.1计算 users 表中 最大年龄,最小年龄,年龄和及平均年龄
select max(age),min(age),sum(age),avg(age) from users;
3.2还可以直接运算
计算最大年龄差
select max(age) - min(age) as '最大年龄差'
from users;
4. Group by 分组
例如:按性别统计人数
select sex,count(*)
from users
group by sex;
group by 注意事项、易错点:
在group by时,如果select选择了多列,那么在group by中也要出现对应列。
这是由数据库的sql_mode设置的ONLY_FULL_GROUP_BY决定的,可以通过命令查看:
SELECT @@sql_mode;
结果:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
5.分组后再利用having过滤(where过滤的是行数据,having过滤的是分组数据)
例如:按性别统计大于25岁的人数
select sex,count(*)
from users
group by sex
having age > 25;
6.order by 排序
Asc 升序,默认
desc降序
例如:按性别统计大于25岁的人数,并按照年龄对结果进行排序,从大到小
select sex,count(*)
from users
group by sex
having age > 25
order by age desc;
7.limit分页
limit n 提取n条数据,
limit m,n 跳过m跳数据,提取n条数据
7.1查询users表中的数据,只要3条
select * from users limit 3;
7.2跳过前4条数据,再取3条数据
select * from users limit 4,3;
七、数据库的导入导出
1.数据导入
1.1数据‘库’导入
在新的数据库中 导入tlxy数据库的数据
mysql -u root -p ops < ./tlxy.sql
1.2数据‘表’导入
把导出的库tlxy、表tts导入数据库
mysql -u root -p ops < ./tlxy-tts.sql
2.数据导出
2.1数据‘库’导出
不要进入mysql,然后输入以下命令 导出tlxy库中的数据
mysqldump -u root -p tlxy > ~/Desktop/code/tlxy.sql
2.2数据‘表’导出
不要进入mysql,然后输入以下命令 导出tlxy库中指定的tts表的数据
mysqldump -u root -p tlxy tts > ~/Desktop/code/tlxy-tts.sql
八、复杂联表查询请看下一个链接
MySQL(3)——数据库联表查询(易理解)
https://blog.youkuaiyun.com/CSU174712009/article/details/113767638