Database - MYSQL
- Most of the commands in MYSQL is end up with ‘;’, consequently, if you do not input ‘;’, the dos will show you something like ‘->’ until you complete the command with ‘;’
1
2
3sudo service mysql start
mysql -u root
使用命令 show databases;,查看有哪些数据库(注意不要漏掉分号 ;)选择连接其中一个数据库,语句格式为 use <数据库名>,这里可以不用加分号,这里我们选择 information_schema 数据库
- 使用命令 show tables; 查看数据库中有哪些表(注意不要漏掉“;”)
- 我们创建一个数据库,给它一个名字,比如 mysqlShiyan(mysql_shiyan this format is wrong),以后的几次实验也是对 mysqlShiyan 这个数据库进行操作。 语句格式为 CREATE DATABASE <数据库名字>;,(注意不要漏掉分号 ;),前面的 CREATE DATABASE 也可以使用小写
Create a database
1
2
3
4
5
6
7
8
9
10
11
12create database library;
use library;
create table book(
book_id int primary key,
book_name varchar(50) not null
);
create table reader(
reader_id int primary key,
reader_name varchar(50) not null
);约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性
- 加载文件中的数据,需要在 MySQL 控制台中输入命令:
/home/shiyanlou/Desktop/SQL3/MySQL-03-01.sql``` without 1
23. 在数据库中,如果有两行记录数据完全一样,那么如何来区分呢? 答案是无法区分,如果有两行记录完全相同,那么对于 Mysql 就会认定它们是同一个实体,这于现实生活是存在差别的
4. git clone https://github.com/shiyanlou/SQL3.git
CREATE DATABASE mysql_shiyan;
use mysql_shiyan;
CREATE TABLE department
(
dpt_name CHAR(20) NOT NULL,
people_num INT(10) DEFAULT ‘10’,
CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)
);
CREATE TABLE employee
(
id INT(10) PRIMARY KEY,
name CHAR(20),
age INT(10),
salary INT(10) NOT NULL,
phone INT(12) NOT NULL,
in_dpt CHAR(20) NOT NULL,
UNIQUE (phone),
CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)
);
CREATE TABLE project
(
proj_num INT(10) NOT NULL,
proj_name CHAR(20) NOT NULL,
start_date DATE NOT NULL,
end_date DATE DEFAULT ‘2015-04-01’,
of_dpt CHAR(20) REFERENCES department(dpt_name),
CONSTRAINT proj_pk PRIMARY KEY (proj_num,proj_name)
);`
- 视图是从一个或多个表中导出来的表,是一种虚拟存在的表。它就像一个窗口,通过这个窗口可以看到系统专门提供的数据,这样,用户可以不用看到整个数据库中的数据,而只关心对自己有用的数据。
- 由于导入导出大量数据都属于敏感操作,根据 mysql 的安全策略,导入导出的文件都必须在指定的路径下进行
- 备份与导出的区别:导出的文件只是保存数据库中的数据;而备份,则是把数据库的结构,包括数据、约束、索引、视图等全部另存为一个文件