创建数据库
例:创建名为“test_db”的数据库。
注意:mysql中所有命令以分号结束。
mysql>create database test_db DEFAULT CHARACTER SET utf8mb4;
显示数据库
mysql> show databases;
打开数据库
例:以下命令可打开数据库“test_db”,当前正在使用的数据库就是“test_db”。创建的表都是添加到当前数据库中。
mysql>use test_db;
显示当前打开数据库
mysql>SELECT DATABASE();
显示表
例:show tables命令可显示当前数据库所包含的表。
mysql> show tables;
显示表结构
例:desc可显示指定表的结构
mysql> desc student;
创建表
create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);
Eaxmple:
CREATE TABLE instructor (
ID CHAR (5),
NAME VARCHAR (20),
dept_name VARCHAR (20),
salary NUMERIC (8, 2)
);
修改表名
rename table 表名 to 新表名;
删除主键
alter table 表名 drop primary key;
插入数据
insert into instructor values('10211','Smith','Biology',66000);(空的用null表示)
删除表
DROP TABLE instructor;
在表中新增字段
alter table instructor add sex char (2);
查找表中的所有内容
select * from instructor;
修改表修改列的类型长度及约束
alter table 表名 modify 列名 类型(长度) 约束;
alter table instructor modify column sex char(4) not null;
删除字段
alter table instructor drop column sex;
查询ID,姓名和年薪
select ID,name,Salary from instructor;
查询院系名称并去除重复行(distinct)
select distinct dept_name from instructor;
查询ID,姓名和月薪
mysql> select ID,name,salary/12 as month_Salary from instructor;
查询基本结构:
mysql>select *(你需要查询的内容) 也可以通过简单计算用as 重命名
->from 表名
->where (条件)比如 dept_name = 'Comp. Sci.' and salary > 80000; 或者 salary between 90000 and 100000;
联合查询
select * from instructor,teaches;(会有m*n条结果)
mysql> select name,course_id
-> from instructor,teaches
-> where instructor.ID = teaches.ID;
mysql> select section.course_id,semester,year,title
-> from section,course
-> where section.course_id = course.course_id and dept_name = 'Comp. Sci.';
自然联合查询
mysql> select * from instructor natural join teaches;
mysql> select name,title from instructor natural join teaches natural join course;
mysql> select name,title
-> from instructor natural join teaches,course
-> where teaches.course_id = course.course_id;
mysql> select name,title
-> from (instructor natural join teaches)
-> join course using(course_id);
下面三个显示出来的结果是一样的
创建表
CREATE TABLE book(
book_number char(10) PRIMARY KEY,主键字段
category varchar(12),
book_name varchar(30) NOT NULL,
publisher char(30) NOT NULL,
author char(10),
price numeric(5,2),
book_total int NOT NULL,
inventory int NOT NULL
CREATE TABLE borrow_book(
reader_number CHAR(10) not null,
book_number char(10) not null,
borrow_time datetime not null, 非空字段
PRIMARYKEY(reader_number,book_number), 多个字段一起充当主键
foreign KEY (book_number) references book (book_number), 外键
foreign KEY (reader_number) references reader (reader_number) 除了最后一行都要加,
);
HAVING短语与WHERE子句的区别:
①作用对象不同
②WHERE子句作用于基表或视图,从中选择满足条件的元组
③HAVING短语作用于组,从中选择满足条件的组。
select dept_name, avg (salary)
from instructor
group by dept_name
having avg (salary) > 42000;
按照系进行分组再计算平均薪水
select sno, avg (grade) as avg_grade
from SC
where dept='CS'
group by sno
having avg_grade>88
找出计算机系平均分大于88分的学生及其平均分