数据库操作

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;

左外连接+右外连接

posted @ 2020-10-21 20:53  15737615535  阅读(100)  评论(0)    收藏  举报