sql练习

SQL语句练习

本秂侑毒 提交于 2019-12-09 16:21:17
create table student( Sno char(7) primary key, Sname char(10) not null, Ssex char(2), Sage tinyint, Sdept char(20) ) create table Course( Cno char(10) not null, Cname char(20) not null, Ccredit tinyint, Semester tinyint, primary key(Cno) ) create table SC ( Sno char(7) not null, Cno char(10) not null, Grade tinyint, XKLB char(4), primary key(Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student (Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) ) alter table SC ADD XKLB char(4) NULL alter table SC alter COLUMN XKLB char(6) alter table Course drop column Period alter table 雇员 add CONSTRAINT PK_EMP

一个 union all 的all

不羁的心 提交于 2019-12-07 09:43:20
这是个值得纪念的sql语句 本来用union 怎么都查询不出正确数据 苦逼1小时原来是少了个all 呵呵强大的sql 一个object 表中有tchID 和OtherTchID 都可能为空 ,让求出TchID出现次数和OtherTchID出现的次数,然后TchID和OtherTchID相同时出现次数想加 计算每个ID出现的总次数。 select a.TchID,sum(a.num) from( select TchID, count(TchID) as num from subject group by TchID union all select OtherTchID as TchID, count(TchID) as num from subject group by OtherTchID ) a group by a.TchID sql语句能解决的问题我觉得还是在sql语句中解决最好,解决后就像吃了口肉,恩 以后加强sql语句的基础练习 加油了!!! 来源: oschina 链接: https://my.oschina.net/u/269285/blog/91181

简单的sql注入1-3详解及相关阅读(实验吧)

狂风中的少年 提交于 2019-12-07 00:48:37
1 简单的Sql注入 类型:sql注入 题目链接: http://www.shiyanbar.com/ctf/1875 解题过程: 打开页面看到一个输入框和提交,先尝试输入一些简单的东西,发现输入1 2 3都是有结果的,输入4之后没有结果。 按照sql注入惯用思想,尝试输入特殊字符——单引号,可以看到报错,并且根据错误信息可以推断数据库语句可能是简单的select xxx from xxx 在注入时,需要获取某字符,可以使用联合查询的方式(如果是登录的话可以使用万能登录字符串)进行尝试,需要先获取数据库名、表名及字段名 获取数据库名:输入 1' union select database()' 但是发现报错中只有 'database()''' ,于是猜测是否对于数据库语句进行了过滤。再次进行输入判断其过滤方式: 输入1' unionselect database()',发现报错为 'uniondatabase()''' ,对比前一次发现,union未被过滤,而select依旧被过滤,判断是过滤带有空格的数据库关键词,此时可以通过很多方式进行绕过,如加上+、%0a、%0b、/**/等字符,或者将关键词写两遍,如上,查询数据库名时输入: 1' union/**/select/**/database()',得到数据库名称为 web1 下面用同样的方法查询表名,输入: 1' union/*

MySQL数据库(二)——SQL

让人想犯罪 __ 提交于 2019-12-06 02:21:59
一、SQL的概念 1.什么是SQL 结构化查询语言(structured query language)简称SQL,SQL语句就是对数据库进行操作的一种语言。 2.SQL的作用 通过SQL语句我们可以方便的操作数据库中的数据、表、数据库。SQL是数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。 3.SQL语句的分类 (1)DDL(Data Definition Language)数据定义语言 用于定义数据库对象:数据库、表、列等。关键字:create、drop、alter等。 (2)DML(Data Manipulation Language)数据操作语言 用来对数据库中表的数据进行增删改。关键字:insert、delete、update等。 (3)DQL(Data Query Language)数据查询语言 用于查询数据库中表的记录(数据)。关键字:select、where等。 (4)DCL(Data Control Language)数据控制语言 用于定义数据库的访问权限和安全级别,及创建用户 。关键字:GRANT、REVOKE等。 4.SQL通用语法 SQL语句可以单行或多行书写,以分号结尾。 可使用空格和缩进来增强语句的可读性。 MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。例如:SELECT * FROM

sql练习03

纵饮孤独 提交于 2019-12-05 17:32:50
准备数据 建表语句 CREATE TABLE students (sno VARCHAR(3) NOT NULL, sname VARCHAR(4) NOT NULL, ssex VARCHAR(2) NOT NULL, sbirthday DATETIME, class VARCHAR(5)) CREATE TABLE courses (cno VARCHAR(5) NOT NULL, cname VARCHAR(10) NOT NULL, tno VARCHAR(10) NOT NULL) CREATE TABLE scores (sno VARCHAR(3) NOT NULL, cno VARCHAR(5) NOT NULL, degree NUMERIC(10, 1) NOT NULL) CREATE TABLE teachers (tno VARCHAR(3) NOT NULL, tname VARCHAR(4) NOT NULL, tsex VARCHAR(2) NOT NULL, tbirthday DATETIME NOT NULL, prof VARCHAR(6), depart VARCHAR(10) NOT NULL) 插入数据 INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108

MySQL笔记整理3 - SQL语句(下) DML

心不动则不痛 提交于 2019-12-05 11:18:32
五、练习 1.请描述MySQL数据库在管理数据的时候的使用的管理模型。 MySQL是采用库和表的方式管理数据的,一个MySQL服务中可以存在多个数据库,每一个数据库中可以存在多张表。表一定要存在于库里面。 2.简述表结构包含哪些内容。 针对已经存在的表student,使用命令 desc student或者show columns from student; 表结构: Field字段(表示的是列名) Type类型(表示的是列的数据类型) Null 这个列是否能取空值 Key 是否为主键,在mysql中key 和index 是一样的意思,这个Key列可能会看到有如下的值:PRI(主键)、MUL(普通的b-tree索引)、UNI(唯一索引) Default:列的默认值 Extra:其它信息 3.请说明SQL指什么。并写出SQL的常见分类,说明每一类SQL的作用及相关关键字。 SQL指的是结构化查询语句(structured query lanangue) SQL语句的种类: DDL:数据定义语言 (表结构相关的操作,库的相关操作) 关键字:create[创建] alter[修改] drop[删除] 作用:定义数据的结构 DML:数据操作语言(表中数据操作相关) 关键字:insert[插入] select[查询] update[修改] delete[删除] 作用

初识JDBC

余生长醉 提交于 2019-12-04 15:23:31
JDBC idea第一次使用过程中会出现使用时区错误,设置时区后解决问题 概念:JAVA DataBase Connectivity -java 数据库连接,java语言操作数据库 JDBC本质:sun公司定义的一套JAVA连接各种关系型数据库的规则(接口),并没有进行实现,而是由每个数据库厂商实现了这个接口,并且提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行代码的是驱动jar包中的实现类。 JDBC 快速入门 package cn.learn.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class JdbcDemo01 { public static void main(String[] args) { //1.导入厂商jar包,复制包到新建文件夹lib,再add as Library /* mysql厂商的jar包在5版本后里的META-INF中已经注册驱动,可 以不写 Class.forName("com.mysql.jdbc.Driver"); */ Statement statement = null; Connection conn =

sql 聚合查询

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-04 11:25:04
如果我们要统计一张表的数据量,例如,想查询 students 表一共有多少条记录,难道必须用 SELECT * FROM students 查出来然后再数一数有多少行吗? 这个方法当然可以,但是比较弱智。对于统计总数、平均数这类计算,SQL提供了专门的聚合函数,使用聚合函数进行查询,就是聚合查询,它可以快速获得结果。 仍然以查询 students 表一共有多少条记录为例,我们可以使用SQL内置的 COUNT() 函数查询: -- 使用聚合查询: Run COUNT(*) 表示查询所有列的行数,要注意聚合的计算结果虽然是一个数字,但查询的结果仍然是一个二维表,只是这个二维表只有一行一列,并且列名是 COUNT(*) 。 通常,使用聚合查询时,我们应该给列名设置一个别名,便于处理结果: -- 使用聚合查询并设置结果集的列名为num: Run COUNT(*) 和 COUNT(id) 实际上是一样的效果。另外注意,聚合查询同样可以使用 WHERE 条件,因此我们可以方便地统计出有多少男生、多少女生、多少80分以上的学生等: -- 使用聚合查询并设置WHERE条件: Run 除了 COUNT() 函数外,SQL还提供了如下聚合函数: 函数 说明 SUM 计算某一列的合计值,该列必须为数值类型 AVG 计算某一列的平均值,该列必须为数值类型 MAX 计算某一列的最大值 MIN

sql语句集锦

孤街醉人 提交于 2019-12-04 01:23:25
创建练习需要的表 create table student( sid int, sname varchar(32), sage int, ssex varchar(32) ); create table course( cid int, cname varchar(32), tid int ); create table sc( sid int, cid int, score int ); create table teacher( tid int, tname varchar(16) ); 添加数据 insert into Student select 1,N'刘一',18,N'男' union all select 2,N'钱二',19,N'女' union all select 3,N'张三',17,N'男' union all select 4,N'李四',18,N'女' union all select 5,N'王五',17,N'男' union all select 6,N'赵六',19,N'女' ; insert into Teacher select 1,N'叶平' union all select 2,N'贺高' union all select 3,N'杨艳' union all select 4,N'周磊'; insert into teacher

sql语句

☆樱花仙子☆ 提交于 2019-12-03 21:03:52
一.客户端命令介绍 mysql 1、用于数据库的连接管理 1) 连接(略) 2) 管理: #MySQL接口自带的命令 \h 或 help 或? 查看帮助 \G 格式化查看数据(key:value) \T 或 tee 记录日志(临时) 永久有效加入客户端配置文件中,不用重启 \c(5.7可以ctrl+c) 结束命令 5.6可以直接退出数据库 \s 或 status 查看状态信息 \. 或 source 导入SQL数据 \u或 use 使用数据库 \q 或 exit 或 quit 退出 system 或\! 敲命令 3)接收用户的SQL语句 2、将用户的SQL语句发送到服务器 mysqldump 1、备份数据库和表的内容 help命令的使用 mysql> help mysql> help contents mysql> help select mysql> help create mysql> help create user mysql> help status mysql> help show source命令的使用 #在MySQL中处理输入文件: #如果这些文件包含SQL语句则称为: #1.脚本文件 #2.批处理文件 mysql> SOURCE /data/mysql/world.sql #或者使用非交互式 mysql</data/mysql/world.sql