1.2SQL/MySQL进阶即查询练习

在这里插入图片描述
1.查看MySQL数据库编码:SHOW VARIABLES LIKE ‘char%’;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Windows下使用cmd命令打开进入MySQL数据库:
在这里插入图片描述

备份与恢复

数据库–>sql语句
sql语句–>数据库

  1. 数据库导出SQL脚本(备份数据库内容,并不是备份数据库!)
    >mysqldump -u用户名 -p密码 数据库名>生成的脚本文件路径
    >例如:mysqldump -uroot -p123 mydb1>C:\mydb1.sql (与mysql.exe和mysqld.exe一样,都在bin目录下)
    >注意,不要打分号,不要登录mysql,直接在cmd下运行
    >注意,生成的脚本文件中不包含create database语句
  2. 执行SQL脚本
  • 第一种方式:
    >mysql -u用户名 -p密码 数据库<脚本文件路径
    >例如:
    先删除mydb1库,再重新创建mydb1库
    mysql -uroot -p123 mydb1<C:\mydb1.sql
    >注意,不要打分号,不要登录mysql,直接在cmd下运行
  • 第二种方式:
    >登录mysql
    >source SQL脚本路径
    >例如:
    先删除mydb1库,再重新创建mydb1库
    切换到mydb1库
    source c:\mydb1.sql
    -----------------------------------------------
    数据库–>sql:备份
    sql–>数据库:恢复

约束

1.主键约束(唯一标识):非空、唯一、被引用
当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现。
创建表时指定主键的两种方式:

CREATE TABLE stu(
		sid		CHAR(6)  PRIMARY KEY,
		sname 	VARCHAR(20),
		age 			INT,
		gender	VARCHAR (10)
);

指定sid列为主键列,即为sid列添加主键约束

CREATE TABLE stu(
		sid 		CHAR(6),
​		sname  VARCHAR (20),
        age		 		INT,
​         gender  VARCHAR (10),
		PRIMARY    	KEY(sid)
);		

指定sid列为主键列,即为sid列添加主键约束

  • 修改表时指定主健:ALTER TABLE stu ADD PRIMARY KEY(sid);
  • 删除主键:ALTER TABLE stu DROP PRIMARY KEY:

2.主键自增长
因为主键列的特性是:必须唯一,不能为空,所以我们通常会指定主键类为整型,然后设置其自动增长,这样可以保证在插入数把时主键列的唯一和非空特性。
创建表时指定主键自增长

CREATE TABLE stu(
		sid  INT PRIMARY KEY AUTO_INCREMENT,
		sname 	 VARCHAR(20),
		age				INT,
		gender 	VARCIHAR(10)
);

修改表时设置主键自增长:ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT;
修改表时删除主键自增长:ALITER TABLE stu CHANGE s1d sid INT;
测试主键自增长:
INSERT INTO stu VALUES(NULL, ‘zhangSan’,23,’male’);
INSERT INTO stu(sname, age, gender) VALUES(‘zhangSan’,23,’male’);
3.非空约束
因为某些列不能设置为NULL值,所以可以对列添加非空约束。
例如:

CREATE TABLE  stu(
		sid INT PRIMARY KEY AUTO_INCREMENT,
		sname 	VARCHAR(20)  NOT NULL,
		age 			INT,
		gender	 VARCHAR(10)
);

对sname列设置了非空约束
4.唯一约束
车库某些列不能设置重复的值,所以可以对列添加唯一约束。
例如:

CREATE  TABLE  stu(
		sid  INT PRIMARY KEY AUTO_INCREMENT,
		sname	VARCHAR(20)  NOT NULL UNIQUE,
		age				INT,
		gender	 VARCHAR(10)
);

对sname列设置了非空约束
5.概念模型

对象模型:在Java中是domain!!例如:User、Student

关系模型:在数据库中表!!

当我们要完成一个软件系统时,需要把系统中的实体抽取出来,形成概念核型。
例如部门、员工都是系统中的实体,概念模型中的实体最经会成为Java中的类、数据库中表。
实体之间还行在着关系,关系有三种:

  • 1对多:例如每个员工都从属一个部门,而一个部门可以有多个员工,其中员工是多方,而部门是一方。

  • 1对1,例如老公和老婆就是一对一的关系,一个老公只能有一个老婆,而一个老婆只能有一个老公。

  • 多对多:老师与学生的关系就是多对多,一个老师可以有多个学生,一个学生可以有多个老师。

概念模型在Java中成为实体类(javaBean)
类就使用成员变量来完成关系,一般都是双向关联!
多对一双向中关联,即员工关联部门,部门也关联员工

class Employee {//多方关联一方
    ...
	private Department department;
}
class Department {//一方关联多方
    ...
	private List<Employee> employees;
}
class Husband {
    ...
	private Wife wife;
}
class Wife {
	...
	private Husband;
}
class Student {//多对多
    ...
	private List<Teacher> teachers;
}
class Teacher {
    ...
	private List<Student> students;
}

6.外键约束

  • 外键必须是另一表的主键的值(外键要引用主键!)
  • 外键可以重复
  • 外键可以为空
  • 一张表中可以有多个外键!

概念模型在数据库中成为表
数据库表中的多对一关系,只需要在多方使用一个独立的列来引用1方的主键即可
7.数据库一对一关系
在表中建立一对一关系比较特殊,需要让其中一张表的主键,即是主键又是外键。

create table husband(
	hid int PRIMARY KEY,
   ...
);
create table wife (
	wid int PRIMARY KEY,
	ADD CONSTRAINT fk_wife_wid FOREIGN KEY(wid) REFERENCES >husband(hid)
);

其中wife表的wid既是主键,又是相对husband表的外键!
husband.hid是主键,不能重复!
wife.wid是主键,不能重复,又是外键,必须来自husband.hid,
所以如果在wife表中有一条记录的wid为1,那么wid表中的其他记录的wid就不能再是1了,因为它是主键。
同时在husband.hid中必须存在1这个值,因为wid是外键。这就亮成了一对一关系。
8.数据库多对多关系
在表中建立多对多关系需要使用中间表,即需要三张表,在中间表中使用两个外键,分别引用其他两个表的主键。

create table student(
	sid int PRIMARY KEY,
   ...
);
create table teacher(
	tid int PRIMARY KEY,
  ...
);
create table stu_tea(
	sid int,
	tid int,
	ADD CONSTRAINT fk_stu_tea_sid FOREIGN KEY(sid) REFERENCES >student(sid),
	ADD CONSTRAINT fk_stu_tea_tid FOREIGN KEY(tid) REFERENCES >teacher(tid)
);

这时在stu_tea这个中间表中的每条记录都是来说明student和teacher表的关系

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
子查询:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值