3:关系数据库标准语言SQL

DDL操作(3)

创建数据库

sqlserver

CREATE DATABASE database_name

[ON

{ [PRIMARY] (NAME=logical_file_name,

FILENAME=’os_file_name’,

[,SIZE=size]

[,MAXSIZE={max_size|UNLIMITED}]

[,FILEGROWTH=grow_increment])

}[,…n]

LOG ON

{(NAME=logical_file_name,

FILENAME=’os_file_name’

[,SIZE=size]

[,MAXSIZE={max_size|UNLIMITED}]

[,FILEGROWTH=growth_increment])

}[,…n]]

[COLLATE collation_name]

mysql

CREATE DATABASE IF NOT EXISTS test_db_char

-> DEFAULT CHARACTER SET utf8

-> DEFAULT COLLATE utf8_chinese_ci;

实战:

使用T-SQL语句创建数据库:名为“student”的数据库,该数据库包含一个主数据文件、一个事务日志文件。主数据文件的逻辑名为“student_Data”,初始容量大小为3MB,最大容量为20MB,文件的增长量为20%;事务日志文件的逻辑名为“student_Log”,初始容量大小为1MB,最大容量为10MB,文件的增长量为10%。将数据文件与事务日志文件都保存在D:\data。

use  student   //使用数据库

创建表、修改表结构、删除表

1:创建数据库student

CREATE DATABASE student

ON PRIMARY

(NAME = 'student_Data',

FILENAME = 'D:\sqltest\student_Data.mdf',

SIZE = 3MB,

MAXSIZE = 20MB,

FILEGROWTH = 20%)

LOG ON

(NAME = 'student_log',

FILENAME = 'D:\sqltest\student_Data2.ldf',

SIZE = 1MB,

MAXSIZE = 10MB,

FILEGROWTH = 10%)

//drop database student

2:创建表:

班级表(班级号,班级名,备注)

create table class

( classNo char(9) primary key,

className varchar(20) not null,

comment varchar(50)

)

设置两个属性的集合为主键:

Create table ParentChild
(
ParentID int,
ChildID int,
primary key(ParentID,ChildID)   //方法一
)

ALTER TABLE  ParentChild ADD  PRIMARY KEY(ParentID , ChildID)  //方法一

学生表(学号,姓名,性别,生日,班级号)

use student

go

create table student

(stuNo char(12) primary key,

name varchar(8),

sex char(2),

birthday datetime,

classNo char(9) references classes(classNo)

)

3:查看表的信息:

execute sp_help  class    sp表示存储过程

4:表操作:添加数据

insert into classes(classNo,className,comment)

values('060101001','15soft-four','create beauty class');

insert  into classes(classNo,className,comment)

values('60101002','15网络五班','')

insert  into student(stuNo,name,sex,birthday,classNo)

values('1233222','张三','男','2015-01-22 00:22:45','060101001')

insert  into student(stuNo,name,sex,birthday,classNo)

values('1233223','李四','女','2015-01-22 00:22:45','060101001')

第二种插入方式

insert  into student(stuNo,name,sex,birthday,classNo)

values('1233224','李四','女','2015-01-22 00:22:45','060101001')

,('1233225','李四','女','2015-01-22 00:22:45','060101001')

5:查询数据:

select * from class

select * from student

6:修改表(往学生表中添加家庭住址属性)【如果字段不允许为空】

alter table student add homeAddre  varchar(30);

7:修改字段(如果发现家庭地址的字段太小,需要修改大点,咋办?)

alter table student  alter column homeAddre varchar(50);

8:删除班级表的专业编号字段?

alter table class drop column proCode;

删除学生表的homeAddre属性。

alter table  student drop column homeAddre;

9:删除数据库中的表

1---drop删除表本身,即表中数据和表结构(列、约束、视图、键)全部删除。

drop table class;

================================

扩展

================================

2---delete from 表名

--1>只是删除表中某些数据,表结构还在.。

--2>Delete 可以带where子句来删除一部分数据,例如 DELETE FROM Student WHERE sAge > 20

--3>自动编号不恢复到初始值。

3---truncate table 表名

--1>truncate语句不能跟where条件,无法根据条件来删除,只能全部删除数据。

--2>自动编号恢复到初始值。

--3>使用truncate删除表中所有数据要比delete效率高的多,因为truncate操作采用按最小方式来记录日志.

索引的建立与删除

引言:

SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至更高。

图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某作者的,不知道书名怎么办?图书管理员在写一个目录,某某作者的书分别在第几排,第几排,这就是一个非聚集索引

字典的例子:字典前面的目录,可以按照拼音和部首去查询,我们想查询一个字,只需要根据拼音或者部首去查询,就可以快速的定位到这个汉字了,这个就是索引的好处,拼音查询法就是聚集索引,部首查询就是一个非聚集索引.

1:知识点一:索引的概念

索引是针对一个表,以表列为基础建立的数据库对象,

2:知识点2:索引分类

索引的分类:

索引就类似于中文字典前面的目录,按照拼音或部首都可以很快的定位到所要查找的字。

1)唯一索引(UNIQUE):每一行的索引值都是唯一的(创建了唯一约束,系统将自动创建唯一索引)

2)主键索引:当创建表时指定的主键列,会自动创建主键索引,并且拥有唯一的特性。

3)聚集索引(CLUSTERED):聚集索引就相当于使用字典的拼音查找,因为聚集索引存储记录是物理上连续存在的,即拼音 a 过了后面肯定是 b 一样。

数据表的物理顺序和索引表的顺序相同,

4)非聚集索引(NONCLUSTERED):非聚集索引就相当于使用字典的部首查找,非聚集索引是逻辑上的连续,物理存储并不连续。数据表的物理顺序和索引表的顺序不相同;

PS:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

通俗理解:

老师一张学生顺序表,(打个比方)

第一种情况:学生座位按照学生表顺序坐—》学生表是聚集索引

第二种情况:学生座位不按照学生表顺序坐—》学生表是非聚集索引

3:创建索引

语法:create 【clustered|nonclustered】 index 索引名

on   table(列名...)

问:为班级表创建基于系部代码列的非聚集索引bj_xb_index

create index bj_xb_index  on class(dept_num)

create index bj_index  on class(class_name)

4:索引相关操作:

查询索引信息:exec  sp_helpindex  'class'  // exec和execute等效

更名:exec sp_rename old_name,new_name

删除索引:drop index  class.bj_xb_index

定义、更新、撤销视图

视图基本概念:

知识点一:什么是视图?

视图是从一个或多个表中导出的表,是一个虚拟表,物理上不存在

其内容由查询语句生成。

视图解决啥问题而提出?

1)可以定制用户数据,聚焦特定的数据。--角色限制

2)可以简化数据操作。--数据来至多张表

3)基表中的数据就有了一定的安全性

视图是动态的数据的集合,数据是随着基表的更新而更新。用户对视图,不可以随意的更改和删除,可以保证数据的安全性。

https://blog.csdn.net/qq_31156277/article/details/77954476?skintest=skin3-template-test

4)可以合并分离的数据,创建分区视图--多个分公司之间的某个字段的比较

2:知识点二:视图的语法格式

create view  view.name  as  select语句

更新视图的值:

实战:

实训题目:

完成一个超市商品消费系统,

【创建视图,显示顾客姓名、商品名称、购买数量】要求如下:

1:三张表:商品表、顾客表、销售表

create  table goods(

gid varchar(10) not null  primary  key,

gname varchar(10)  not null,  //商品名称

gprice real

)

create table costum(

cid varchar(10) not null primary key,

cname varchar(10) not null,  //顾客姓名

csex bit

)

create table sale(

sid varchar(10) not null primary key,

cid varchar(10) references costum(cid),

gid varchar(10) references goods(gid),

snum decimal   //购买数量

);

insert into goods(gid,gname,gprice)values(1,'饼干',3.5),

('2','矿泉水',1.5),(3,'苹果',3.5),('4','牛肉干',30);

(5,'羊肉',45),('6','山楂',1.5);

select * from goods;

insert into costum(cid,cname,csex)values(1,'张三',0),

(2,'李四',1),(3,'王五',0),

(4,'老刘',1),(5,'老西',0);

select *  from  costum;

insert into sale(sid,cid,gid,snum)values(1,2,2,2);

values(2,2,4,1),values(3,5,4,1),

values(4,2,4,1),(5,3,1,2),(6,1,3,2);

select * from sale;

【创建视图,显示顾客姓名、商品名称、购买数量】

------------------------

参考答案:

使用视图:

select  *  from v_sp

4:知识点三:视图的一些操作

重命名视图:

语法:sp_rename  old_name,new_name

查看视图的定义信息:

语法:sp_helptext   v_name

删除视图:

drop view  v_name

DML操作(2)

表的插入、删除、修改

修改案例:

UPDATE  Customers

SET  cust_email = NULL

WHERE  cust_id = '1000000005';

删除案例:

DELETE FROM Customers

WHERE cust_id = '1000000006';

简单查询

搭建环境:

搭建教学系统数据库环境.sql

知识点二:select的基本查询,输出若干列。【熟练掌握】

语法:select select_list  [into  new_table]

from  table_name

where 条件

1:如何输出全体学生?

select * from student

2:输出全体学生的学号和姓名?

select stuNo,name  from student

3:选择班级号为060101001的学生的姓名和班级号?

SELECT name,classNo from student

where classNo = '060101001'

问:如何查询” 计算机系的系部号和系主任?

select dept_number,dept_dean from department_1

where dept_name = '计算机系'

3:知识点三:别名的使用:【重点】

语法:

select  列名  别名     from...

select  列名  as 别名  from...

select  别名 = 列名    from...

问:选择学号为5的姓名和班级号?

select 姓名 = name ,classNo as 班级号 from student where

stuNo = '5'

连接查询

交叉连接、等值连接、自然连接—参考之前的讲解

复合查询、子查询

复合查询和子查询-参见资料

选择两道案例讲解

【数据库】关系数据库标准sql语言相关推荐

  1. mysql用的sql标准_标准SQL语言的用法_MySQL

    SQL语言是目前最通用的关系数据库语言.ANSI SQL是指由美国国家标准局(ANSI)的数据库委员会制定的标准SQL语言,多数关系数据库产品支持标准SQL语言,但是它们也往往有各自的SQL方言. 在 ...

  2. 数据库实验4 SQL语言-SELECT查询操作

    数据库实验4 SQL语言-SELECT查询操作 1.首先按照第三章的jxgl数据库的模板创建jxgl数据库并插入数据: 创建数据库jxgl: create database jxgl; 创建相应的表: ...

  3. MySQL系列3—标准SQL语言

    文章目录 1. SQL语言 2. 数据定义(DDL) 2.1 模式的定义与删除 2.2 基本表的定义.删除与修改 2.3 索引的建立与删除 3. 数据更新(DML) 3.1 插入数据 3.2 修改数据 ...

  4. 数据库-------关系数据库标准语言SQL

    结构化查询语言Structured Query Language :数据查询.数据定义.数据操纵. 数据控制 3. SQL语言是一种面向集合的语言,每个命令的操作对象是一个或多个关系,结果也是一个关系 ...

  5. 数据库实验二 SQL语言

    实验二 SQL语言 实验目的 熟悉并掌握创建表,插入记录,查询记录,删除记录,修改记录. 创建索引,删除索引. 创建视图,使用视图,删除视图. 实验内容 现有一个单位内部的小型图书借阅系统,假设每本图 ...

  6. 【数据库系统设计】SQL语言实验

    SQL语言 一.实验目的和要求 二.实验环境(实验设备) 三.实验原理及内容 1.创建 SPJ 数据库及 S.P.J.SPJ 表 2.用SQL语句完成增删改操作以及指定查询 (1)向四个基表中插入数据 ...

  7. sql查询百分之20到百分之40的数据_数据库基础学习——SQL语言知识总结(6)

    1 视图(View) 1.1什么是视图 可以通过创建表的视图来表现数据的逻辑子集或数据的组合.视图是基于表或另一个视图的逻辑表,一个视图并不包含它自己的数据,它象一个窗口,通过该窗口可以查看或改变表中 ...

  8. mysql请输入一个有效类型的长度值_MySQL数据库基础(三)——SQL语言

    MySQL数据库基础(三)--SQL语言 发布时间:2020-05-19 16:40:05 来源:51CTO 阅读:10596 作者:天山老妖S MySQL数据库基础(三)--SQL语言 一.SQL语 ...

  9. 第三阶段:Web前端:02数据库(sql语言、JDBC数据库连接) | 03(1)SpringBoot

    二.数据库--> MySQl或MariaDB 0.1.Mysql-安装步骤 进入网址 http://doc.canglaoshi.org/-->常用下载:Windows必备-->Ma ...

最新文章

  1. CV05-ResNet笔记
  2. 简单易上手编译FFmpeg
  3. 环境搭建 - 奥比中光3D摄像头(Astra Mini)
  4. js网页如何获取手机屏幕宽度
  5. Python中shuffle() 函数的作用及用法
  6. Silverlight+WCF 新手实例 象棋 主界面-事件区-返回退出(三十三)
  7. 如何把winPE装到硬盘隐藏起来
  8. 什么牌子的平板电脑好_台式电脑哪个牌子好
  9. CMake学习使用(基于vscode)
  10. derby mysql 同步_[Derby]数据库操作说明
  11. 阿里新一代分布式任务调度平台Schedulerx2.0破土而出...
  12. 500+ 精选 Java 面试题大放送
  13. .net文档生成工具2.0 支持自定义文档生成器【转:http://www.cnblogs.com/lucc/archive/2008/09/05/1284762.html】...
  14. python各个版本区别_Python 的各个版本
  15. 实时渲染技术之一-------渲染管线
  16. Maya2018生成pyd文件
  17. Apollo 算法阅读之Public Road轨迹规划算法--路径规划(含源代码)
  18. 开源APM性能检测系统技术选型与架构实战
  19. 笔记本计算机的功率一般多少,笔记本电脑功率是多少 怎么看笔记本功率多大...
  20. 【强化学习】逆强化学习概念

热门文章

  1. redis哨兵模式搭建配置(一主三从三哨兵)
  2. Rust : calls in constant functions are limited to constant functions, tuple structs and tuple varian
  3. 招聘移动全栈工程师(iOS 方向)
  4. 如何入侵Cisco路由器
  5. linux 错误信息不输出
  6. Neos.Flow UnitTestBootstrap
  7. 关于将微博上视频保存在电脑本地的方法汇总
  8. 物联网实战之基于OneNET的智能农业系统
  9. 在VS中怎么用vb画矩形_怎样画颜色绚丽的插画?
  10. NRF52832 WDT