常用的mysql语句命令以及多表操作,sql命令

数据库中:库和表 的增删改查命令

连接mysql
连接MySQL服务器的话,则:mysql -u root -p (注意:我的用户名是root),然后输入密码就可以再次连接了

显示数据库

show databases;

显示数据库中的表

使用某个库

use 库名;
//注意先使用use 库名
show tables;

在库中导入sql文件

mysql -u root -p123456 --database login < login.sql
// mysql -r 数据库账号 -p数据库密码 --库名 需要导入的表名 < 将要导入的sql文件

创建数据库,并设置编码格式为utf8

create database if not exists 库名 character set utf8;

显示某个库的编码格式

show create database 库名

使用某个库

use 库名;

修改某个库的编码格式

alter database 库名 character set 编码格式

删除某个库

drop database if exists 库名;

数据表操作:增删改查

创建表

create table if not exists 表名(
    字段名称  数据类型  约束
)

数据类型
整形 tinyint / int()
浮点型 float(数字的总位数,小数点后的位数) / double
字符串 char(定长5) varchar(变长5)
布尔值 1 0
时间

约束
主键:primary key,默认就是不能为空,auto_increment
唯一:unique key, 手机号,身份证,学号
非空:not null
默认约束: default ‘’
外键约束:foreign key

查看表结构
返回sql语句

show create table 表名

返回table表格形式:

describe 表名

修改表
添加字段

  alter table 表明 add 字段名  数据类型 约束

修改字段名称

alter table 表名 change uname username 数据类型 约束

更改表名

alter table stu rename student

删除字段

alter table 表名 drop 字段名称

删除表
drop table 表名

添加约束
alter table 表明 add 字段名 数据类型 约束
alter table 表名 change uname uname 数据类型 约束
alter table 表名 alter 字段名称 set 约束
删除约束
删除唯一约束

数据库中 表 记录的:增删改查

创建表

create table member5(
    id int(5) unsigned key auto_increment,
    name varchar(24),
    sex enum("man","women") default "man",
    age tinyint,
    province varchar(30),
    salary float(8,2)
);

增加
插入单条数据

INSERT [INTO] <表名> VALUES <值列表>
Eg: insert into 表名 values(null,‘张三’,default,45,‘河南’,6666.66);

 insert into member5 values(null,'张三',default,45,'河南',6666.66);
    insert into member5 values(null,'张三丰',default,65,'河南',7500);
    insert into member5 values(null,'张子仪','women',39,'洛杉矶',6666.66);
    insert into member5 values(null,'傻子张','women',26,'北京',3000);
    insert into member5 values(null,'大张伟',default,33,'北京',9999.99);
    insert into member5 values(null,'小张宁',default,19,'河南',99999.99);
    insert into member5 values(null,'李四','women',15,'河北',2000);

插入多条数据

insert into 表名(字段名称) values(对应字段值),(对应字段值); 字段名:可以省略

insert into member5(name,age,province,salary) values('王小二',17,'河北',1800),('二郎神',98,'宝莲灯',8900),('李二牛',19,'北京',3200);
insert into member5 values(null,'JACK',default,45,'洛杉矶',3000);

查找

select 字段1,字段2,… from 表名 [where 条件子句] [group by 字段][haveing 条件子句][order by 字段] [limit [起始值] 条数]

查找某个表中所有的数据
select * from 表名;

下面都是上面创建的表的查询例子

查找表中字段name,age,salary
select name,age,salary from member5;      member5 是表名;
查找表中字段name,age,salary并且age大于30select name,age,salary from member5 where age > 30;

查找表中字段province 是nullselect * from member5 where province is null;

查找表中字段province 不是nullselect * from 表名
select 字段名,字段名 from 表名 where [条件]
select * from member5 where province is not null;

    select * from member5 where age >= 30 and age<=40;
    select * from member5 where age between 30 and 40;
    select * from member5 where salary not between 5000 and 10000;

    select * from member5 where name like '张%';
    select * from member5 where name like '_张_';
    select * from member5 where name like '_张%';
    select * from member5 where name like '%张%';
    select * from member5 where binary name = 'JAck';
    select * from member5 where sex='women' and age > 30;
    select * from member5 where age > 80 or salary > 10000;

    select * from member5  order by  age desc limit 0,10;

    select province,count(province) from member5 group by province; 查询所有省份和对应的人数
select province,count(province) from member5 group by province having count(province) >=3;

    where: 条件的内容必须是你这个表中存在的字段;不能跟对应的函数

like : 模糊查询
% 	: 0个或多个		(类似于正则表达式)
_	: 必须有一个

binary :区分字母大小写

删除

delete from <表名> [where 删除条件] 这种方式删除:自动递增的id不会被彻底清除;
truncate <表名> 这种方式删除:快速清空一个数据库中的所有表, 自动递增的id会被彻底清除;(斩草除根)
此语句删除表中的行,如果不带where子句,则删除整个表中的记录,但是表不被删除。

删除年龄大于80或者工资大于1000的人
delete from member5 where age>80 or salary>10000;

删除年龄最大的那个人   
delete from member5 order by age desc limit 1; 

修改
update <表名> set <字段名 = 值> where [条件]
给性别为女且年龄》30岁的涨薪500
update member5 set salary = salary + 500 where sex=‘women’ and age >30;

数据库的多表操作

多表操作实例练习

多表操作
创建student和score表

CREATE  TABLE student (
id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY ,
name  VARCHAR(20)  NOT NULL ,
sex  VARCHAR(4) ,
birth  YEAR,
department  VARCHAR(20) ,
address  VARCHAR(50)
);
创建score表。SQL代码如下:
CREATE  TABLE score (
id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  AUTO_INCREMENT ,
stu_id  INT(10)  NOT NULL ,
c_name  VARCHAR(20) ,
grade  INT(10)
);

为student表和score表增加记录

INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区');
INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区');
INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市');
INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市');
INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市');
INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市');

INSERT INTO score VALUES(NULL,901, '计算机',98);
INSERT INTO score VALUES(NULL,901, '英语', 80);
INSERT INTO score VALUES(NULL,902, '计算机',65);
INSERT INTO score VALUES(NULL,902, '中文',88);
INSERT INTO score VALUES(NULL,903, '中文',95);
INSERT INTO score VALUES(NULL,904, '计算机',70);
INSERT INTO score VALUES(NULL,904, '英语',92);
INSERT INTO score VALUES(NULL,905, '英语',94);
INSERT INTO score VALUES(NULL,906, '计算机',90);
INSERT INTO score VALUES(NULL,906, '英语',85);
  1. 查询student表的所有记录
select * from student;
  1. 查询student表的第2条到4条记录
select * from student  limit 1,3;	
  1. 从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息
select id,name,department from student;
  1. 从student表中查询计算机系和英语系的学生的信息
select * from student where department = '计算机系' or department = '英语系';
  1. 从student表中查询年龄18~22岁的学生信息

这里根据时间时间,现在是2022年

select * from student where birth>=2000 and birth<=2004;
  1. 从student表中查询每个院系有多少人
select department,count(department) from student group by department;
  1. 从score表中查询每个科目的最高分
select * from score group by c_name  order by grade desc limit 3;
  1. 查询李四的考试科目(c_name)和考试成绩(grade)
select c_name,grade  from student inner join score on student.id = score.stu_id where name = '李四';
  1. 用连接的方式查询所有学生的信息和考试信息
select stu_id,name,sex,birth,department,address,c_name,grade from student as st inner join score as sc on st.id = sc.stu_id;
或者:
select stu_id,name,sex,birth,department,address,c_name,grade from student,score where student.id = score.stu_id;
  1. 计算每个学生的总成绩
select name,sum(grade) from student inner join score on student.id = score.stu_id group by stu_id;
  1. 计算每个考试科目的平均成绩
select name,sum(grade)/count(stu_id) from student inner join score on student.id = score.stu_id group by stu_id;
  1. 查询计算机成绩低于95的学生信息
select stu_id,name,sex,birth,department,address,c_name,grade from student as st inner join score as sc on st.id = sc.stu_id where c_name = '计算机' and grade < 95;
  1. 查询同时参加计算机和英语考试的学生的信息
 select name,birth,department,c_name,address,grade from student as st inner join score as sc on st.id = sc.stu_id where c_name like "计算机%" or  c_name like "英语%" group by name having count(name) = 2;
select name,birth,department,c_name,address,grade from student as st inner join score as sc on st.id = sc.stu_id where c_name = "计算机" or  c_name = "英语" group by name having count(name) = 2;
  1. 将计算机考试成绩按从高到低进行排序
select stu_id,name,sex,birth,department,address,c_name,grade from student as st inner join score as sc on st.id = sc.stu_id  where c_name = '计算机' order by grade desc;
  1. 从student表和score表中查询出学生的学号,然后合并查询结果
select stu_id,name from student as st inner join score as sc on st.id = sc.stu_id;
  1. 查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
select stu_id,name,department,c_name,grade from student as st inner join score as sc on st.id = sc.stu_id where name like "张%" or name like "王%";
  1. 查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
select name,birth,department,c_name,grade from student as st inner join score as sc on st.id = sc.stu_id where address like "湖南%";
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜空孤狼啸

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值