数据库是sql语句

Sql语句

#创建数据库

CREATE DATABASE  student;

#删除数据库

drop database student;



#创建表

use student; #写了这个就不需要指明在哪个数据库创建表如student.t_class

#创建主键字段

create table t_class(class_id varchar(50) PRIMARY KEY, class_name varchar(50));

#创建外键字段

create table t_student(student_id varchar(50) PRIMARY KEY,

      student_name varchar(50),

                      class_id varchar(50),

                      FOREIGN KEY (class_id) REFERENCES t_class(class_id));

#修改字段和添加字段

alter table t_student add sex varchar(10);



#显示表

show tables;

show create table t_student;

SHOW COLUMNS FROM t_student;

show databases;

#删除表

drop table t_student;



#数据插入 insert  删除 delete  更新 update  查询 select

insert into t_class (class_id, class_name) values('cr001', '科锐1班');

delete from t_class where class_id = 'cr002';

update t_class set class_name='科锐2班', class_id='cr005' where class_id = 'cr004';

#普通查询

select class_id, class_name from t_class;

select * from t_class;

select * from t_class where class_id = 'cr001' and class_name = '科锐2班';

select * from t_class where class_id >= 'cr001';

select * from t_class where class_id <> 'cr001';



查询的多种语法
#模拟查询关键字用like %表示替代一个或多个任意字符 []限定范围  _仅替代一个字符
例子:
select * from t_class where class_id like '%5%';
select * from t_class where class_name like '%班';
select * from t_class where class_id like '_R%';
select * from t_class where class_id like '[c]%';

#子查询
1子查询的 SELECT 语句可与外部查询指向不同的表或指向同一个表
2 In里面可以填多个值或者select语句,只返回满足in里面条件的选项
3 exists 效率的差异
in适合t_student表比t_class表数据多的情况
exists()适合t_student表比t_class表数据少的情况
(
in是遍历t_student表后去和缓存的t_class表一个一个比较 假如t_student有10 而t_class 有100 那就是10*100次,这种情况用exists比较合适,因为exists是只返回true或false,不管t_class有多少条数据都一样,这样的话exists效率是执行10次
如果是相反的话t_student表是100,t_class表是10,in是一样的次数,还是100*10
exists是100次,虽然exists还是比in次数少,但是in是在缓存中比较,而exists是执行数据库,效率比内存低很多,所以就会得出上面那个使用方案
)
例子:
select * From t_student where class_id in (select class_id From t_class);
select * From t_student where exists 
(
select class_id From t_class where t_student.class_id = 'cr001'
);

#查询张三班级名称
select class_name From t_class where class_id = 
(
	select class_id From t_student where student_name = '张三' 
);

#指定行数limit 起始行数 总共显示行数(默认起始行数是0也就是从第一行开始)
#ORDER BY 排序的字段 asc(升序)
select  * From t_student ORDER BY student_id asc LIMIT 2;

#多表组合查询 笛卡尔面积
select *from t_student; #3*3
select *from t_class;   #5*2
select student_id, student_name,  class_name
from t_student, t_class where t_student.class_id = t_class.class_id ;

#临时表(应用于把多张表形成一个符合自己需求的临时表)
select *from
(
	select student_id, student_name,  class_name
	from t_student, t_class where t_student.class_id = t_class.class_id 
)table1 where class_name = '科锐1班';

#分组GROUP BY+字段(将查询结果按一个或多个进行分组,字段值相同的为一组),一般结合函数使用
聚合函数 sum求总数 avg求平均数 count求个数
#求每个学生的总分和平均分
select *from 
(
	select  student_id  as '学号', sum(score) as '总分', avg(score) as '平均分' from t_select 	GROUP BY student_id
) talbe1 where 平均分 > 60 and 总分 > 100;

select  class_id, count(student_id) from t_student group by class_id;

#临时增加字段(不常用)
select *, 
(
		select class_name from t_class  where t_class.class_id = t_student.class_id 
)  as 'class_name' from t_student;

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值