自考实践课——数据库

简介: 自考实践课——数据库

数据库,培养计划中学习过,自考中学习过,软考中学习过,项目中用过。这次的实践课,上手一操作,图形化操作比较熟练,sql语句来操作还是有些不熟练哒,不过没关系,知识是需要反复的,技能也是需要反复操练的。这次实践课是一次操练的机会。三道数据库的题,新建库、表和索引;插入数据;修改表结构;查询特定数据。

       知识网是通过找联系把知识联系起来的。我把今天的理解与之前的两篇文章联系一下:

SQL DML-数据查询

SQl DDL-数据库的创建

       新建库、表和索引,修改表结构属于DDL,插入数据、查询特定数据,属于DML。

【旧知识】

1. --创建名称为“某某考生实践考试”的数据库
2. create database  某某考生实践考试


1. --创建表
2. use  某某考生实践考试
3. create table 考生基本信息
4. (
5. 准考证号 char(12),
6. 姓名 char(8) not null,
7. 年龄 smallint,
8. 性别 char(2),
9. 地区 char(10),
10. 工作单位 char(20),
11. 联系电话 char(12),
12. 电子邮件地址 char(20),
13. primary key (准考证号)
14. )


select * from Employees where City='London'


       其中最最熟悉,最先接触的就是查询语句。


【新东西】

 

1. --修改“考生基本信息”的“工作学习单位”列名为“工作单位”,应用系统自带触发器sp_rename
2. exec sp_rename'考生基本信息.[工作学习单位]','工作单位'


1. --创建索引
2. create index 索引姓名 on 考生基本信息(姓名)

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

1. --插入个人信息真实数据
2. insert into 考生基本信息
3. values (123456789001,'李某某',24,'女','某某地区','某某单位',01234567890,'01234567890@163.com')
4. insert into 考核科目
5. values (02375,'运筹学基础'),(02628,'管理经济学'),(04735,'数据库系统原理')


       存在即更新,不存在即插入——这个是在网上查到东西,理了好久才理清楚的。当表的非自增长属性开的时候,才可以插入或删除记录。

1. --判断数据是否存在,存在即更新,不存在即插入
2. if exists(select CategoryID from dbo.Categories Where CategoryID='7'  )                        
3. ---- 存在记录才更新
4. Update dbo.Categories
5. set CategoryName ='software',
6.         Description ='Delphi,Office',
7.         picture=''
8. Where CategoryID=7
9. else
10. --设置表Categories的主键为非自增长
11. set identity_insert Categories on
12. 
13. --不存在记录才插入
14. Insert into dbo.Categories(CategoryID ,CategoryName ,Description,Picture)     
15. Select 7,'software' ,'Delphi,Office',null
16. go
17. 
18. Insert into dbo.Categories(CategoryID ,CategoryName ,Description,Picture)     
19. select 9,'Condiments','sauces,relishes',null union
20. select 13,'books','SQL,Programs',null union
21. select 15,'Dairy Products','Cheeses,Milks',null
22. 
23. --设置表Categories的主键为自增长
24. set identity_insert Categories off

       本来在网上搜索insert into ...select 与insert into ...values的区别。却发现它们是两回事。

insert into...values是插入语句,insert into...select是表复制语句。而表复制语句有两种,一种要求第二张表也就是目标表必须存在,一种要求第二张表不存在。

       详情请戳:SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

1. --查找与表Categories有外键关联表Products的外键
2. select name  
3. from  sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id
4. where
5. f.parent_object_id=object_id('Products')
6. 
7. --删除与表Categories关联的外键
8. alter table Products drop constraint FK_Products_Categories
9. 
10. --删除查出的记录
11. delete from Categories where ( CategoryName ='Produce' or CategoryName ='Confections')

       数据库的约束这一项,对于我来说比较陌生。主键/外键约束。

1. --设置表Categories的主键不是自增长
2. set identity_insert Categories on
3. 
4. --删除主键约束
5. alter table categories drop constraint PK_Categories
6. 
7. --修改表结构
8. alter table Categories alter column CategoryID char(20) not null
9. 
10. --添加主键约束
11. alter table categories add constraint PK_Categories primary key( CategoryID)


【总结】

        这次在完成实践考试的过程中,真的体会到了,自己看代码看半天,也找不到问题在哪儿,转移一下注意力,请同学过来看看,伸个懒腰之后,突然就悟了!通了!所以我们遇到问题卡着的时候不要放弃,只要是问题,总有解决的办法。越是摸不着头脑的错误,出错的原因越是简单。


相关文章
|
10月前
|
C#
【自考】之数据库系统原理
【自考】之数据库系统原理
51 0
|
存储 SQL 安全
自考数据库原理汇总
自考数据库原理汇总
81 0
|
2月前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
24天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
128 42
|
15天前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
75 25
|
2天前
|
监控 关系型数据库 MySQL
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。
|
9天前
|
SQL 关系型数据库 MySQL
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。
|
2月前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
391 0
|
3月前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
83 3
|
3月前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
156 3

热门文章

最新文章