创建表

drop table student;
DROP table Course;
DROP table sc; CREATE TABLE student
(
sid integer PRIMARY KEY ASC autoincrement not null,--id 升序排序 主键不为空,当为主键时默认为不为空自动增长升序排序 我无聊实践了下,只填primary key创建表比当前这种全写的要快
sname nvarchar(32),--学生名
age integer,--年龄
sex nvarchar(8)--性别
);
create table “main”."Course"--课程表
(
cid integer Not null,--id 这个是公司一个开发写的,感觉很新奇,但是没啥卵用,同上primary key已经解决一切,这样只会让创建表时间延长
cname nvarchar(32),--课程名
   primary key ("cid" ASC)
);
create table sc --成绩表
(
scid integer PRIMARY KEY autoincrement,--id
sid integer,--学生表id
cid integer,--课程表id
core integer--成绩
); INSERT into student(sname,age,sex)
VALUES
('芳芳',21,'女'),
('婷婷',21,'女'),
('瑞宝',21,'女'),
('不知名',21,'女'); insert into Course(cname)
VALUES
('语文'),
('数学'); INSERT into sc(sid,cid,core)
VALUES
(1,1,80),
(1,2,50),
(2,1,99),
(2,2,99);

各种插入

INSERT into student(sid,sname,age,sex)
VALUES
(6,'错乱',21,'女')

各种查询

--查询自增id不连续的id
select sid from (select sid from student order by sid asc) s where not exists (select 1 from student where sid=s.sid-1);
--连接查询,芳芳的数学成绩
select s.sname,sc.core from student s LEFT JOIN sc ON s.sid = sc.sid left JOIN Course c on c.cid =sc.cid WHERE s.sname = '芳芳';
--模糊查询名字有婷的学生
select * from student WHERE sname like '%婷%';
--不用连接查询查询婷婷 的数学成绩
select s.sid,s.sname,scc.core from (SELECT sid,sname FROM student ) s,(SELECT sid,core,cid FROM sc) scc WHERE sname = '婷婷' AND scc.sid = s.sid AND scc.cid = 2 ;
--简便多表查询芳芳以外学生的语文成绩
select s.sname,c.cname,sc.core from student s,sc,Course c WHERE s.sname IS NOT '芳芳' and s.sid = sc.sid and sc.cid = c.cid and c.cname = '语文' GROUP BY sc.scid ;
--查询出数学比语文高的学生
SELECT s.sid,s.sname,sc1.core FROM (SELECT sid,core FROM sc WHERE cid = '' ) sc2,(SELECT sid,core FROM sc WHERE cid = '' ) sc1, (SELECT sid,sname FROM student ) s WHERE s.sid = sc1.sid and sc1.sid = sc2.sid AND sc1.core<sc2.core;
--查询成绩100的其他学生
select * FROM student WHERE sname NOT IN (SELECT sname FROM student s,sc WHERE s.sid = sc.sid AND sc.core = 100);
--查询成绩大于60的学生个数
select count(distinct(sname)) FROM student s,sc WHERE s.sid = sc.sid AND sc.core>60;
--查询平均值大于70的学生
select s.sname,avg(sc.core) from student s,sc WHERE s.sid = sc.sid GROUP BY sc.sid HAVING avg(sc.core)>70;

各种更新--待更新

--将mark更新到name
update test1 set name = (SELECT mark FROM test2 WHERE test2.id=test1.id) WHERE test1.id=(select DISTINCT id from test2 where test2.id=test1.id)

各种删除--待更新


无聊试验了一下

aaa1比aaa创建的要快,没想到重复操作不简洁还是有点时间消耗的,每种创建10个,aaa1快了0.0001秒。创建表对于速度还是不要求,但如果是公司大数据大量的插入更新将会很明显,有一个代码优化的意识很重要。

然后这个,第二种竟然比第一种还要快。。


--倒叙查询 id倒叙且只显示前十条
select * from sc order by id desc limit 0,10;

SQL数据库各种查询建表插入集合-待续持续更新的更多相关文章

  1. 50个SQL语句(MySQL版) 建表 插入数据

    本学期正在学习数据库,前段时间老师让我们做一下50个经典SQL语句,当时做的比较快,有一些也是百度的,自我感觉理解的不是很透彻. 所以从本篇随笔开始,我将进行50个经典SQL语句的复盘,加深理解. 答 ...

  2. JavaFX程序初次运行创建数据库并执行建表SQL

    在我的第一个JavaFX程序完成安装的时候才突然发现,不能要用这个软件还要手动执行Sql来建表吧? 于是我的想法是在Main程序中执行时检测数据库连接状况,如果没有检测到数据库或者连接异常,那么出现错 ...

  3. 从数据库中查询所有表及所有字段的SQL语句

    从数据库中查询所有表及所有字段的SQL语句 由于一个小项目的需要,近日完成一个从数据库中查询所有表及所有字段的方法,其实用两条SQL语句就可以完成. Sql Server版:列出当前DB中所有表:se ...

  4. mysql数据库(一):建表与新增数据

    一. 学习目标 理解什么是数据库,什么是表 怎样创建数据库和表(create) 怎样往表里插入数据(insert) 怎样修改表里的数据(update) 怎样删除数据库,表以及数据(delete) 二. ...

  5. PowerDesigner创建表 拷贝创建表语句 SQLSERVER创建数据库 使用查询 创建表 并且添加数据

    PowerDesigner创建表 : 1.双击打开PowerDesigner   2.双击打开Create model 3左键点击Model  types,再点击Physical    Data  m ...

  6. 0420-mysql命令(数据库操作层级,建表,对表的操作)

    注意事项: 符号必须为英文. 数据库操作层级: 建表大全: #新建表zuoye1:drop table if exists zuoye1;create table zuoye1(    id int ...

  7. 干货!IT小伙伴们实用的网站及工具大集合!持续更新!

    1.Git 还在担心自己辛辛苦苦写的代码被误删了吗?还在担心自己改错了代码不能挽回吗?还在苦恼于多人开发合作找不到一个好的工具吗?那么用Git就对 了,Git是一个开源的分布式版本控制系统,用以有效. ...

  8. PHP 日常开发过程中的bug集合(持续更新中。。。)

    PHP 日常开发过程中的bug集合(持续更新中...) 在日常php开发过程中,会遇到一些意想不到的bug,所以想着把这些bug记录下来,以免再犯! 1.字符串 '0.00'.'0.0'.'0'  是 ...

  9. SQL 查询建表SQL

    1.新建一个查询语句,按执行按钮 2.结果页面会显示一条sql语句,复制该语句即可建表 3.建表测试

随机推荐

  1. unity编辑器扩展_07(创建对话框,检测按钮的点击,点击按钮后提示信息,保存设置的数据,显示点击按钮后的处理的进度条信息)

    代码: using UnityEditor;using UnityEngine; public class ChangeValue : ScriptableWizard {               ...

  2. .Net之微信小程序获取用户UnionID

    前言: 在实际项目开发中我们经常会遇到账号统一的问题,如何在不同端或者是不同的登录方式下保证同一个会员或者用户账号唯一(便于用户信息的管理).这段时间就有一个这样的需求,之前有个客户做了一个微信小程序 ...

  3. explain详解 和 show profiles

    explain出的有下列几项: 1.select_type 2.type 1.all 全表扫描,从表头扫描到表尾: 2.index 根据索引来读取数据,如果索引已包含了查询数据,只需扫描索引树,否则执 ...

  4. 一看就懂-Docker容器化

    一.Docker简介 1.1 什么是docker docker的英文意思是 码头工人,意思就是搬运东西的意思,其实这和docker的特点是一样的,docker提供的就是一种容器化搬运东西(我们的软件. ...

  5. [python]专用下划线标识符

    1. python用下划线作为变量前缀和后缀,来指定特殊变量. _xxx: 不用'from module import *'导入,一般被看作是私有的,在模块或类外不可用使用. __xxx__: 系统定 ...

  6. nvm 管理多个活动的node.js版本

    前序:最近在使用taro框架开发小程序,因为安装taro时遇到一些问题,后来重新安装了node版本——v10.16.3,却影响了我本地开发的项目,故此使用nvm来管理node的版本,更加灵活的切换以支 ...

  7. Java日志之Slf4j,Log4J,logback原理总结

    几乎任何应用,一定是需要日志的. 那么,面对种类繁多的日志框架和配置,我们该何去何从? 1.前奏:我是在研究mybatis源码的过程中才意识到需要搞明白日志原理这回事,因为mybatis(和一些其他开 ...

  8. Dijkstra算法的Java实现

    package main.java; import main.java.utils.GraphUtil; import java.util.ArrayDeque; import java.util.L ...

  9. hdu 1007 Quoit Design 题解

    原题地址 题目大意 查询平面内最近点对的距离,输出距离的一半. 暴力做法 枚举每一个点对的距离直接判断,时间复杂度是 $ O(n^2) $,对于这题来说会超时. 那么我们考虑去优化这一个过程,我们在求 ...

  10. 如何让C/S应用支持多端(PC、Android、iOS)同时登录?

    在C/S架构中,通常是使用 UserID 作为唯一标志来标记每一个用户的,也就是说,对于一个指定的UserID,只能有一个客户端在线. 如果我们开发的系统要支持同帐号多设备同时登录的场景,即需要像微信 ...