1、SQL(结构化查询语言)的组成:数据定义语言DDL、数据操纵语言DML、数据控制语言DCL、其他。

2、SQL语言的功能:

1)数据查询:SELECT

2)数据定义:CREATE   DROP  ALTER

3)数据操纵:INSERT  UPDATE  DELETE

4)数据控制:GRANT  REVOKE

3、SQL语言的操作对象

1)基本表:数据库中独立存在的表。

2)视图:从一个或几个基本表中导出的表,是虚表,只存放视图的定义,不存放对应的数据。

3)查询表:查询结果对应的表。

4)存储文件:数据库中存放关系的物理文件。

4、表的相关数据
1)字段:一个事物的某一特征
2)记录:字段的组合,表示的是一个具体的事物
3)表:记录的组合,表示的是同一类型事物的集合
4)表和字段、记录的关系:字段是事物的属性、记录是事物本身、表是事物的集合
5)列:字段的另一种称谓
6)属性:字段的另一种称谓
7)元组:记录的另一种称谓

5、数据库中建表方法

1)利用图形化界面建表

2)create table命令

create table dept
(
 dept_id int primary key,
 dept_name nvarchar(100) not null,
 dept_address nvarchar(100)
)
最后一行的逗号可以有也可以没有,在ORACLE里不能有,所以建议不写逗号,便于移植。
create table emp
(  --不能写成{
 emp_id int constraint pk_emp_id_hahaha primary key,
 emp_name nvarchar(20) not null,
 emp_sex nchar(1) ,
 dept_id int constraint fk_dept_id_heihei foreign key references  dept(dept_id),
)

6、修改表

1)增加列(新增一列的值为空值)

alter table dept add dept_new int default 0

2)增加约束

alter table dept add constraint dept_name unique

3)删除约束

alter table dept drop constraint dept_name unique

4)修改列的数据类型

alter table dept alter column dept_name char(10)

7、删除表

delete table emp

8、约束:对一个表中的属性操作的限制叫做约束。
1)主键约束:不允许重复元素,避免数据的冗余。
2)外键约束:通过外键约束从语法上保证了本事务所关联的其他事物一定是存在的。
                        事物与事物之间的关系是通过外键来体现的。
3)create约束:保证事物属性的取值在合法的范围之内。
                           create table student
                                   (stu_id int primary key,
                                    stu_sal int check (stu_sal>1000 and stu_sal<=8000),
                                    stu_sex nchar(1) default('男')   ---()可以省,在数据库中字符串是必须用''括起来的
                                   )   
4)default约束:保证事物的属性一定会有一个值
5)唯一约束:保证了事物属性的取值不允许重复,但允许其中有一列且只能有一列为空。
(1)SqlServer只允许一个unique列为空,Oracle允许多个unique列为空
(2)create table student2
                 (stu_id int primary key,
                  stu_sal int check (stu_sal>1000 and stu_sal<=8000),
                  stu_sex nchar(1) default('男'),   ---()可以省,在数据库中字符串是必须用''括起来的
                  stu_name nvarchar(200) unique
                 ) 
           insert into student2 values(1,6000,‘男’,‘张三’); ---ok
           insert into student2 values(2,6000,‘男’,‘张三’);---error违反了唯一约束
           insert into student2 values(2,6000,‘男’,‘李四’);---ok   
           insert into student2 values(null,6000,‘男’,‘王五’);---error主键不能为空,出错的信息是“不能将值null插入列‘stu_id’”
           insert into student2 values(3,6000,‘男’,null);---ok 说明唯一键可以为空
           stu_name nvarchar(200) unique not null---error两者可以组合使用

6)not null约束
(1)要求用户必须为该属性赋一个值,否则语法出错。
(2)如果一个字段不写null也不写not null,则默认是null,即默认允许为空,用户可以不给该字段赋值。
(3)如果用户没有为该字段赋值,则该字段的值默认是null。
(4)要注意null和default的区别
          相同点:都允许用户不赋值。
          不同点:null修饰的字段如果用户不赋值则默认是null。
                        default修饰的字段如果用户不赋值则默认是default规定的那个值。
9、表和约束的区别
1)数据库是通过表来解决事物的存储问题的
2)数据库是通过约束来解决事物取值的有效性和合法性的问题
3)建表的过程就是指定事物属性及其事物属性各种约束的过程。
10、关系:表和表之间的联系。
1)实现方式:通过设置不同形式的外键来体现报和表的不同关系。
2)分类(假设是A表和B表):

(1)一对一:既可以把表A的主键充当表B的外键,也可以把表B的主键充当表A的外键。
(2)一对多:把A表的主键充当B表的外键,或者讲:把A表的主键添加到B表来充当B表的外键。在多的一方添加外键。
(3)多对多:多对多必须的通过单独的一张表来表示

--班级表
create table banji
(
 banji_id int primary key,
 banji_num int not null,
 banji_name nvarchar(100)
)
--教师
create table jiaoshi
(
 jiaoshi_id int primary key,
 jiaoshi_name nvarchar(200)
)
--第三张表 用来模拟班级和教师的关系
create table banji_jiaoshi_mapping
(
 banji_id int constraint fk_banji_id foreign key references banji(banji_id),
 jiaoshi_id int foreign key references jiaoshi(jiaoshi_id),
 kecheng nvarchar(20),
 constraint pk_banji_id_jiaoshi_id primary key (banji_id, jiaoshi_id, kecheng)
)

11、主键:能够唯一标识一个事务的一个字段或者多个字段的组合,被称为主键。
1)含有主键的表称为主键表。
2)主键通常是证书,不建议使用字符串做主键(如果主键是用于集群式服务,可以考虑用字符串当主键)。
3)主键的值通常都不允许修改,除非本记录被删除。
4)主键不要定义成id,而要定义成表名ID或者表名_id。
5)要用代理主键,不能用业务主键
      任何一张表,强烈建议不要使用有业务含义的字段充当主键。
      通常都是在表中单独添加一个整形的编号充当主键字段。
12、外键:如果一个表中的若干个字段是来自另外若干个表的主键或唯一键,则这若干个字段就是外键。
1)外键通常是来自另一个表的主键而不是唯一键,因为唯一键可能为空。
2)外键不一定是来自另外的表,也可能来自本表的主键。
13、先删主键表还是外键表
        先删外键表,如果先删主键表会报错,因为这会导致外键表中的数据引用失败。

14、视图:视图从代码上看是一个select语句,从逻辑上看被当做一个虚拟表看待。
1)为什么需要视图
            简化查询:避免了代码的冗余、避免了书写大量重复的sql语句。
2)如何创建视图
             create view 视图的名字 as
             ---select的前面不能添加begin
             select语句
             ---select的后面不能添加end
3)创建视图的select语句必须要为所有的计算列指定别名
              ---错误
              create view v$_a
                    as
                        select avg(sal) from emp;
               ---正确
               create view v$_a
                     as
                         select avg(sal) as "avg_sal" from emp;
4)视图不是物理表,是虚拟表,不建议通过视图更新视图所依附的原始表的数据或结构
(1)视图的优点:简化查询、增加数据的保密性。
(2)视图的缺点:增加了数据库维护成本;视图只是简化了查询,但是不能加快查询的速度。

15、索引

1)创建索引

create index studentidx on student(stu_id,stu_name)

2)删除索引

drop index studentidx

数据库SQL---数据库、基本表、视图、索引的定义、修改、删除的更多相关文章

  1. 数据库SQL的多表查询

    数据库 SQL 的多表查询:eg: table1: employees, table2: departments,table3: salary_grades; 一:内连接: 1):等值连接: 把表em ...

  2. MySQL数据库性能优化:表、索引、SQL等

    一.MySQL 数据库性能优化之SQL优化 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础 优化目标 减少 IO 次数IO永远是数据库最容易瓶颈的地 ...

  3. [数据库] SQL查询语句表行列转换及一行数据转换成两列

    原文来自:http://blog.csdn.net/Eastmount/article/details/50559008 本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两 ...

  4. MySQL数据库实验:任务二 表数据的插入、修改及删除

    目录 任务二 表数据的插入.修改及删除 一.利用界面工具插入数据 二.数据更新 (一)利用MySQL命令行窗口更新数据 (二)利用Navicat for MySQL客户端工具更新数据 三.数据库的备份 ...

  5. 数据库SQL语言学习--上机练习3(插入 更新 删除)

    上机练习3 . 将一个新学生记录(学号::姓名:陈冬:性别:男:所在系:信息系:年龄:20岁)插入到Student表中: ALTER TABLE Student ,); UPDATE Student ...

  6. IOS 表视图(UITableVIew)的使用方法(5)表视图的编辑功能(删除)

    默认的,如果表视图支持编辑,那用户可以通过两种方式来删除某些行,其一为单击左侧的红色按钮后行右侧显示“Delete”按钮,其二为在单元行上的手指向左滑动,“Delete”按钮也会出现供用户单击.无论哪 ...

  7. 数据库——SQL数据单表查询

    数据查询   语句格式 SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表或视图名>[,<表或视图名&g ...

  8. [SQL] 如何在SQL Server2005数据库中检查一个表是否存在,如存在就删除表记录,如不存在就建表.

    . 检索 dbo.sysobjects表, select count(*) from dbo.sysobjects where xtype='U' and Name = '你的表名' . 根据返回的结 ...

  9. ORACLE 查看当前用户信息(用户,表视图,索引,表空间,同义词,存储过程,约束条件)

    1.用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select ...

  10. EXCEL批量导入到Sqlserver数据库并进行两表间数据的批量修改

    Excel 大量数据导入到sqlserver生成临时表并将临时表某字段的数据批量更新的原表中的某个字段 1:首先要对EXCEL进行处理 列名改成英文,不要有多余的列和行(通过ctrl+shift 左或 ...

随机推荐

  1. JQuery主要内容

    一.什么是JQuery jquery全称javaScript Query,是js的一个框架,本质上仍然是js 二.jQuery的特点 支持各种主流浏览器 使用特别简单 拥有丰富的插件和边界的插件扩展机 ...

  2. Codeforces 631 (Div. 2) C. Dreamoon Likes Coloring 思维or构造

    https://codeforces.com/contest/1330/problem/C 给n个格子染色,有m种颜色,要求最后的所以格子被染色,并且有m种颜色. 染色要求:每种颜色有一个值li,选择 ...

  3. 基于 HTML5 WebGL 的楼宇智能化集成系统(二)

    前言       一套完整的可视化操作交互上,必不可少 2D/3D 的融合,在上期我们介绍了有关 3D 场景的环视漫游.巡视漫游以及动画效果,还包括了冷站场景.热站场景以及智慧末端的实现原理,本期主要 ...

  4. Java 添加、读取和删除 Excel 批注

    批注是一种富文本注释,常用于为指定的Excel单元格添加提示或附加信息. Free Spire.XLS for Java 为开发人员免费提供了在Java应用程序中对Excel文件添加和操作批注的功能. ...

  5. Vim查找与替换命令大全,功能完爆IDE!

    Vi/Vim 可以说是文本编辑中的一代传奇人物,直至现在,它仍然在高级程序员的武器库中占有一席之地.每个 Linux 发行版默认都包含Vim ,而且即使你不是 Linux 系统用户,你也可以安装 Vi ...

  6. flex布局取消子元素(img、div等)缩放:

    取消子元素(img.div等)缩放: 父元素: display: flex ; 子元素: flex-shrink: 0;

  7. js中的位置属性

    原生js中位置信息 clientLeft,clientTop:表示内容区域的左上角相对于整个元素左上角的位置(包括边框),实测,clientLeft=左侧边框的宽度,clientTop=顶部边框的宽度 ...

  8. 微信小程序wx:for隐藏遍历的最后一个元素

    微信小程序开发时有时会需要从wx:for遍历的元素中选取最后一个来进行相关操作,以下方法以隐藏最后一个元素为例 index==list.length-1 通过获取列表的总长度减一来得到最后一个元素是最 ...

  9. flask-migrate的基本使用

    Flask-migrate 在实际开发环境中,经常会发生数据库修改的行为.一般我们修改数据库不会手动的去修改,而是去修改orm对应的模型, 然后再把模型映射到数据库中.这时候如果有一个工具能专门做这种 ...

  10. Springboot2(二)通过微信熟悉熟悉Spring-boot yml配置文件

    前言:Spring-boot的yml配置文件,这里就不在借助人.狗介绍了,试试套下微信! 创建yml文件 值得注意的是下图中有三种命名方法,前两种是对的,且第二种必须是横线而不是下划线! yml文件的 ...