MySQL practice records

Some basic commands in practical Mysql

 
Author: Joyce_BY, all rights reserved.
Contact by email: [email protected]


#####Connection and Login

# login
root@localhost> mysql -uroot -p
password: ******

#####Create a database

# check current databases:
mysql> SHOW DATABASES;

# create a database
mysql> CREATE DATABASE UNIVERSITY;

# enter the database
mysql> USE UNIVERSITY;

#####tables in university scheme

create table classroom (
	building varchar(15),
    room_number varchar(7),
	capacity numeric(4,0),
	primary key (building, room_number)
);

create table department (
	dept_name varchar(20), 
	building varchar(15), 
	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 instructor (
	ID varchar(5), 
	name varchar(20) not null, 
	dept_name varchar(20), 
	salary numeric(8,2) check (salary > 29000),
	primary key (ID),
	foreign key (dept_name) references department(dept_name)
		on delete set null
);

create table section (
	course_id varchar(8), 
    sec_id varchar(8),
	semester varchar(6) check (semester in ('Fall', 'Winter', 'Spring', 'Summer')), 
	year numeric(4,0) check (year > 1701 and year < 2100), 
	building varchar(15),
	room_number varchar(7),
	time_slot_id varchar(4),
	primary key (course_id, sec_id, semester, year),
	foreign key (course_id) references course(course_id)
		on delete cascade,
	foreign key (building, room_number) references classroom(building, room_number)
		on delete set null
);

create table teaches (
	ID varchar(5), 
	course_id varchar(8),
	sec_id varchar(8), 
	semester varchar(6),
	year numeric(4,0),
	primary key (ID, course_id, sec_id, semester, year),
	foreign key (course_id,sec_id, semester, year) references section(course_id,sec_id, semester, year)
		on delete cascade,
	foreign key (ID) references instructor(ID)
		on delete cascade
);

create table student (
	ID varchar(5), 
	name varchar(20) not null, 
	dept_name varchar(20), 
	tot_cred numeric(3,0) check (tot_cred >= 0),
	primary key (ID),
	foreign key (dept_name) references department(dept_name)
		on delete set null
);

create table takes (
	ID varchar(5), 
	course_id varchar(8),
	sec_id	 varchar(8), 
	semester varchar(6),
	year numeric(4,0),
	grade varchar(2),
	primary key (ID, course_id, sec_id, semester, year),
	foreign key (course_id,sec_id, semester, year) references section(course_id,sec_id, semester, year)
		on delete cascade,
	foreign key (ID) references student(ID)
		on delete cascade
);

create table advisor (
	s_ID varchar(5),
	i_ID varchar(5),
	primary key (s_ID),
	foreign key (i_ID) references instructor (ID)
		on delete set null,
	foreign key (s_ID) references student (ID)
		on delete cascade
);

create table time_slot (
	time_slot_id varchar(4),
    day varchar(1),
    start_hr numeric(2) check (start_hr >= 0 and start_hr < 24),
    start_min numeric(2) check (start_min >= 0 and start_min < 60),
    end_hr numeric(2) check (end_hr >= 0 and end_hr < 24),
    end_min numeric(2) check (end_min >= 0 and end_min < 60),
    primary key (time_slot_id, day, start_hr, start_min)
);

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)
);

# lookup all tables
mysql> SHOW TABLES;

#####Insert and delete

# Insert
insert into takes
(   select ID, 'CS-001','1','Autumn',2009,null
    from student
    where dept_name = 'Comp. Sci.'
);

# delete
delete from takes
where course_id = 'CS-001'
    AND sec_id = '1'
    AND semester = 'Autumn'
    AND year = 2009
    and ID in 
    ( select ID from student
        where name = 'Chavez'
);

#####Some search samples

#search for students who take at least one course in Comp. Sci.
	select name 
	from student natural join takes natural join course
	where course.dept_name = 'Comp. Sci.'
	group by name;

# select id and name that didn't take any course before 2009
# there is no except in mysql, so using EXCEPT will bring on errors.
	select ID, name 
	from student
	where ID not in 
		(select ID
		from student natural join takes
		where year<2009) 
	AND name not in 
		(select name
		from student natural join takes
		where year<2009);

# choose the minimum salary in the maximum salary of each department
# every derived table has its own alias.
	select min(maxsalary)
	from (select dept_name, max(salary) as maxsalary
		from instructor
		group by dept_name) as dept_max;

#####UNIQUE
unique is a boolean function for testing whether the
sub-query has duplicate tuples in its result.

where unique (select title from course);
	# equals to:
Where 1 <= (select count(title) from course);

猜你喜欢

转载自blog.csdn.net/qq_35649764/article/details/82499696