1.查看MySQL数据库编码:SHOW VARIABLES LIKE ‘char%’;
Windows下使用cmd命令打开进入MySQL数据库:
备份与恢复
数据库–>sql语句
sql语句–>数据库
- 数据库导出SQL脚本(备份数据库内容,并不是备份数据库!)
>mysqldump -u用户名 -p密码 数据库名>生成的脚本文件路径
>例如:mysqldump -uroot -p123 mydb1>C:\mydb1.sql (与mysql.exe和mysqld.exe一样,都在bin目录下)
>注意,不要打分号,不要登录mysql,直接在cmd下运行
>注意,生成的脚本文件中不包含create database语句- 执行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表的关系
子查询: