数据库操作
1.数据库基本语句
1.0 数据库登录与登出
登录数据库
mysql -u root -p
退出数据库
exit
1.1 数据库操作
1.1.1展示
查看所有数据库:show databases;
1.1.2 增
创建数据库:create database class charset = utf8;
1.1.3 进入数据库
使用数据库:use class;
1.1.4 查
查看名为 class 的数据库:show create database class;
查看所在的数据库:select database();
1.1.5 删
删除数据库:drop database class;
1.1.6 改
修改数据库类型:alter database class charset gbk;
1.2 表操作
1.2.1 展示
查看所有表:show tables;
1.2.2 增
创建名为 student 的表:create table student(id int, name varchar(20), age int);
1.2.3 查
查看表结构:desc student;
查看当前的这张名为student的表:show create table student;
1.2.4 改
增加表成员,在名为student的表内新增名为seat的成员,类型是varchar(11):alter table student add seat varchar(11);
删除表成员,在名为student的表内删除名为age的成员:alter table student drop age;
modify 修改(改类型):alter table student modify name char(6);
该表name为大写的NAME(改类型名):alter table student change name NAME char(7);
修改表--修改表名称:alter table student rename class;
1.2.5 删
删除名为student的表:drop table student;
1.3.1 增向student表中一次插入一条数据:inter into student values(1, '张三', 20, '第一组');
向student表中一次插入多条数据:inter into student values(1, '张三', 20, '第一组'), (2, '李四', 19 '第二组').....;
向student表中一次插入多条数据:insert student(id, name, seat) values(13, '张三', '第三组'), (19, '李四', '第四组');
1.3.2 删
删除 student 中的类型 id 为 2 的数据:delete from student where id = 2;
删除 student 中的类型 id 大于 2 的数据:delete from student where id > 1;
1.3.3 改
把表 student 中所有数据的 name 都改成 李四:update student set name = '李四';
把表 student 中 id 为 1 数据的 name 都改成 李四:update student set name = '李四' where id = 1;
把表 student 中 id 为 2 数据的 name 都改成 李四,seat 都改成第二组:update student set name = '李四', seat = '第二组' where id = 2;
1.3.4 查
查看表 student 中所有数据:select * from student;
查看表 student 中的类型名称为 id 数据:select id from student;
查看表 student 中的类型名称为 id 和 name 数据:select id, name from student;
查看表 student 中 id 大于 1 的数据:select * from student where id > 1;
查看表 student 中 id 在 5 到 10 之间(闭区间)的数据:select * from student where id between 5 and 10;
一次性查两个(在 student 表中查 post = teacher 和 age 大于 10000 的 id):select id from student where seat = '第一组' and age > 19;
模糊查询-like(查询所有名字为 “张” 开头的):select * from student where name like '张%';
去重查找-distinct(查询所有可能的 seat,查询所有可能的 id):select distinct seat from student;
select distinct id from student;
排序查找-order by:select * from student order by id;(升序)
select * from student order by id desc;(降序)
限制查找(只看前三条):select * from student limit 3;
1.3.5 聚合函数查
max() 求最大值
min() 求最小值
avg() 求平均值
sum() 求和
count() 求总个数
student 表里有多少名学生:select count(id) from student;
平均年龄: select avg(age) from student;
最高年龄: select max(age) from student;
最低年龄: select min(age) from student;
年龄和: select sum(age) from student;
2.约束
2.1 unique:唯一约束
2.2 not null:非空约束
2.3 primary key:主键约束
primary key = unique & not null
99.9% 主键约束都是 id
2.4 创建时添加约束
添加 id 为主键约束,并且自动增长
create table student(
id int primary key auto_increment,
name varchar(20) not null,
age int,
seat varchar(11) not null
);
2.5 修改约束(将 id 这个字段添加主键约束)
alter table student add primary key (id);
alter table student modify seat varchar(11) not null;
2.6 外键约束与双表查询建立被关联的表(主表)
create table seats(
id int primary key,
name varchar(20) not null
);
添加主表数据
insert into seats values
(1, '第一组'),
(1, '第二组'),
(1, '第三组'),
(1, '第四组');
建立关联表(从表)fkseat 为外健名,外键连到主键上
create table students(
id int primary key,
name varchar(20) not null,
age int not null,
seatid int,
constraint fkseat foreign key(seatid) references seats(id)
);
添加主表数据
insert into students values
(1, '张三', 18, '1'),
(7, '李四', 17, '2'),
(8, '老五', 19, '2');
insert students(id, name, age) values(16, '张三', 30), (17, '李四', 36);
交叉情况(生成一个笛卡尔积)
select * from students, seats;
内连接(连接匹配的行)
select * from students innents inner join seats on students.seatid = seats.id;
select students.name, students.age, seats.name from students inner join seats students.seatid = seats.id;
左外连接(优先显示左表的全部信息)
select * from students left join seats on students.seatid = seats.id;
右外连接(优先显示右表的全部信息)
select * from students right join seats on students.seatid = seats.id;
全外连接
select * from students left join seats on students.seatid = seats.id
union
select * from students right join seats on students.seatid = seats.id;
左外连接+右外连接

浙公网安备 33010602011771号