数据库笔记

更新时间:2024-01-04 09:31:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Mysql笔记大全

1、SHOW DATABASES:查看所有数据库

2、删除数据库:drop table if exists course; / drop table course 3、创建数据库:

create table department

(dept_name varchar(20),

budget numeric(12,2) check (budget > 0), primary key (dept_name) );

create table course

(course_id varchar(8), title varchar(50), dept_name varchar(20),

credits numeric(2,0) check (credits > 0), primary key (course_id),

foreign key (dept_name) references department (dept_name) on delete set null );

create table prereq

(course_id varchar(8), prereq_id varchar(8),

primary key (course_id, prereq_id),

foreign key (course_id) references course (course_id) on delete cascade,

foreign key (prereq_id) references course (course_id) on delete cascade );

4、删除department表中'Physics'记录(整行)

delete from department where Dept_name = 'Physics';

5、创建表emp,并插入三行数据, CREATE TABLE emp (

NAME VARCHAR(10), sal NUMERIC(10,2) );

INSERT INTO emp VALUES ( 'huang',25); INSERT INTO emp VALUES ('hai',8); INSERT INTO emp VALUES ('jay',50);

更新数据:sal>20的增加20%,否则 增加5%

UPDATE emp SET sal = CASE WHEN sal>20 THEN sal*1.2 ELSE sal*1.05 END; 6、假设全体Comp. Sci.学生都要选课“Weekly seminar”,且课程要2013年秋季学期开出,增加课程开出信息、选课信息。 insert into section

values ('CS-001',1,'Fall',2013,'Taylor',null,null) 已创建 1 行。

insert into takes

select student.ID,T.course_id,'1','Fall','2013',NULL from student,(select course_id from course

where title = 'Weekly seminar') T where student.dept_name='Comp. Sci.' 已创建4行。

7.、删除学生'Brown'的“Weekly seminar”课程的选课记录。 delete from takes

where takes.id in (select student.id from student

where name = 'Brown')

and takes.course_id in (select course_id from course

where title = 'Weekly seminar');

8、将学生表中学分tot_cred>100的学生选出来放进对应系的instructor表中,工资设置为10000.

insert into instructor

select id,name,dept_name,100000 from student

where tot_cred>100;

9、找出并删除所有未被开出过的课程。 delete from course

where course_id not in

(select course_id from section);

10、插入数据。

INSERT INTO book4(book_number) VALUES('A0001');

11、创建表时,设置表的默认值。 CREATE TABLE book4( book_number VARCHAR2(5) DEFAULT NULL, book_name VARCHAR2(30) DEFAULT '未知',

pub_com_bumber VARCHAR2(2) DEFAULT NULL, publishing_date DATE DEFAULT '01-1月-1900', author VARCHAR2(10) DEFAULT NULL, volume NUMBER(3) DEFAULT 0, price NUMBER(7,2) DEFAULT NULL, loan_volume NUMBER(3) DEFAULT 0 );

12、显示当前用户的所有表。 SELECT object_name FROM user_objects WHERE object_type='TABLE';

13、创建带有约束条件(包括外键)的图书表(如果已经存在,先删除): CREATE TABLE book( book_number VARCHAR2(5) CONSTRAINT PK_2 PRIMARY KEY, book_name VARCHAR2(30) NOT NULL, pub_com_number VARCHAR2(2) CHECK(LENGTH(pub_com_number)=2) NOT NULL, author VARCHAR2(10) DEFAULT '未知', publishing_date DATE DEFAULT '01-1月-1900', volume NUMBER(3) DEFAULT 1 CHECK(volume>0), price NUMBER(7,2), CONSTRAINT YS_1 UNIQUE(book_name, author), CONSTRAINT FK_1 FOREIGN KEY(pub_com_number) REFERENCES publishing_company(pub_com_number) ON DELETE CASCADE );

说明:因为两个表同属于一个用户,故约束名不能相重,图书表的主键为“book_number”列,主键名为PK_2。其中,约束条件CHECK(LENGTH(pub_com_number)=2)表示出版社编号的长度必须是2,约束条件UNIQUE(book_name, author)表示“book_name”和“auhtor”两列的内容组合必须惟一。FOREIGN KEY(pub_com_number) REFERENCES publishing_company (pub_com_number) 表示图书表的“pub_com_number”列参照出版社的“pub_com_number”主键列。出版社表为主表,图书表为子表,出版社表必须先创建。ON DELETE CASCADE表示当删除出版社表的记录时,图书表中的相关记录同时删除,比如删除清华大学出版社,则图书表中清华大学出版社的图书也会被删除。 如果同时出现DEFAULT和CHECK,则DEFAULT需要出现在CHECK约束条件之前。

查看约束条件(表-BOOK)

数据字典USER_CONSTRAINTS中包含了当前模式用户的约束条件信息。其中,CONSTRAINTS_TYPE 显示的约束类型为: C:CHECK约束。 P:PRIMARY KEY约束。 U:UNIQUE约束。 R:FOREIGN KEY约束。

其他信息可根据需要进行查询显示,可用DESCRIBE命令查看USER_CONSTRAINTS的结构。

【训练1】 检查表的约束信息:

说明:图书表共有7个约束条件,一个PRIMARY KEY(P)约束PK_2,一个FOREIGN KEY(R)约束FK_1,一个UNIQUE(R)约束YS_1和4个CHECK(C)约束SYS_C003186、SYS_C003187、SYS_C003188和SYS_C003189,4个CHECK约束的名字是由系统命名

使约束条件失效:

ALTER TABLE 表名 DISABLE CONSTRANT 约束名; 使约束条件生效:

ALTER TABLE 表名 ENABLE CONSTRANT 约束名; 【训练1】 使图书表的数量检查失效。 步骤1:使约束条件SYS_C003114(数量>0)失效: ALTER TABLE book DISABLE CONSTRAINT SYS_C003189; 执行结果: 表已更改。 步骤2:修改数量为0: UPDATE book SET volume=0 WHERE book_number='A0001'; 执行结果: 已更新 1 行。

步骤3:使约束条件SYS_C003114生效: ALTER TABLE book ENABLE CONSTRAINT SYS_C003114;

结果:不成功,因为表中有数据不满足该约束条件(必须SET volume为一个大于0的数,才能使约束条件SYS_C003114生效!!)

本文来源:https://www.bwwdw.com/article/4tbx.html

Top