第10章 代码 实验10-2 代码Mary的创建授权.sql
sql数据库实验报告
sql数据库实验报告目录1. 实验概述 (2)1.1 实验目的 (2)1.2 实验背景 (3)1.3 实验内容 (4)1.4 实验环境 (5)2. 数据库设计 (5)2.1 数据库概念 (6)2.2 表结构设计 (8)2.2.1 表1名称及字段定义 (9)2.2.2 表2名称及字段定义 (10)2.3 关系约束 (11)3. SQL语句操作 (12)3.1 数据插入 (13)3.2 数据查询 (14)3.2.1 根据条件查询 (15)3.2.2 聚合函数查询 (16)3.2.3 连接查询 (17)3.3 数据更新 (18)3.4 数据删除 (20)4. 实验结果展示 (21)4.1 SQL语句执行结果 (22)4.2 数据分析及解释 (22)4.2.1 查询结果的意义 (24)4.2.2 数据之间的关系性分析 (24)5. 实验总结与展望 (25)5.1 实验总结 (26)5.2 总结得到的经验与教训 (27)5.3 进一步研究建议 (29)1. 实验概述本实验旨在通过实践操作,实验内容涵盖了常见数据库操作,包括表创建、数据插入、查询、修改和删除。
通过完成实验,我们将学习如何使用SQL语句来管理和处理数据库数据,掌握常用的 SELECT、INSERT、UPDATE、DELETE 语句以及 JOIN 操作等,并熟悉数据库的操作流程和概念。
本实验旨在提升 SQL 数据库操作技能,并为后续更深入的数据库学习和应用打下基础。
您可以根据实际实验内容对以上段落进行修改和完善,具体修改点包括:明确实验的主题和目标,例如:实验主题可能是某个特定数据库管理系统(如MySQL、PostgreSQL等)的应用,目标可能是学习该数据库特定的功能特性。
1.1 实验目的本次实验旨在通过实际操作,验证和巩固SQL语言在关系型数据库管理中的应用能力,并加深对数据库设计、数据操作以及数据查询与分析的理解。
具体实验目的包括:学习SQL基础:掌握SQL语言的基本语法和常用命令,包括数据类型定义、表格创建、插入、更新和删除操作。
MySql语句大全:创建、授权、查询、修改等
MySql语句⼤全:创建、授权、查询、修改等原创作品。
转载请注明出处⼀、⽤户创建、权限、删除1、连接操作连接:mysql -h 主机地址 -u ⽤户名-p ⽤户密码(注:u与root可以不⽤加空格,其它也⼀样)断开:exit (回车)打开cmd,输⼊mysql -h 127.0.0.1 -u root -p 然后输⼊密码。
就可以连接到本地的MySql了。
2、创建⽤户:命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';说明:username - 你将创建的⽤户名,host - 指定该⽤户在哪个主机上可以登陆,如果是本地⽤户可⽤localhost, 如果想让该⽤户可以从任意远程主机登陆,可以使⽤通配符%. password - 该⽤户的登陆密码,密码可以为空,如果为空则该⽤户可以不需要密码登陆服务器.例⼦:CREATE USER 'lin'@'localhost' IDENTIFIED BY '123456';CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';CREATE USER 'pig'@'%' IDENTIFIED BY '123456';CREATE USER 'pig'@'%' IDENTIFIED BY '';CREATE USER 'pig'@'%';登陆时,先把当前exit,再输⼊以下mysql -h 127.0.0.1 -u linlin -p 密码mysql -h 127.0.0.1 -u pig -p 密码3、授权:命令:GRANT privileges ON databasename.tablename TO 'username'@'host'说明:privileges - ⽤户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该⽂最后⾯).如果要授予所的权限则使⽤ALL.;databasename -数据库名,tablename-表名,如果要授予该⽤户对所有数据库和表的相应操作权限则可⽤*表⽰, 如*.*.例⼦:GRANT SELECT, INSERT ON school.* TO 'lin' @'%';GRANT ALL ON *.* TO 'pig'@'%';注意:⽤以上命令授权的⽤户不能给其它⽤户授权,如果想让该⽤户可以授权,⽤以下命令:GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;4、设置与更改⽤户密码命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');如果是当前登陆⽤户⽤SET PASSWORD = PASSWORD("newpassword");例⼦: SET PASSWORD FOR 'lin'@'%' = PASSWORD("123456");5、撤销⽤户权限命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';说明: privilege, databasename, tablename - 同授权部分.例⼦: REVOKE SELECT ON *.* FROM 'pig'@'%';注意: 假如你在给⽤户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON er TO 'pig'@'%', 则在使⽤REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该⽤户对test数据库中user表的SELECT 操作.相反,如果授权使⽤的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON er FROM 'pig'@'%';命令也不能撤销该⽤户对test数据库中user表的Select 权限.具体信息可以⽤命令SHOW GRANTS FOR 'pig'@'%'; 查看.6、删除⽤户命令: DROP USER 'username'@'host';⼆、数据库与表显⽰、创建、删除1、数据库显⽰、创建、删除显⽰数据库:show databases;创建库:create database 库名;删除库:drop database 库名;使⽤库(选中库):use 库名;2、表显⽰、创建、删除显⽰数据表:show tables; (要先⽤use 数据库名选定数据库)显⽰表结构:describe 表名;或者desc 表名创建表:create table 表名 (字段设定列表);[sql]1. CREATE TABLE2. USER3. (4. name VARCHAR(30) NOT NULL,5. id INT DEFAULT '0' NOT NULL,6. stu_id INT,7. phone VARCHAR(20),8. address VARCHAR(30) NOT NULL,9. age INT(4) NOT NULL,10. PRIMARY KEY (name),11. CONSTRAINT stu_id UNIQUE (stu_id)12. )13. ENGINE=InnoDB DEFAULT CHARSET=utf8;删除表:drop table 表名;句法:DROP DATABASE [IF EXISTS] db_name功能:DROP DATABASE删除数据库中的所有表和数据库。
数据库SQL实验报告__数据库的基本操作
数据库SQL实验报告__数据库的基本操作一、实验目的1.理解数据库SQL语言的基本操作;2.学会使用数据库SQL语言进行数据的增删改查操作。
二、实验环境1. 操作系统:Windows 10;2.数据库管理系统:MySQL;3. 开发工具:Navicat for MySQL。
三、实验内容本次实验主要涉及数据库的基本操作,包括创建数据库、创建数据表、插入数据、更新数据、删除数据以及查询数据等。
1.创建数据库步骤一:打开Navicat for MySQL,并点击左上角的“新建连接”按钮;步骤二:填写连接信息,包括主机、端口、用户名和密码,并点击“连接”按钮;步骤三:点击“新建数据库”按钮,填写数据库的名称,并点击“确定”按钮。
2.创建数据表步骤一:在已连接的数据库上点击右键,选择“新建数据表”;步骤二:填写数据表的名称,并点击“确定”按钮;步骤三:填写数据表的字段信息,包括字段名、数据类型、长度、索引、主键等,并点击“确定”按钮。
3.插入数据4.更新数据5.删除数据6.查询数据步骤一:在数据表上点击右键,选择“查看数据”;步骤二:在弹出的查询窗口中填写查询条件,并点击“确定”按钮。
四、实验结果通过以上基本操作,成功创建了一个数据库,并在数据库中创建了一个数据表。
插入了一条数据,并成功地更新和删除了数据。
最后,使用查询操作查看了数据库中的数据。
五、实验总结通过本次实验,我深入了解了数据库SQL语言的基本操作,学会了使用数据库SQL语言进行数据的增删改查操作。
在实验过程中,我发现通过SQL语句进行数据库操作更加灵活、方便且高效。
还学会了使用Navicat for MySQL这样的数据库管理工具,提高了数据库的操作效率。
通过实验,我对数据库的基本原理和操作有了更深入的了解,为日后的数据库开发和管理打下了坚实的基础。
SQL Server实用教程(SQL Server 版)
读书笔记模板
01 思维导图
03 目录分析 05 精彩摘录
目录
02 内容摘要 04 读书笔记 06 作者介绍
思维导图
本书关键字分析思维导图
教学
实验
数据库
实验
数据库
创建
设计
版
应用
综合 习题
实习
实用教程
管理
过程
系统
器
数据
应用
内容摘要
本书是普通高等教育“十一五”国家级规划教材,分为实用教程、实验和综合应用实习三部分。本书以 MicrosoftSQLServer2008中文版为教学和开发平台,先介绍数据库的基本概念、数据库创建、表与表数据操作、 数据库的查询和视图、T-SQL语言、索引与数据完整性、存储过程和触发器、备份与恢复、系统安全管理、 SQLServer2008与XML等数据库基础知识,然后是实验和综合应用实习题目。本书免费提供教学课件和配套的客户 端/SQLServer2008应用系统数据库和源程序文件。
P0.1数据库 P0.2基本表 P0.3视图 P0.4完整性约束 P0.5存储过程 P0.6触发器 P0.7系统功能 P0.8 B/S方式界面的设计
P1.1创建图书管理站 P1.2设计母版页 P1.3设计“读者管理”页面 P1.4设计“借书”页面
P2.1创建图书管理系统 P2.2设计父窗体 P2.3设计读者管理窗体 P2.4设计借书窗体
目录分析
第2章数据库创建
第1章数据库的基 本概念
第3章表与表数据 操作
1
第4章数据库的 查询和视图
2
第5章 T-SQL 语言
3
第6章索引与数 据完整性
sql借阅管理系统数据库创建代码
sql借阅管理系统数据库创建代码创建一个简单的借阅管理系统数据库的SQL代码可能如下所示: sql.-创建用户表。
CREATE TABLE users (。
user_id INT PRIMARY KEY,。
username VARCHAR(50) NOT NULL,。
email VARCHAR(100) NOT NULL,。
join_date DATE.);-创建图书表。
CREATE TABLE books (。
book_id INT PRIMARY KEY,。
title VARCHAR(100) NOT NULL,。
author VARCHAR(100) NOT NULL,。
publish_date DATE,。
available BOOLEAN.);-创建借阅记录表。
CREATE TABLE borrow_records (。
record_id INT PRIMARY KEY,。
user_id INT,。
book_id INT,。
borrow_date DATE,。
return_date DATE,。
FOREIGN KEY (user_id) REFERENCES users(user_id),。
FOREIGN KEY (book_id) REFERENCES books(book_id)。
);上面的SQL代码创建了三个表,用户表(users)、图书表(books)和借阅记录表(borrow_records)。
用户表包含用户的ID、用户名、电子邮件和加入日期。
图书表包含图书的ID、标题、作者、出版日期和是否可借状态。
借阅记录表包含借阅记录的ID、用户ID、图书ID、借阅日期和归还日期,并且有外键关联到用户表和图书表。
当然,实际的借阅管理系统数据库设计可能更加复杂,可能还需要考虑图书分类、出版社信息、借阅历史记录等其他因素。
以上代码仅仅是一个简单的示例,具体的数据库设计取决于实际需求和业务流程。
sql数据库设计代码
sql数据库设计代码SQL数据库设计代码标题:学生信息管理系统数据库设计引言:学生信息管理系统是一种用于管理学生信息的软件系统。
通过数据库设计和编写SQL代码,可以实现学生信息的录入、查询、修改和删除等功能。
一、数据库设计1. 学生表(students)- 学生ID(id):主键,唯一标识一个学生- 姓名(name):学生的姓名- 年龄(age):学生的年龄- 性别(gender):学生的性别- 班级(class):学生所在的班级2. 课程表(courses)- 课程ID(id):主键,唯一标识一个课程- 课程名称(name):课程的名称- 学分(credit):课程的学分3. 成绩表(grades)- 学生ID(student_id):外键,关联学生表的学生ID- 课程ID(course_id):外键,关联课程表的课程ID - 成绩(score):学生在该课程中的成绩二、SQL代码示例1. 创建学生表:CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT,gender VARCHAR(10),class VARCHAR(50));2. 创建课程表:CREATE TABLE courses (id INT PRIMARY KEY,name VARCHAR(50),credit INT);3. 创建成绩表:CREATE TABLE grades (student_id INT,course_id INT,score INT,PRIMARY KEY (student_id, course_id),FOREIGN KEY (student_id) REFERENCES students(id),FOREIGN KEY (course_id) REFERENCES courses(id));4. 插入学生信息:INSERT INTO students (id, name, age, gender, class) VALUES (1, '张三', 18, '男', '一班');5. 插入课程信息:INSERT INTO courses (id, name, credit)VALUES (1, '数学', 4);6. 插入学生成绩:INSERT INTO grades (student_id, course_id, score)VALUES (1, 1, 90);三、总结通过以上的数据库设计和SQL代码示例,我们可以实现学生信息管理系统的基本功能。
数据库管理系统SQL实验报告-—SQL语句代码
数据库管理系统SQL实验报告-—SQL语句代码--创建数据库 TEST--create database TEST--使用数据库--use TEST--创建表学生表Student/*create table Student(S_no char(10) primary key,S_name char(8) not null,S_sex char(2),S_dept_no char(4));*/--创建表课程表Course/*create table Course(C_no char(6) primary key,C_name char(20) not null,C_credit int);*/--创建表选课表SC/*create table SC(S_no char(10),C_no char(6),SC_grade int,primary key(S_no,C_no));*/--创建表系表 DPT/*create table DPT(D_no char(4) primary key,D_name char(20) not null,D_T_no char(8) not null);*/--创建表教师表Teacher/*create table Teacher(T_no char(4) primary key,T_name char(8) not null,T_ranks char(12));*/--创建表授课表TC/*create table TC(T_no char(4),C_no char(6),TC_classroom char(6),primary key(T_no,C_no));*/--在Student中加入属性S_age(int)--alter table Student add age int;--修改表Student中的列名age为S_age--execute sp_rename 'Student.age','S_age','column' ; --在Course 中加入属性D_no(char(4))--alter table Course add D_no char(4);--在Teacher中加入属性T_sex(char(2))--alter table Teacher add T_sex char(2);--建立索引--在Student上建立关于属性S_no的唯一索引index_SS_no--create unique index index_SS_no on Student(S_no)--在Course 上建立关于属性C_no的唯一索引index_CC_no--create unique index index_CC_no on Course(C_no)--建立视图:在Student上为信管系学生的记录建立一个视图view_SS_dept/*create view view_SS_dept asselect Student.* from Student,DPT where DPT.D_name='信管' and DPT.D_no=Student.S_dept_no*/--插入数据--向DPT中插入一些数据:例如 0001,信管,0001--insert into DPT values ('0001','信管','0001');--insert into DPT values ('0002','计本','0002');--insert into DPT values ('0003','会计','0003');--insert into DPT values ('0004','国贸','0004');--insert into DPT values ('0005','金融','0005');--向Student中插入一些数据:例如2009970041,张晶晶,男,0001,22--insert into Student values ('2009970041','张晶晶','男','0001',22);--insert into Student values ('2009970042','张二二','女','0002',21);--insert into Student values ('2009970043','张三三','男','0003',23);--insert into Student values ('2009970044','张四四','女','0004',20);--insert into Student values ('2009970045','张五五','男','0005',24);--insert into Student values ('2009970046','张六六','女','0001',19);--向Course 中插入一些数据:例如090001,SQL数据库,2,0001--insert into Course values ('09001','SQL数据库',2,'0001');--insert into Course values ('09002','操作系统',1,'0002');--insert into Course values ('09003','会计基础',2,'0003');--insert into Course values ('09004','国际贸易',3,'0004');--insert into Course values ('09005','国际金融',2,'0005');--向Teacher中插入一些数据:例如 0001,张老师,教授,男--insert into Teacher values ('0001','张老师','教授','男');--insert into Teacher values ('0002','夏老师','教授','男');--insert into Teacher values ('0003','李老师','讲师','女');--insert into Teacher values ('0004','陈老师','副教授','女');--insert into Teacher values ('0005','刘老师','副教授','男');--向SC中插入一些数据:例如 2009970041,09001,100--insert into SC values ('2009970041','09001',100);--insert into SC values ('2009970042','09002',90);--insert into SC values ('2009970043','09003',80);--insert into SC values ('2009970044','09004',70);--insert into SC values ('2009970045','09005',60);--向TC中插入一些数据:例如 0001,090001,1#101--insert into TC values ('0001','09001','1#101');--insert into TC values ('0002','09002','1#102');--insert into TC values ('0003','09003','1#103');--insert into TC values ('0004','09004','1#104');--insert into TC values ('0005','09005','1#105');--单表查询--查询所有学生的信息--select * from Student--查询所有女生的姓名--select S_name as 女生姓名 from Student where S_sex='女'--查询成绩在80--90分之间的所有学生的选课记录,结果按照成绩的降序排列--select SC.* from SC where SC_grade>=80 and SC_grade<=90 order by SC_grade DESC--查询各个系的学生人数--select DPT.D_name,count(S_no) as number from SC,Course,DPT where SC.C_no=Course.C_no and Course.D_no=DPT.D_no group by DPT.D_name--连接查询--查询信管系年龄在21岁以下的女生的姓名及其年龄和所在系--select Student.S_name,Student.S_age,DPT.D_name from Student,DPT where Student.S_age<=21 and DPT.D_name='信管' and Student.S_dept_no=DPT.D_no--嵌套查询--查询选修课总学分在10分以下的学生姓名--select Student.S_name from Student where Student.S_no in (select SC.S_no from SC,Course where SC.C_no=Course.C_no group by SC.S_no having sum(Course.C_credit)<10 )--查询各门课程的最高成绩的学生姓名及其成绩--select Student.S_name,SC1.SC_grade from Student,SC SC1 where Student.S_no=SC1.S_no and SC1.SC_grade in (select max(SC2.SC_grade) from SC SC2 group by SC2.C_no )--查询选修了2009970041号学生所选修的全部课程的学生的学号--select S_no from Student where not exists (select * from SC SC1 where SC1.S_no='2009970041' and not exists (select * from SC SC2 where SC2.S_no=Student.S_no and SC2.C_no=SC1.C_no))--查询选修了张老师所开设的全部课程的学生的姓名--select S_name from Student where not exists (select * from TC where T_no in (select T_no from T eacher where T_name='张老师') and not exists (select * from SC where SC.S_no=Student.S_no and SC.C_no=TC.C_no));--删除索引--删除Student上的索引index_SS_no--drop index Student.index_SS_no--删除Course 上的索引index_CC_no --drop index Course.index_CC_no--删除视图:删除视图view_SS_dept --drop view view_SS_dept。
SQL Server实验指导绿皮书前七章代码代码
INSERT INTO C VALUES('C5','数据库','60')
INSERT INTO C VALUES('C6','编译原理','60')
INSERT INTO C VALUES('C7','操作系统','60')
where T.TNO=TC.TNO and O=O
go
/*实验6.2 修改视图*/
use jxsk
go
alter view View_CTABLE
DELETE FROM S WHERE SN='周武'
GO
/*实验3.4 复制数据库表*/
USE jxsk
GO
SELECT * INTO test1 FROM S
SELECT TN,SEX,AGE,PROF INTO test2 FROM T WHERE SEX='男'
GO
),
FILEGROUP testbase2_Group1
(
NAME=testbase2_group1_sub1,
FILENAME='e:\张小山数据库\testbase2_group1_sub1_dat.ndf',
SIZE=5MB,
MAXSIZE=50MB,
FILEGROWTH=5MB
GO
/*实验3.2 修改数据*/
USE jxsk
SQL数据库系统实验报告(含代码、截图)
数据库系统实验报告专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点2012 ~2013 学年第二学期实验一使用向导创建和删除数据库一.实验目的1.熟悉SQL Server 中SQL Server Management Studio的环境2.了解SQL Server 数据库的逻辑结构和物理结构3.掌握使用向导创建和删除数据库的方法二.实验要求1.熟练使用SSMS进行数据库的创建和删除操作。
2.完成实验报告。
三.实验内容设有一学籍管理系统,其数据库名为“EDUC”。
初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”(注意:此文件名必须已经建立的前提下才可以此操作)。
日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。
四.实验步骤1.使用SQL Server Management Studio(简称SSMS)创建数据库。
(1)启动SSMS在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。
如果身份验证选择的是“混合模式”,则要输入sa的密码。
(2)建立数据库在“对象资源管理器”窗口,建立上述数据库EDUC。
在数据库节点上右击选择新建。
同时建立一个同样属性的数据库EDUC1。
2. 使用向导删除上面建立的数据库。
用SSMS删除建立的数据库EDUC。
3、数据库的分离将刚建好的数据库分离出来,即点击新建的EDUC——任务——分离,将删除连接和更新打一个钩,然后点击确定。
实验报告五MYSQL权限与安全
计算机科学系实验报告实验要求:(在导入的教学管理STM数据库中完成):1、用户的创建①利用CREATE USER语句创建用户user1、user2、user3,密码均为’123456’。
CREATE USER 'user1'@'localhost'IDENTIFIED BY '123456','user2'@'localhost'IDENTIFIED BY '123456','user3'@'localhost'IDENTIFIED BY '123456';②利用INSERT INTO语句向USER表创建用户user4,密码均为’123456’。
INSERT INTO er(HOST,USER,PASSWORD,ssl_cipher,x509_issuer,x509_subject) VALUES ('localhost','user4',PASSWORD('123456'),'','','');FLUSH PRIVILEGES;③利用GRANT语句创建用户user5,密码均为’123456’,且为全局级用户。
GRANT ALL PRIVILEGES ON *.* TO 'user5'@'localhost' IDENTIFIED BY '123456';2、用户授权(利用GRANT语句)①授予user1用户为数据库级用户,对STM拥有所有权。
GRANT ALL PRIVILEGES ON stm.* TO 'user1'@'localhost'②授予user2用户为表级用户,对STM中的student表select,create,drop权限。
Active Directory域服务、域名服务和复制问题地故障排除
实验报告第10章Active Directory域服务、域名服务和复制问题的故障排除再以NYC-CL1\Local Admin身份登录,如图10.1-3:首先先将计算机参加到工作组中,如图10.1-4:重新启动之后,再将计算机参加到域中,如图10.1-5:显示如图10.1-6所示的界面。
参加域之后就可以用Chris的某某登录了,如图10.1-7:故障凭单#2:名叫Markus Breyer的帮助台人员得到一项任务,他需要将新员工添加到WoodgroveBank.域内的NYC BranchManagers OU中。
Markus是HelpDesk全剧组的成员。
HelpDesk组的所有成员应能够使用远程桌面从客户端工作站上管理用户某某。
当Markus尝试添加新员工时,他没有成功。
当以Markus身份登录,尝试连接NYC-DC1的时候,会出现如图10.1-8所示的错误。
右键单击“计算机〞,选择“属性〞,如图10.1-9,单击右边的改变设置。
在系统属性中,选择“只允许运行带网络级身份验证的远程桌面的计算机连接〔更安全〕〞,如图10.1-10:将HelpDesk参加到其中,如图10.1-11:当再次远程桌面连接时,会出现如图10.1-12的错误。
在NYC-DC1上,设置域控制器策略,允许HelpDesk组通过终端服务登录,如图10.1-13:当尝试再次登录时,如此可以登录,但当访问AD数据库时,如此是禁止的,如图10.1-14:再在允许本地登录中添加HelpDesk组,如图10.1-15:当添加后,如此可以访问AD数据库了,但无法新建账户,需要在组中添加HelpDesk,并授予其相应的创建的权限,如图10.1-16:现在就可以新建账户了,如图10.1-17:报告书名称实验10-2:DNS 和 AD DS 集成的故障排除某某王斌指导教师胡丽英学号1008013438 日期2011-11-15任务清单在本实验中,你将解决上报到服务器团队的故障凭单中所指出的问题,这些问题与DNS和AD DS的集成有关。
数据库SQL实验报告_数据库的基本操作
数据库SQL实验报告_数据库的基本操作一、实验目的本次实验旨在通过实际操作,深入理解和掌握数据库的基本操作,包括创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等,从而提高对数据库管理系统的应用能力和实践操作技能。
二、实验环境本次实验使用的数据库管理系统是 MySQL 80,操作系统为Windows 10。
三、实验内容及步骤(一)创建数据库1、打开 MySQL 命令行客户端,输入以下命令创建一个名为“my_database”的数据库:```sqlCREATE DATABASE my_database;```2、输入以下命令查看已创建的数据库:```sqlSHOW DATABASES;```(二)创建表1、使用以下命令切换到“my_database”数据库:```sqlUSE my_database;```2、创建一个名为“students”的表,包含“id”(整数类型,主键,自增)、“name”(字符串类型,长度为 50)、“age”(整数类型)和“grade”(整数类型)列:```sqlCREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,grade INT);```1、向“students”表中插入以下数据:```sqlINSERT INTO students (name, age, grade) VALUES ('张三', 20, 80),('李四', 21, 85),('王五', 19, 90);```(四)查询数据1、查询“students”表中的所有数据:```sqlSELECT FROM students;```2、查询年龄大于 20 岁的学生信息:```sqlSELECT FROM students WHERE age > 20;```1、将“张三”的年龄更新为 21 岁:```sqlUPDATE students SET age = 21 WHERE name ='张三';```(六)删除数据1、删除“grade”小于 80 的学生记录:```sqlDELETE FROM students WHERE grade < 80;```四、实验结果(一)创建数据库成功创建了名为“my_database”的数据库,并通过“SHOW DATABASES”命令验证了其存在。
sql操纵及查询实验
sql操纵及查询实验好的,我回答“sql操纵及查询实验”的问题。
1. 什么是SQL?SQL代表结构化查询语言。
它是一种用于管理关系数据库的语言。
它具有丰富的数据操作和查询功能,并被广泛应用于网站和企业系统中。
2. 什么是SQL语句?SQL语句是一种用于操作数据库的命令。
通过SQL语句,我们可以执行各种操作,例如插入、更新、删除、查询数据等。
SQL语句可以分为四大类:数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)和事务控制语言(TCL)。
3. 如何创建一张表?我们可以通过CREATE TABLE语句来创建一个新表。
CREATE TABLE语句需要指定表格名和表格字段,如下所示:CREATE TABLE my_table (id INT PRIMARY KEY,name VARCHAR(50),age INT);4. 如何插入数据到表中?我们可以通过INSERT INTO语句将数据插入到一个表格中。
INSERT INTO语句需要指定数据要插入的表格和插入的数据值,如下所示:INSERT INTO my_table (id, name, age)VALUES (1, 'Tom', 20);5. 如何查询数据?我们可以通过SELECT语句查询一个或多个表格中的数据。
SELECT语句可以使用一些关键字,如WHERE、ORDER BY和GROUP BY,以过滤、排序和分组查询结果。
例如:SELECT id, name, ageFROM my_tableWHERE age > 18ORDER BY age DESC;以上是我对“sql操纵及查询实验”问题的回答。
MySQL语法和用户授权
MySQL语法和⽤户授权管理数据库create database 等同于 create schema#导⼊数据库脚本MariaDB [db1]> source /root/mysql/hellodb_innodb.sql管理数据表数据类型:1.数字类型2.时间类型3.字符串类型timestamp 只要表中任何⼀个字段发⽣修改,⾃动存储记录时间精确到秒创建表:MariaDB [db1]> create table myuser select user,host,password from er;表结构⼀旦定义好,通常不建议进⾏修改CASCADE 表⽰级联删除⼀般指的是主外键的关系选择数据类型set 多选enum 单选复合主键primary key(name,city)快速删除(不可恢复)truncate table students;⽣产环境⼀般⽤update标志位来代替删除操作SQL基础语法查询语句写法不同会造成巨⼤的性能差别,⼀条很差的查询可能导致服务器宕机6记录不是null 7记录才是null null会在对应的位置显⽰NULL字符不能通过=null来查询, 只能是is null或者is not null来过滤MariaDB [db1]>select*from students;+----+------+-------+------+-------+| id | name | phone | sex | score |+----+------+-------+------+-------+|1| aa |111| f |80||2| bbb |2222| m |90||3| cccc |33333| f |80||4| ffff |44444| m |80||5| ff |555| f |90||6|666|| m |40||7|777|NULL| m |40|null处理机制MariaDB [db1]>select sex from students group by sex;#表⽰sex这个列有⼏个不同的值就会被分成⼏个组#分完组之后就可以对数据进⾏相关汇总了+------+| sex |+------+| f || m |+------+group by语法注意点:1.select后⾯只能加分组的列本⾝2.各种聚合函数分组后的过滤条件语法只能使⽤having多个分组MariaDB [db1]>select class,sex,avg(score) from students group by class,sex;+-------+------+------------+| class | sex |avg(score) |+-------+------+------------+|1| f |80.0000||1| m |85.0000||2| f |60.0000||2| m |40.0000|+-------+------+------------+group by语法1.内连接取两张表的交集也可以取多张表的交集select , from students s,teachers t where s.teacherid=t.tid;select , from students s inner join teachers t on s.teacherid=t.tid;2.交叉连接两张表的记录分别组合⼀遍select*from students cross join teachers;3.左外连接(谁左谁右⼗分重要)默认取左边表的全部记录,取右边表和左边表有交集的记录.可取左表和右表没有交集的记录添加⼀个过滤条件即可and left.id is null4.右外连接(谁左谁右⼗分重要)取右边表的全部记录,取左边表和右边表有交集的记录.取右表记录和左表没有交集的记录and right.id is null5.⾃连接把⼀张表当成两张表来使⽤select , from students as s1 inner join students as s2 on s1.id=s2.id6.union连接竖直排列组合显⽰两个条件:1.两个select查询的列的数量必须⼀致2.两个select查询的对应的列的数据类型必须⼀致select id,name from students union select id,name from teachers连接查询select*from students where stuid in(select stuid from scores where score > (select avg(score) from scores));⼦查询select查询语句执⾏流程1. 先执⾏from 指定对哪张表进⾏操作2. 执⾏where 过滤表中的⾏3 . 执⾏group by 分组4. 执⾏having 对分组后的结果过滤5. 执⾏order by 排序6. 执⾏select columns 挑选需要显⽰的字段7. 执⾏limit 限定需要显⽰的记录条数select查询出来的数据默认是按照磁盘存放次序来排序显⽰的select 语法有点类似于awk= 是精确匹配 where name='abc'select 可以给字段和表取别名like 模糊搜索查询% 任意个任意字符- 任意单个字符MariaDB [db1]>select'hello word'-> ;+------------+| hello word |+------------+| hello word |+------------+1 row in set (0.00 sec)MariaDB [db1]>select1+2;+-----+|1+2|+-----+|3|+-----+MariaDB [db1]>select'1+2',1+2from user1;+-----+-----+|1+2|1+2|+-----+-----+|1+2|3||1+2|3||1+2|3||1+2|3|MariaDB [db1]>desc user1;+----------+----------+------+-----+---------+-------+| Field | Type |Null|Key|Default| Extra |+----------+----------+------+-----+---------+-------+|user|char(80) | NO ||||| host |char(60) | NO ||||| password |char(41) | NO ||||+----------+----------+------+-----+---------+-------+MariaDB [db1]>select user as "姓名",host as "主机" from user1;+--------+-----------+|姓名|主机|+--------+-----------+| root | localhost || root | centos7 || root |127.0.0.1|| root | ::1|+--------+-----------+MariaDB [db1]>select class,sex,avg(score) from students group by class,sex;+-------+------+------------+| class | sex |avg(score) |+-------+------+------------+|1| f |80.0000||1| m |85.0000||2| f |60.0000||2| m |40.0000|+-------+------+------------+MariaDB [hellodb]>select ,sc.score,c.course from students s,scores sc,courses c where s.stuid=sc.stuid and sc.courseid=c.courseid limit 5;+-------------+-------+----------------+| name | score | course |+-------------+-------+----------------+| Shi Zhongyu |77| Kuihua Baodian || Shi Zhongyu |93| Weituo Zhang || Shi Potian |47| Kuihua Baodian || Shi Potian |97| Daiyu Zanghua || Xie Yanke |88| Kuihua Baodian |+-------------+-------+----------------+MariaDB [hellodb]>select ,sc.score,c.course from (select*from students limit 5) s,scores sc,courses c where s.stuid=sc.stuid and sc.courseid=c.courseid; +-------------+-------+----------------+| name | score | course |+-------------+-------+----------------+| Shi Zhongyu |77| Kuihua Baodian || Shi Zhongyu |93| Weituo Zhang || Shi Potian |47| Kuihua Baodian || Shi Potian |97| Daiyu Zanghua || Xie Yanke |88| Kuihua Baodian || Xie Yanke |75| Weituo Zhang || Ding Dian |71| Daiyu Zanghua || Ding Dian |89| Kuihua Baodian || Yu Yutong |39| Hamo Gong || Yu Yutong |63| Dagou Bangfa |+-------------+-------+----------------+MariaDB [hellodb]>select ,avg(score) from (select ,sc.score,c.course from (select*from students limit 8) s,scores sc,courses c where s.stuid=sc.stuid and sc.courseid=c.courseid ) as re group by name order by avg +-------------+------------+| name |avg(score) |+-------------+------------+| Shi Qing |96.0000|| Shi Zhongyu |85.0000|| Xi Ren |84.5000|| Xie Yanke |81.5000|| Ding Dian |80.0000|| Lin Daiyu |75.0000|| Shi Potian |72.0000|| Yu Yutong |51.0000|+-------------+------------+MariaDB [hellodb]>select c.course,re.stucount from courses as c,(select courseid,count(stuid) as stucount from scores group by courseid) as re where c.courseid=re.courseid;+----------------+----------+| course | stucount |+----------------+----------+| Hamo Gong |3|| Kuihua Baodian |4|| Jinshe Jianfa |1|| Taiji Quan |1|| Daiyu Zanghua |2|| Weituo Zhang |2|| Dagou Bangfa |2|+----------------+----------+MariaDB [hellodb]>select*from students where age > (select avg(age) from students);+-------+--------------+-----+--------+---------+-----------+| StuID | Name | Age | Gender | ClassID | TeacherID |+-------+--------------+-----+--------+---------+-----------+|3| Xie Yanke |53| M |2|16||4| Ding Dian |32| M |4|4||6| Shi Qing |46| M |5|NULL||13| Tian Boguang |33| M |2|NULL||25| Sun Dasheng |100| M |NULL|NULL|+-------+--------------+-----+--------+---------+-----------+MariaDB [hellodb]>select name from students where stuid in(select stuid from scores where courseid in(1,2,4,7));+-------------+| name |+-------------+| Shi Zhongyu || Shi Potian || Xie Yanke || Ding Dian || Yu Yutong || Shi Qing || Xi Ren || Lin Daiyu |+-------------+MariaDB [hellodb]>select ,s.age from students s,(select classid,avg(age) as age,count(stuid)from students group by classid having count(stuid)>=3) as re where s.classid = re.classid and s.age > re.age;+---------------+-----+| name | age |+---------------+-----+| Shi Potian |22|| Xie Yanke |53|| Ding Dian |32|| Yu Yutong |26|| Yuan Chengzhi |23|| Xu Zhu |21|| Lin Chong |25|| Hua Rong |23|| Huang Yueying |22|+---------------+-----+9 rows in set (0.00 sec)查询实例视图VIEW,虚表保存有实表的查询结果视图中的数据事实上存储于“基表”中因此,其修改操作也会针对基表实现; 其修改操作受基表限制函数系统函数和⾃定义函数保存在mysql.proc表中存储过程存储过程存储过程保存在mysql.proc表中触发器trigger_name:触发器的名称trigger_time:{ BEFORE | AFTER },表⽰在事件之前或之后触发trigger_event::{ INSERT |UPDATE | DELETE },触发的具体事件tbl_name:该触发器作⽤在表名触发器的执⾏不是由程序调⽤, 也不是由⼿⼯启动,⽽是由事件来触发,激活从⽽实现执⾏触发器实例,在向学⽣表INSERT数据时,学⽣数增加,DELETE学⽣时,学⽣数减少MySQL⽤户和授权管理⽤户管理创建⽤户:CREATE USERCREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'password'];默认权限:USAGE 只能连接不能进⾏任何操作⽤户重命名:RENAME USER RENAME USER old_user_name TO new_user_name删除⽤户: DROP USER 'USERNAME'@'HOST‘⽰例:删除默认的空⽤户 DROP USER ''@'localhost';修改密码:mysql>SET PASSWORD FOR 'user'@'host' = PASSWORD(‘password');mysql>UPDATE er SET password=PASSWORD('your_password') WHERE clause;此⽅法需要执⾏下⾯指令才能⽣效:mysql> FLUSH PRIVILEGES;#mysqladmin -u root –poldpass password ‘newpass‘忘记管理员密码的解决办法:启动mysqld进程时,为其使⽤如下选项: --skip-grant-tables --skip-networking 修改配置⽂件/etc/f中的mysqld使⽤UPDATE命令修改管理员密码关闭mysqld进程,移除上述两个选项,重启mysqld权限管理授权和创建⽤户可以都通过grant命令⼀步来实现,因为grant授权的⽤户如果不存在,mysql会⾃动创建对应的⽤户权限类别:1.数据库级别2.表级别3.字段级别4.管理类5.程序类授权语法:GRANT priv_type [(column_list)],... ON [object_type] priv_level TO 'user'@'host' [IDENTIFIED BY 'password']priv_type: ALL [PRIVILEGES]object_type:TABLE | FUNCTION | PROCEDUREpriv_level: *(所有库) | *.* | db_name.* | db_name.tbl_name | tbl_name(当前库的表) | db_name.routine_name(指定库的函数,存储过程,触发器) GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';MariaDB [(none)]> grant all on hellodb.* to yxh@"192.168.%.%" identified by 'root';MariaDB [(none)]> grant select,insert on hellodb.* to laoge@'%' identified by 'root';MariaDB [(none)]> grant select(stuid,name) on hellodb.students to dage@'%' identified by 'root';MariaDB [(none)]> show grants for yxh@"192.168.%.%";回收授权语法:REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ...⽰例: REVOKE DELETE ON testdb.* FROM 'testuser'@'%'查看⽤户的授权信息:Help SHOW GRANTSSHOW GRANTS FOR 'user'@'host';SHOW GRANTS FOR CURRENT_USER[()];注意:MariaDB服务进程启动时会读取mysql库中所有授权表⾄内存(1) GRANT或REVOKE等执⾏权限操作会保存于系统表中,MariaDB的服务进程通常会⾃动重读授权表,使之⽣效(2) 对于不能够或不能及时重读授权表的命令,可⼿动让MariaDB的服务进程重读授权表mysql> FLUSH PRIVILEGES;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
USE [master]
GO
CREATE DATABASE [ adageOfEncouragement] ON PRIMARY
( NAME = N' adageOfEncouragement', FILENAME = N'E:\MSSQLexperiment\ adageOfEncouragement.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%)
DROP USER Mary;
GO
--4.使用 DROP 语句删除 Mary 对此 SQL Server 2008 实例的访问权限。
DROP LOGIN [T-35E047250FA24\Mary];
GO
--5.使用 DROP 语句删除存储过程 pr_author:
DROP PROC pr_author;
GO
--9.正使用adageOfEncouragement 数据库时,无法删除该数据库;因此,请首先将上下文切换到其他数据库,再使用 DROP 语句删除adageOfEncouragement 数据库:
USE MASTER;
GO
DROP DATABASE adageOfEncouragement;
GO
USE [ adageOfEncouragement]
GO
CREATE TABLE [dbo].[ adage](
[id] [int] IDENTITY(1,1) NOT NULL,
[ adage] [nvarchar](max) NULL,
[author] [nchar](20) NULL
) ON [PRIMARY]
GO
INSERT INTO [ adageOfEncouragement].[dbo].[ adage]([ adage],[author])
VALUES('好好学习,天天向上!','毛泽东')
INSERT INTO [ adageOfEncouragement].[dbo].[ adage]([ adage],[author])
GO
--6.使用 DROP 语句删除视图 vw_adage:
DROP View vw_adage;
GO
--7.使用 DELETE 语句删除 adage 表中的所有行:
DELETE FROM adage;
GO
--8.使用 DROP 语句删除 adage 表:
DROP Table adage;
PRINT '查询出自 ' + CAST(@VarAuthor AS varchar(20))+'的励志格言';
-- A second statement starts here
SELECT [id],[adage],[author] FROM vw_adage
GO
CREATE LOGIN [T-35E047250FA24\Mary]
FROM WINDOWS
WITH DEFAULT_DATABASE = [adageOfEncouragement];
GO
USE [AdageOfEncouragement];
GO
--在数据库中创建用户
WHERE author=@VarAuthor;
END
GO
EXECUTE pr_author '墨翟';
GO
GRANT EXECUTE ON pr_author TO Mary;
GO
--删除权限和对象
--1.在删除对象之前,请确保使用正确的数据库:
VALUES('志不强者智不达.','墨翟')
INSERT INTO [ adageOfEncouragement].[dbo].[ adage]([ adage],[author])
VALUES('One today is worth two tomorrow.',' ')
GO
SELECT * FROM vw_adage;
GO
CREATE PROCEDURE pr_author @VarAuthor nchar(20)
AS
BEGIN
-- The print statement returns text to the user
USE adageOfEncouragement;
GO
--2.使用 REVOKE 语句删除 Mary 对存储过程的执行权限:
REVOKE EXECUTE ON pr_author FROM Mary;
GO
--3.使用 DROP 语句删除 Mary 对 adageOfEncouragement 数据库的访问权限:
LOG ON
( NAME = N' adageOfEncouragement_log', FILENAME = N'E:\MSSQLexperiment\ adageOfEncouragement_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
CREATE USER [Mary] FOR LOGIN [T-35E047250FA24\Mary];
GO
CREATE VIEW vw_adage
AS
SELECT [id],[adage],[author]
FROM [adageOfEncouragement].[dbo].[adage] ;
GO