【数据库】关系数据库标准sql语言
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语言相关推荐
- mysql用的sql标准_标准SQL语言的用法_MySQL
SQL语言是目前最通用的关系数据库语言.ANSI SQL是指由美国国家标准局(ANSI)的数据库委员会制定的标准SQL语言,多数关系数据库产品支持标准SQL语言,但是它们也往往有各自的SQL方言. 在 ...
- 数据库实验4 SQL语言-SELECT查询操作
数据库实验4 SQL语言-SELECT查询操作 1.首先按照第三章的jxgl数据库的模板创建jxgl数据库并插入数据: 创建数据库jxgl: create database jxgl; 创建相应的表: ...
- MySQL系列3—标准SQL语言
文章目录 1. SQL语言 2. 数据定义(DDL) 2.1 模式的定义与删除 2.2 基本表的定义.删除与修改 2.3 索引的建立与删除 3. 数据更新(DML) 3.1 插入数据 3.2 修改数据 ...
- 数据库-------关系数据库标准语言SQL
结构化查询语言Structured Query Language :数据查询.数据定义.数据操纵. 数据控制 3. SQL语言是一种面向集合的语言,每个命令的操作对象是一个或多个关系,结果也是一个关系 ...
- 数据库实验二 SQL语言
实验二 SQL语言 实验目的 熟悉并掌握创建表,插入记录,查询记录,删除记录,修改记录. 创建索引,删除索引. 创建视图,使用视图,删除视图. 实验内容 现有一个单位内部的小型图书借阅系统,假设每本图 ...
- 【数据库系统设计】SQL语言实验
SQL语言 一.实验目的和要求 二.实验环境(实验设备) 三.实验原理及内容 1.创建 SPJ 数据库及 S.P.J.SPJ 表 2.用SQL语句完成增删改操作以及指定查询 (1)向四个基表中插入数据 ...
- sql查询百分之20到百分之40的数据_数据库基础学习——SQL语言知识总结(6)
1 视图(View) 1.1什么是视图 可以通过创建表的视图来表现数据的逻辑子集或数据的组合.视图是基于表或另一个视图的逻辑表,一个视图并不包含它自己的数据,它象一个窗口,通过该窗口可以查看或改变表中 ...
- mysql请输入一个有效类型的长度值_MySQL数据库基础(三)——SQL语言
MySQL数据库基础(三)--SQL语言 发布时间:2020-05-19 16:40:05 来源:51CTO 阅读:10596 作者:天山老妖S MySQL数据库基础(三)--SQL语言 一.SQL语 ...
- 第三阶段:Web前端:02数据库(sql语言、JDBC数据库连接) | 03(1)SpringBoot
二.数据库--> MySQl或MariaDB 0.1.Mysql-安装步骤 进入网址 http://doc.canglaoshi.org/-->常用下载:Windows必备-->Ma ...
最新文章
- CV05-ResNet笔记
- 简单易上手编译FFmpeg
- 环境搭建 - 奥比中光3D摄像头(Astra Mini)
- js网页如何获取手机屏幕宽度
- Python中shuffle() 函数的作用及用法
- Silverlight+WCF 新手实例 象棋 主界面-事件区-返回退出(三十三)
- 如何把winPE装到硬盘隐藏起来
- 什么牌子的平板电脑好_台式电脑哪个牌子好
- CMake学习使用(基于vscode)
- derby mysql 同步_[Derby]数据库操作说明
- 阿里新一代分布式任务调度平台Schedulerx2.0破土而出...
- 500+ 精选 Java 面试题大放送
- .net文档生成工具2.0 支持自定义文档生成器【转:http://www.cnblogs.com/lucc/archive/2008/09/05/1284762.html】...
- python各个版本区别_Python 的各个版本
- 实时渲染技术之一-------渲染管线
- Maya2018生成pyd文件
- Apollo 算法阅读之Public Road轨迹规划算法--路径规划(含源代码)
- 开源APM性能检测系统技术选型与架构实战
- 笔记本计算机的功率一般多少,笔记本电脑功率是多少 怎么看笔记本功率多大...
- 【强化学习】逆强化学习概念