精华内容
下载资源
问答
  • 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。 hive (default)> create database db_hive; 2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法) hive ...

    Hive的 DDL数据定义

    创建数据库

    1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。
    hive (default)> create database db_hive;
    2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法)
    hive (default)> create database db_hive;
    FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database db_hive already exists
    hive (default)> create database if not exists db_hive;
    3)创建一个数据库,指定数据库在HDFS上存放的位置
    hive (default)> create database db_hive2 location '/db_hive2.db';
    

    查询数据库

    显示数据库
    hive> show databases;
    过滤显示查询的数据库
    hive> show databases like 'db_hive*';
    OK
    db_hive
    db_hive_1
    查看数据库详情
    hive> desc database db_hive;
    OK
    db_hive		hdfs://hadoop102:9000/user/hive/warehouse/db_hive.db	bigdataUSER	
    切换当前数据库
    hive (default)> use db_hive;
    

    删除数据库

    1.删除空数据库
    hive>drop database db_hive2;
    2.如果删除的数据库不存在,最好采用 if exists判断数据库是否存在
    hive> drop database db_hive;
    FAILED: SemanticException [Error 10072]: Database does not exist: db_hive
    hive> drop database if exists db_hive2;
    3.如果数据库不为空,可以采用cascade命令,强制删除
    hive> drop database db_hive;
    FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database db_hive is not empty. One or more tables exist.)
    hive> drop database db_hive cascade;
    

    创建表

    建表语法
    CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
    [(col_name data_type [COMMENT col_comment], …)]

    [COMMENT table_comment]
    [ROW FORMAT row_format]
    [STORED AS file_format]
    [LOCATION hdfs_path]
    LIKE tablename
    字段解释说明
    (1)CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
    (2)EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据
    (3)COMMENT:为表和列添加注释。
    (4)ROW FORMAT DELIMITED FIELDS TERMINATED BY char:指定分隔符
    (5)STORED AS指定存储文件类型
    常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)
    如果文件数据是纯文本,可以使用STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE。
    (6)LOCATION :指定表在HDFS上的存储位置。
    (7)LIKE允许用户复制现有的表结构,但是不复制数据。
    如果当前创建的表create table table1,希望table1和已经存在的table0的表结构相同,就可以使用like指令直接创建,create table table1 like table0;
    管理表(内部表)
    当我们删除一个管理表时,Hive也会删除这个表中数据(元数据和表数据都会删除掉)
    实操

    (1)普通创建表
    create table if not exists student3(
    id int, name string
    )
    row format delimited fields terminated by '\t'
    stored as textfile
    location '/user/hive/warehouse/student3';
    (2)根据查询结果创建表(查询的结果会添加到新创建的表中)
    create table if not exists student3 as select id, name from student;
    (3)根据已经存在的表结构创建表
    create table if not exists student4 like student;
    (4)查询表的类型
    hive (default)> desc formatted student2;
    Table Type:             MANAGED_TABLE  
    

    外部表
    删除该表并不会删除掉这份数据,不过描述表的元数据信息会被删除掉。
    实操

    建表语句
    创建部门表
    create external table if not exists dept(
    deptno int,
    dname string,
    loc int
    )
    row format delimited fields terminated by '\t';
    创建员工表
    create external table if not exists emp(
    empno int,
    ename string,
    job string,
    mgr int,
    hiredate string, 
    sal double, 
    comm double,
    deptno int)
    row format delimited fields terminated by '\t';
    查看创建的表
    hive (default)> show tables;
    OK
    tab_name
    dept
    emp
    向外部表中导入数据
    导入数据
    hive (default)> load data local inpath '/opt/module/datas/dept.txt' into table default.dept;
    hive (default)> load data local inpath '/opt/module/datas/emp.txt' into table default.emp;
    查询结果
    hive (default)> select * from emp;
    hive (default)> select * from dept;
    查看表格式化数据
    hive (default)> desc formatted dept;
    Table Type:             EXTERNAL_TABLE
    

    修改表

    重命名表
    语法
    ALTER TABLE table_name RENAME TO new_table_name
    实操

    hive (default)> alter table dept_partition2 rename to dept_partition3;
    

    增加/修改列信息
    语法
    更新列
    ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment]
    增加列
    ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], …)
    实操

    (1)查询表结构
    hive> desc dept_partition;
    (2)添加列
    hive (default)> alter table dept_partition add columns(deptdesc string);
    (3)查询表结构
    hive> desc dept_partition;
    (4)更新列
    hive (default)> alter table dept_partition change column deptdesc desc int;
    (5)查询表结构
    hive> desc dept_partition;
    

    删除表

    hive (default)> drop table dept_partition;
    
    展开全文
  • 实验一 数据定义与简单查询实验 一、实验目的 1、要求学生熟练掌握和使用SQL、SQL Server企业管理器创建数据库...1、使用SQL Server 2005/SQL Server2008创建一个数据库,例如:“图书读者数据库”(Book_Reader_DB);
  • 1、使用SQL Server 2000企业管理器和查询分析器工具(即用Transact-SQL语句)创建一个“图书读者数据库”(Book_Reader_DB); 2、使用企业管理器查看Book_Reader_DB的数据库属性,并进行修改,使之符合你的要求; 3...
  • 实验一 数据定义与简单查询实验 一实验目的 1要求学生熟练掌握和使用SQL语言SQL Server企业管理器创建数据库表索引和修改表结构并...二实验内容 1使用SQL Server 2008企业管理器创建一个图书读者数据库Book_Reader_DB 2
  • 创建一个自定义函数,传入四个参数l_class,l_fault,l_id,l_type 如果传入的l_id为空则走这边 **if l_id is null then** 1.查询三张表的数据用union all拼接成一个结果集,获取到符合条件的结果集(不需要返回) ...
  • 数据库概论数据定义数据字典模式定义创建模式删除模式表定义创建基本表修改基本表删除基本表索引定义创建索引修改索引删除索引 数据定义 SQL的数据定义功能:定义各种数据库的“对象” 模式定义 表定义 视图定义 ...

    数据定义

    SQL的数据定义功能:定义各种数据库的“对象”

    • 模式定义
    • 表定义
    • 视图定义
    • 索引定义

    在这里插入图片描述
    现代关系数据库管理系统提供了一个层次化的数据库对象命名机制

    • 一个数据库中可以建立多个模式
    • 一个模式下通常包括多个表、视图和索引等数据库对象
    • 数据库->模式->表
      在这里插入图片描述

    数据字典

    数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有对象的定义信息以及一些统计信息:

    • 关系模式、表、视图、索引的定义
    • 完整性约束的定义
    • 各类用户对数据库的操作权限统计信息等

    关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。

    模式定义

    创建模式

    首先对某一个用户创建一个模式

    CREATE SCHEMA TEST;
    

    定义模式实际上定义了一个命名空间(或者说目录)。在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。

    在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。

    CREATE SCHEMA<模式名>AUTHORIZ,ATION<用户名>[表定义子句>水<视图定义子句><授权定义子句>]

    删除模式

    DROP SCHEMA<模式名 <CASCADE|RESTRICT>

    CASCADE(级联)

    • 删除模式的同时把该模式中所有的数据库对象全部删除

    RESTRICT(限制)

    • 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
    • 仅当该模式中没有任何下属的对象时才能执行。
    DROP SCHEMA TEST RESTRICT;
    DROP SCHEMA TEST CASCADE;
    

    表定义

    创建基本表

    定义基本表
    CREATE TABLE<表名> /基本表的名称*/

    • (<列名><数据类型>[<列级完整性约束条件>】组成该表的列l
    • [,<列名><数据类型>[<列级完整性约束条件>]]
    • [,<表级完整性约束条件>]);
      • <列级完整性约束条件>:涉及相应属性列的完整性约束条件
      • <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件
      • 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上。
    CREATE TABLE student (
    	m_name VARCHAR(8) PRIMARY KEY,
    	m_age INT,
    	m_sex INT
    );
    

    在这里插入图片描述

    修改基本表

    <表名>是要修改的基本表

    • ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
    • DROP COLUMN子句用于删除表中的列
      • 如果指定了CASCADE短语,则自动删除引用了该列的其他对象
      • 如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列
    • DROP CONSTRAINT子句用于删除指定的完整性约束条件
    • ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类刑
    ALTER TABLE student2 ADD time VARCHAR(6);
    

    删除基本表

    DROP TABLE<表名>[RESTRICTCASCADE];
    RESTRICT:删除表是有限制的。

    • 欲删除的基本表不能被其他表的约束所引用如果存在依赖该表的对象,则此表不能被删除
      CASCADE:删除该表没有限制。
    • 在删除基本表的同时,相关的依赖对象一起删除
    DROP TABLE student2 CASCADE;
    

    索引定义

    创建索引

    CREATE [UNIQUE] [CLUSTER] INDEX <索引名>ON <表名>(<列名>[<次序>][,<列名>[<次序]].);
    
    • <表名>:要建索引的基本表的名字
    • 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔
    • <次序>:指定索引值的排列次序,升序: ASC,降序: DESC。缺省,值: ASC
    • UNIQUE:此索引的每一个索引值只对应唯一的数据记录的
    • CLUSTER:表示要建立的索引是聚簇索引

    看题:
    在这里插入图片描述

    修改索引

    ALTER INDEX <旧索引名> RENAME TO <新索引名>
    

    删除索引

    DROP INDEX <索引名>;
    # 删除索引时,系统会从数据字典中删去有关该索引的描述。
    
    展开全文
  • 1 使用SQL Server 2000企业管理器和查询分析器工具(即用Transact SQL语句)创建一个“图书读者数据库”(Book Reader DB); 2 使用企业管理器查看Book Reader DB的数据库属性 并进行修改 使之符合你的要求; 3 ...
  • 学生-课程数据库: 1、数据定义: ...1、首先用系统超级管理员身份sys创建一个连接,连接名为sys,注意角色选择SYSDBA...3、用用户c##panda创建一个连接,查询用户为c##panda,正确。 4、接下来就可以...

    本篇博客分享的是博主的各种数据操作-实践详细过程(以截图方式展示)

      软件:Oracle  SQL  developer,希望对大家有所帮助咯!

    目录

    1、学生-课程数据库

    2.1、数据定义理论

    2.2、定义实践

    3.1、数据查询理论

    ①单表查询:

    ②连接查询

    ③嵌套查询

    ④集合查询

    ⑤基于派生表的查询

    3.2、查询实践

    ①单表查询:

    ②连接查询

    ③嵌套查询:

    ④集合查询

    ⑤基于派生表的查询

    4.1、数据更新理论

    4.2、更新实践

    ①插入数据

    ②修改数据

    ③删除数据

    5、空值的处理


    1、学生-课程数据库

     

     


    2.1、数据定义理论

    ①SQL的数据定义功能包括模式定义、表定义、视图定义和索引的定义。

    ②模式、表、视图的索引均可创建或删除,然而只有表和索引在创建后可修改,而模式和视图创建之后不可改。若要修改只能删除重建。

    ③现在的关系数据库管理系统提供了一个层次化的数据库对象命名机制:一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。

    注意:要创建模式,调用该命令的用户必须拥有数据库管理员的权限,或者获得了数据库管理员授予的创建模式的权限。

    建立索引是加快查询速度的有效方法。

    删除模式或表,需要在后面选择级联删除(cascade)或者限制删除(restrict),默认是限制删除。删除索引则直接删除即可。

     

    2.2、定义实践

    1、首先用系统超级管理员身份sys创建一个连接,连接名为sys,注意角色选择SYSDBA,其他用户的话直接默认。测试成功后连接。

     

    2、接下来创建一个用户c##panda,即创建一个模式,可连接到orcl。

     

    3、用用户c##panda创建一个连接,查询用户为c##panda,正确。

     

    4、接下来就可以在用户中创建表了,先创建学生表student并给它添加记录。

    在sys中亦可查看学生表。

    添加数据后记得commit; 提交后sys中也可以查询到该表记录:

     

    5、创建课程表course并添加记录。查询结果截图如下:

     

    6、接下来创建学生选课表sc并添加记录,查询结果如下:

     

    7、对表和索引的修改和删除,最后删除模式,具体操作看注释即可。

     

    删除成功之后再想连接panda就会显示错误:执行请求的操作时遇到错误!因为用户已经不存在了,如下

    数据定义实践到此为止!

     


    3.1、数据查询理论

    SQL提供select语句进行数据查询。以下是一个简单例子:

    整个select语句的含义是:根据where子句的条件表达式从from子句指定的基本表、视图或派生表中找出满足条件的元组,再按select子句中的目标列表达式选出元组中的属性值形成结果表。

    select子句:指定要显示的属性列

    from子句:指定查询对象(基本表或视图)

    where子句:指定查询条件

    group by子句:对查询结果按指向列的值分组,该属性列值相等的元组为一个组,通常会在每组中作用聚集函数。

    having短语:只有满足指定条件的组才予以输出

    order by子句:对最终查询结果表按指定列值的升序(asc)或降序(desc)排序。

    ①单表查询:

    1、查询所有列时,<目标列表达式>指定为*。<目标列表达式>可以是表中的属性列,也可以是表达式,还可以是字符串常量。用户可以通过指定别名来改变查询结果的列标题。

    2、选择表中元组时可以指定distinct,即查询结果会消除重复行。默认是all(不管重复行,全部显示在查询结果表中)。

    where子句常用的查询条件表:

    3、字符匹配之通配符:

    %(百分号)表示任意长度(可为0)的字符串,例如a%b,表示以a开头,以b结尾的任意长度的字符串。

    _(下横线)表示任意单个字符,例如a_b,表示以a开头,以b结尾的长度为3的任意字符串。

    注意:如果用户要查询的字符串本身就含有通配符%或_,这时就要使用 escape'<换码字符>' 短语对通配符进行转义。

    4、涉及空值的查询,"IS"不能用等号(=)代替。

    and的优先级高于or,但建议书写时带上括号,这样对看你代码的人来说比较友好。

    对于空值,排序时显示的次序由具体系统实现来决定。(本人升序排则含空值的元组最后显示,降序排则空值的元组最先显示)

    5、当聚集函数遇到空值时,除count(*)外,都跳过空值而只处理非空值。聚集函数只能用于select子句和group  by中的having子句。

    6、where子句与having短语的区别:对象不同。

    where子句作用于基本表或视图,从中选择出满足条件的元组,having短语作用于组,从中选择出满足条件的组。

    ②连接查询

    1、查询同时涉及两个以上的表称之为连接查询,是关系数据库最主要的查询。主要包括等值与非等值查询、自身连接、外连接及多表连接。

    2、等值与非等值连接查询:where子句用来连接两个表的条件称为连接条件或连接谓词,当连接运算符为=时即称为等值连接,否则非等值连接。连接谓词中的列名称为连接字段,连接条件中的各连接字段类型必须是可比的,名字可不相同。

    一条SQL语句可以同时完成选择和连接查询,这是,where子句是由连接谓词和选择谓词组成的复合条件。

    3、自身连接:连接操作可以是一个表与其自己进行连接。此时注意要给表取别名。

    4、外连接:连接后把悬浮元组保存在结果关系中。有左外连接和右外连接。

    5、多表连接:连接操作可以是两个以上的表进行连接。执行时一般是先进行两个表的连接操作,再将其连接结果与第三个表进行

    连接,以此类推。

    ③嵌套查询

    一个select-from-where语句称为一个查询块,将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询称嵌套查询。

    SQL语言允许多层嵌套查询,子查询的select语句中不能使用order by子句,order by子句只能对最终查询结果排序。

    用户可以用多个简单查询构成复杂的查询,从而增强SQL的查询能力。

    1、带有IN谓词的子查询

    子查询的结果往往是一个集合。

    不相关子查询:子查询的查询条件不依赖于父查询。

    相关子查询:子查询的查询条件依赖于父查询。整个查询语句称为相关嵌套查询。求解时需反复求值。

     

    2、带有比较运算符的子查询

    指父查询与子查询之间用比较运算符进行连接。子查询返回单值时可以用比较运算符。

    3、带有any(some)或all谓词的子查询

    子查询返回多值时用ANY(有的系统用some)或ALL谓词修饰符,而使用any或all谓词时则必须同时使用比较运算符。

    语义:

    事实上,用聚集函数实现子查询通常比直接用any或all查询效率要高,any、all与聚集函数的对应关系如下表:

    4、带有exists谓词的子查询

    带有exists谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false"。由其引出的子查询的目标列表达式通常都用 *

    所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用EXISTS谓词的子查询等价替换。

    SQL中没有全称量词,可把带有全称量词的谓词转换为等价的带有存在量词的谓词。

    ④集合查询

    select语句的查询结果是元组的集合,所以多个select语句的结果可进行集合操作。主要包括并操作union、交操作intersect和差操作except(我的软件中差操作是minus)。

    ⑤基于派生表的查询

    子查询不仅可以出现在where子句,还可以出现在from子句,这时子查询生成的临时表成为主查询的查询对象。

    注意派生表要指定属性列,但若子查询中没有聚集函数则可以不指定,子查询select子句后面的列名为其默认属性。

    说明,通过from子句生成派生表,我这里的实现软件不需要关键字AS。但必须为派生关系指定一个别名!

     

    3.2、查询实践

    首先由前面实践基础建立模式(即用户)并在里面创建学生表student、课程表course和学生选课表sc。

    student表:

    course表:

    sc表:

     

    说明:每一步的具体目的都在注释里写清楚了,及其一些注意事项。

    ①单表查询:

    1、选择表中的若干列

     

    2、选择表中的若干元组

    where子句运用:

     

    3、order by 子句

     

    4、聚集函数

     

    5、group  by 子句

     

    ②连接查询

    1、等值与非等值连接查询

     

    2、自身连接

     

    3、外连接

     

    4、多表连接

     

    ③嵌套查询:

     

    1、带有IN谓词的子查询

     

    2、带有比较运算符的子查询

     

    3、带有any(some)或all谓词的子查询

     

    4、带有exists谓词的子查询

     

    ④集合查询

    1、并操作union

     

    2、交操作intersect

     

    3、差操作except(Oracle SQL developer此处是minus)

     

    ⑤基于派生表的查询

    1、注意:有聚集函数时,必须为派生表指定属性列。派生表的属性列在select+列名 后面 as+属性列名,派生表的名字在该select语句后面直接写出,不用AS(有的软件可省可写)

     

    2、子查询中没有聚集函数时,派生表可以不指定属性列。

    数据查询实践到此为止!

     


    4.1、数据更新理论

    数据更新操作有三种:向表中添加若干行数据、修改表中的数据和删除表中的若干行数据。

    1、插入数据:插入元组+插入子查询结果

    into子句中没有出现的属性列,新元组在这些列上取空值,但在定义时not null的属性列不能取空值。如若into未指定属性列则要在每个属性列上均有值,空即为NULL。

    字符串常数要用单引号(英文符号)括起来。

    子查询可嵌套在insert语句中用以生成要插入的批量数据。(批量插入)

    2、修改数据

    where子句+条件,满足条件则修改该元组,若无where子句则修改表中所有元组。

    子查询可嵌套在update语句中用以构造修改的条件。

    关系数据库管理系统在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则:

    --实体完整性

    --主码不允许更改

    --用户定义的完整性

    • not null 约束
    • unique约束
    • 值域约束

    3、删除数据

    where子句+条件,满足条件则删除该元组,若无where子句则删除表中所有元组。

    delete语句删除的是表中的数据,而不是关于表的定义。

    子查询可嵌套在delete语句中,用以构造执行删除操作的条件。

     

    4.2、更新实践

    插入数据

    1、插入元组

     

    2、插入子查询结果

     

    修改数据

    1、修改某一个元组值

     

    2、修改多个元组的值

     

    3、带子查询的修改语句

     

    删除数据

    1、删除某一个元组的值

     

    2、删除多个元组的值

     

    3、带有子查询的删除语句

    数据更新实践到此为止!

     


    5、空值的处理

    经过上面的操作之后三个表具体情况如下:

    说明:因为之前的操作几乎删除了sc表中的全部数据,所以我添加了一些新数据!

     

    前面也有有关空值的一些操作,这里系统介绍这个问题并且会附上相应的实践操作。

    所谓空值就是“不知道”或“不存在”或“无意义”的值。

    SQL语言中允许某些元组的属性在一定情况下取空值,比如:

    1、该属性应该有一个值,但目前不知道它的具体值。

    2、该属性不应该有值。比如缺考的学生成绩必为空值。

    3、因为某种原因不便于填写。

    空值是一个很特殊的值,含有不确定性。

     

    空值的产生

    外连接也会产生空值!空值的关系运算也会产生空值!

     

    空值的判断

    判断一个属性是否为空值,用 is null 或 is not null来表示。

     

    空值的约束条件

    属性定义(或者域定义)中有not null约束条件的不能取空值,码属性不能取空值。

    空值的算术运算、比较运算和逻辑运算

    1、空值与另一个值(包括另一个空值)的算术运算的结果为空值。

    2、空值与另一个值(包括另一个空值)的比较运算结果为unknown。(有了unknown后,传统的逻辑运算中二值逻辑扩展成了三值逻辑)

    T(true),F(false),U(unknown)

    3、在查询语句中,只有使where和having子句中的选择条件为true的元组才被选出作为输出结果。

    空值的处理介绍到此为止!

     


    以上便是博主边学边实践SQL语言的学习报告了,历时一周多终于更完了哈哈,若有错漏欢迎纠正补充,谢谢!

    大家觉得有帮助的话点个赞或留个言给点鼓励呗哈哈(笑脸)

    有帮助?那就-->开启传送大阵         希望分享的东西能对大家有所帮助哈

     

    展开全文
  • 1、使用SQL Server 2000企业管理器创建一个数据库,例如:“图书读者数据库”(Book_Reader_DB); 2、使用企业管理器查看Book_Reader_DB的数据库属性,并进行修改,使之符合你的要求; 3、使用企业管理器和在查询...
  • 这里写自定义目录标题博客由来实验目的实验内容查询练习如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何...

    博客由来

    本人在校学生,希望能借助平台记录下自己的成长,同时也希望分享自己的一些独特的想法。本次上机使用的平台:Windows10,软件:Mysql Workbench 8.0 CE。文末附上完整MySQL源码。

    实验目的

    1、熟练掌握和使用MySQL创建数据库、表索引和修改表结构,并学会使用Workbench 查询分进行结果分析。

    2、掌握查看、修改数据库和表的属性的方法

    3、在建立好的数据库表中输入部分虚拟数据,学会如何实现基于单表的简单查询。

    实验内容

    1. 使用Mysql Workbench 8.0 创建一个“图书读者数据库”(book_reader_db)
    CREATE DATABASE book_reader_db;
    
    • 使用Workbench查看book_reader_db的数据库属性,并进行修改,使之符合要求。三个表的结构为:
    • 创建三表
    create table book(
        bno int primary key,
        bclass varchar(20) not null,
        press varchar(20) not null,
        bname varchar(20) not null,
        price float not null,
        other varchar(50)
    );
    
    create table reader(
        rno int primary key,
        rname varchar(10) not null,
        sex enum('男','女') not null,
        depart varchar(20) not null,
        tel bigint
    );
    
    create table borrow(
        bno int not null,
        rno int not null,
        bor_date datetime,
        foreign key(bno) references book(bno),
        foreign key(rno) references reader(rno)
    );
    
    1. 实现相关约束:
    • 使用Workbench来建立上述三个表的联系,即实现:借阅表与图书表之间、借阅表与读者表之间的外码约束。
    foreign key(bno) references book(bno);
    foreign key(rno) references reader(rno);
    
    • 实现读者性别只能是“男”或“女”的约束。
    enum('男','女');
    
    1. 查询分析器修改表的结构。
      可以查看不同的字段等信息

    2. 在"图书"(book)表中,增加两个字段,分别为"数量"(bnum)和"购买日期"(buy_date)。在“借阅”(borrow)表中增加一个“还书日期"(reb_date)字段。

    ALTER TABLE book
    ADD bnum INT NOT NULL AFTER bname;
    
    ALTER TABLE book
    ADD buy_date DATE NOT NULL AFTER price;
    
    ALTER TABLE borrow
    ADD reb_date DATETIME AFTER bor_date;
    
    ALTER TABLE book
    ADD author varchar(20) NOT NULL AFTER price;
    
    
    
    1. 插入数据(自己编的,如有雷同,纯属巧合,无意冒犯)
    insert into book values(1001,'电子技术','工业出版社','无线电技术',20,58,'李明','2017-03-14','书本正常');
    insert into book values(1002,'电脑维修','机械出版社','跟我修电脑',15,49,'张加军','2017-03-14','有2本出现缺页');
    insert into book values(1003,'信息技术','清华大学出版社','数据库原理',30,65,'刘智','2016-05-23','书本正常');
    insert into book values(1004,'信息技术','北京大学出版社','计算机组成原理',25,56,'王小丽','2016-05-23','暂无');
    insert into book values(1005,'电子技术','浙江大学出版社','射频识别',40,62,'唐飞宏','2018-11-12','暂无');
    insert into book values(1006,'电脑维修','西部院校出版社','电脑组装那些事',15,42,'李笑容','2018-11-12','暂无');
    
    insert into reader values(20180517,'鲁大势','男','软件学院',13879064214);
    insert into reader values(20180214,'尚香','女','艺术学院',16779026573);
    insert into reader values(20180319,'章达','男','体育学院',17779014725);
    insert into reader values(20180211,'布丘仁','男','机电学院',13879041563);
    insert into reader values(20180428,'张小艾','女','信息学院',16779097214);
    insert into reader values(20180514,'章小鱼','女','经管学院',1377906542);
    
    insert into borrow values(1003,20180214,'2020-02-14','2020-03-15');
    insert into borrow values(1001,20180517,'2020-01-10',null);
    insert into borrow values(1002,20180514,'2020-02-11','2020/04/6');
    insert into borrow values(1004,20180319,'2019-12-23',null);
    insert into borrow values(1006,20180211,'2019-11-16','2019-12-23');
    insert into borrow values(1005,20180428,'2020-03-24',null);
    

    查询练习

    1. 单表查询
    -- 查询book表中的所有内容
    select * from book;
    

    在这里插入图片描述
    2. 带条件查询

    --  where后面接条件
    select * from book where bclass='信息技术';
    
    1. 分组查询
    -- group by 后面接分组依据 
    select count(*) from book group by bclass;
    
    1. 排序查询
    -- order by 后面接排序依据,默认升序(增加asc),降序关键字为desc,接在rno后面。
    select rno,count(bno) 
    	from borrow 
    group by rno 
    	order by rno;
    

    寄语

    本期就到这里结束了,更多SQL操作将在今后陆续更新!最后,JIAN 祝大家学习进步,生活愉快!

    完整源码

    use book_reader_db;
    
    -- 创建三表
    create table book(
        bno int primary key,
        bclass varchar(20) not null,
        press varchar(20) not null,
        bname varchar(20) not null,
        price float not null,
        other varchar(50)
    );
    
    create table reader(
        rno int primary key,
        rname varchar(10) not null,
        sex enum('男','女') not null,
        depart varchar(20) not null,
        tel bigint
    );
    
    create table borrow(
        bno int not null,
        rno int not null,
        bor_date datetime,
        foreign key(bno) references book(bno),
        foreign key(rno) references reader(rno)
    );
    
    -- 增加字段
    ALTER TABLE book
    ADD bnum int NOT NULL AFTER bname;
    
    ALTER TABLE book
    ADD buy_date date NOT NULL AFTER price;
    
    ALTER TABLE borrow
    ADD reb_date datetime AFTER bor_date;
    
    ALTER TABLE book
    ADD author varchar(20) NOT NULL AFTER price;
    
    -- 插入数据
    insert into book values(1001,'电子技术','工业出版社','无线电技术',20,58,'李明','2017-03-14','书本正常');
    insert into book values(1002,'电脑维修','机械出版社','跟我修电脑',15,49,'张加军','2017-03-14','有2本出现缺页');
    insert into book values(1003,'信息技术','清华大学出版社','数据库原理',30,65,'刘智','2016-05-23','书本正常');
    insert into book values(1004,'信息技术','北京大学出版社','计算机组成原理',25,56,'王小丽','2016-05-23','暂无');
    insert into book values(1005,'电子技术','浙江大学出版社','射频识别',40,62,'唐飞宏','2018-11-12','暂无');
    insert into book values(1006,'电脑维修','西部院校出版社','电脑组装那些事',15,42,'李笑容','2018-11-12','暂无');
    
    insert into reader values(20180517,'鲁大势','男','软件学院',13879064214);
    insert into reader values(20180214,'尚香','女','艺术学院',16779026573);
    insert into reader values(20180319,'章达','男','体育学院',17779014725);
    insert into reader values(20180211,'布丘仁','男','机电学院',13879041563);
    insert into reader values(20180428,'张小艾','女','信息学院',16779097214);
    insert into reader values(20180514,'章小鱼','女','经管学院',1377906542);
    
    insert into borrow values(1003,20180214,'2020-02-14','2020-03-15');
    insert into borrow values(1001,20180517,'2020-01-10',null);
    insert into borrow values(1002,20180514,'2020-02-11','2020/04/6');
    insert into borrow values(1004,20180319,'2019-12-23',null);
    insert into borrow values(1006,20180211,'2019-11-16','2019-12-23');
    insert into borrow values(1005,20180428,'2020-03-24',null);
    
    -- 查询练习
     select * from book;
    
    SELECT * 
    	FROM book
    WHERE bclass='信息技术';
    
    SELECT * 
    	FROM book
    GROUP BY bclass;
    
    SELECT * 
    	FROM reader;
    
    SELECT *
    	FROM borrow;
        
    SELECT rno,count(bno)
    	FROM borrow
    GROUP BY rno
    	ORDER BY rno;
        
    SELECT bno,count(rno)
    	FROM borrow
    GROUP BY bno
    	ORDER by bno;
    
    展开全文
  • fromsqlalchemyimportColumn,String,create_enginefromsqlalchemy.ormimportsessionmakerfromsqlalchemy.ext.declarativeimportdeclarative_base#创建对象的基类:Base=declarative_base()#定义User对象:classUs...
  • 参考书籍《数据库系统概论》(第五版)主编:王珊 ...【这我们不再详细介绍,在前面我们已经介绍过创建数据库、表。插入数据的两种方法。】 →学生表:Student(Sno, Sname, Ssex, Sage, Sdept); →课程表:...
  • 实验目标: 1.学习和掌握用户定义数据类型的概念、创建及使用方法。...1.创建一个标量函数Score_FUN,函数有两个参数分别为学生姓名、课程名,返回该生的对应成绩。利用使用的函数查询学生钱尔的编译...
  • 背景拉链表是一种数据模型,主要是针对数据仓库设计中表存储数据的方式而定义的;顾名思义,所谓拉链表,就是记录历史。记录一个事务从开始一直到当前状态的所有变化的信息。拉链表可以避免按每一天存储所有记录造成...
  • 1、定义基本表、删除和更改 (1)定义基本表 create table <表名>(<列名><数据类型>[列级完整性约束条件] ...数据类型>...如:创建一个“学生”表student create table stude...
  • 数据库开发技术第4racle数据定义语言DDL 本章要点创建和管理Oracle表约束Oracle 数据库表的各种类型4.1 创建和管理表 描述主要的数据库对象 表和列名的命名规则 创建表 描述可用于定义列的数据类型 修改表定义 删除...
  • Hive数据定义

    2019-09-19 09:27:57
    文章目录Hive数据定义Hive中的数据库创建一个数据库:查看数据库目录:使用数据库:删除数据库:修改数据库Hive中的表创建表查询表信息管理表(内部表)外部表复制表结构时有无 `EXTERNAL` 关键字与内部表,外部表的...
  • 数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。 可以独立完成数据库生命周期中的全部活动: - 定义和修改、删除关系模式,定义和删除视图,插入数据,建立数据 - 对数
  • 1.先创建一个数据库工程应用。 2.定义一个MyOpenHelper类继承SQLiteOpenHelper,然后因为父类没有无参构造所以需要一个父类发构造方法。 public MyOpenHelper(Context context) { /** * name 数据库的名字  * ...
  • 数据定义初体验

    2020-03-08 18:18:49
    数据定义 1.新建数据库用户 在定义模式之前,我们可以建立一个新的用户,步骤如下: 建立一个新的用户名,然后设置一下登录名,一个新的用户就建立好了。 ☛也可以使用SQL语句创建,后面会学到。 2.模式定义与删除 ...
  • oracle——数据定义

    2017-09-26 11:56:02
    对于一个空白的表空间,首先我们当然是要先建表。 一般SQL语言有以下四大功能: **1.数据定义 2.数据查询 3.数据操作 4.数据控制** 在oracle中,数据定义是指create,drop,alter。这三个关键字操作的对象有表,...
  • 使用Silverlight + DomainService进行开发时我们可以在Silverlight项目中创建一个BLL层用于Silverlight调用如下图所示要完成数据查询功能在Sliverlight项目中做了这么几项工作1.定义查询处理委托 public delegate ...
  • 第三章 MySQL高级查询().SQL语言的四分类1.DML(Data Manipulation Language)...2.DDL(Data Definition Language)(数据定义语言):创建或删除数据库对象操作,有CREATE,DROP,ALTER三语法组成。3.DQL(STructur...
  • DDL数据定义

    2020-09-01 15:49:27
    创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db 避免要创建的数据库已经存在错误,增加 if not exists 判断。(标准写法) 创建一个数据库,指定数据库在 HDFS 上存放的位置 ...
  • 不可变数据就是变量一旦初始化就不能修改Python的六个标准数据类型中不可变数据(3 个):Number(数字)、String(字符串)、Tuple...等号(=)左边是一个变量名,等号(=)右边是存储在变量中的值。变量名 = 变...
  • 索引 ...索引是关系数据库中对某列或多列的值进行预排序的数据结构。通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,这样就大大加快了查询速度。 索引就是根...
  • 一个库,用于以编程方式创建与正式的《激战2》 API公开的数据交互的程序。 该库包含有关API的结构和数据类型的信息。 此信息可用于生成自定义API客户端或其他需要API定义的程序。 该库需要Java 8或更高版本。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,100
精华内容 1,640
关键字:

创建一个数据定义查询