李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
其它
正文
MySQL基本操作
Leefs
2019-10-14 PM
2886℃
1条
# MySQL基本操作 ### 一、 服务器操作 1. 开启服务器(windows服务):**net start mysql** 2. 关闭服务器(windows服务):**net stop mysql** 3. 查看进程表中是否存在:**mysqld.exe** ### 二、数据备份与恢复 1. 数据库导出SQL脚本(备份数据库内容) ```SQL > mysqldump -u用户名 -p密码 数据库名>生成的脚本文件路径 ``` **例如:** ``` mysqldump -uroot -p123456 myselfdb>D:\demo\myself.sql ``` *注意:不要打分号,不要登录mysql,直接在cmd下运行* *注意:生成的脚本文件中不包含create database语句* 2. 执行SQL脚本 **第一种方式:** ```SQL mysql -u用户名 -p密码 数据库<脚本文件路径 ``` **例如:** ``` mysql -uroot -p123456 myselfdb
mysql -uroot -p123456 > source D:\demo\myself.sql ``` ### 三、约束 ==约束是添加在列上,用来约束列== 1. 主键约束(唯一标识) > 特性:非空、唯一、被引用 当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现。 **创建主键的两种方式:** **方式一:** ```SQL CREATE TABLE stu( sid CHAR(6) PRIMARY KEY, sname VARCHAR(20), age INT, gender VARCHAR(10) ); ``` *指定sid列为主键列* **方式二:** ```SQL CREATE TABLE stu( sid CHAR(6), sname VARCHAR(20), age INT, gender VARCHAR(10), PRIMARY KEY(sid) ); ``` *指定sid为主键列* **修改表时指定主键:**==ALTER TABLE stu ADD PRIMARY KEY(sid);== **删除主键:**==ALTER TABLE stu DROP PRIMARY KEY;== 2. 主键自增长 因为主键列的特性是:必须唯一、不能为空,所以我们通常会指定逐渐类为整型,然后设置其自动增长,这样可以保证在插入数据时主键列的唯一和非空特性。 **创建表时设置主键字增长** ```SQL CREATE TABLE stu( sid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(20), age INT, gender VARCHAR(10) ); ``` **修改表时设置主键自增长:**==ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT;== **修改表时删除主键自增长:**==ALTER TABLE stu CHANGE sid sid INT;== **测试:** ```SQL > INSERT INTO stu VALUES(NULL, 'zhangSan',23,'male'); > INSERT INTO stu(sname,age,gender) VALUES('zhangSan',23,'male'); ``` 3. 非空约束 因为某些列不能设置为NULL值,所以可以对列添加非空约束。 **例如:** ```SQL CREATE TABLE stu( sid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(20) NOT NULL, age INT, gender VARCHAR(10) ); ``` *对sname列设置了非空约束* 4. 唯一约束 如果数据表中的某些列不能设置重复的值,可以对列添加唯一约束。 **例如:** ```SQL CREATE TABLE stu( sid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(20) NOT NULL UNIQUE, age INT, gender VARCHAR(10) ); ``` 5. 概念模型 **对象模型:**可以双向关联,而且引用的是对象,而不是一个主键! **关系模型:**只能多方引用一方,而且引用的只是主键,而不是一整行记录。 **实体之间的关联关系:** > * **1对多:**例如每个员工都从属一个部门,而一个部门可以有多个员工,其中员工是多方,而部门是一方。 > * **1对1:**例如老公和老婆就是一对一的关系,一个老公只能有一个老婆,而一个老婆只能有一个老公。 > * **多对多:**老师与学生的关系就是多对多,一个老师可以有多个学生,一个学生可以有多个老师。 6. 外键约束 > **特性:** > > + 外键必须是另一张表的主键的值(外键要引用主键) > > + 外键可以重复 > + 外键可以为空 > + 一张表中可以有多个外键 **创建表时指定外键约束** **语法:** ==CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键)== **例如:** ```SQL create talbe emp ( empno int primary key, ... deptno int, CONSTRAINT fk_emp FOREIGN KEY(mgr) REFERENCES emp(empno) ); ``` **修改表时添加外键约束:** ```SQL ALERT TABLE emp ADD CONSTRAINT fk_emp_deptno FOREIGN KEY(deptno) REFERENCES dept(deptno); ``` **修改表时删除外键约束:** ```SQL ALTER TABLE emp DROP FOREIGN KEY fk_emp_deptno;/*约束名称*/ ``` 7. 数据库一对一关系 在表中建立一对一关系比较特殊,需要让其中一张表的主键,即是主键又是外键。 ```SQL 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,那么wife表中的其他记录的wid就不能再是1了,因为它是主键。 同时在husband.hid中必须存在1这个值,因为wid是外键。这就完成了一对一关系。 **从表的主键即是外键!** 8. 数据库表中的多对一关系 > 只需要在多方使用一个独立的列来引用一方的主键即可 9. 数据库多对多关系 > 在表中建立多对多关系需要使用中间表,即需要三张表,在中间表中使用两个外键,分别引用其他两个表的主键。 **例如:** ```SQL 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==表的关系 **例如:**在stu_tea表中的记录:sid为1001,tid为2001,这说明编号为1001的学生有一个编号为2001的老师 ```SQL sid tid 101 201 /*编号为101的学生有一个编号为201的老师*/ 101 202 /*编号为101的学生有一个编号为202的老师*/ 101 203 /*编号为101的学生有一个编号为203的老师*/ 102 201 /*编号为102的学生有一个编号为201的老师*/ 102 204 /*编号为102的学生有一个编号为204的老师*/ ```
标签:
MySQL
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/8.html
上一篇
Typora快捷键
下一篇
构造器内部多态方法的行为
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
pytorch
Spring
数学
RSA加解密
ajax
正则表达式
JavaSE
国产数据库改造
JavaWeb
Java工具类
NIO
数据结构和算法
ClickHouse
Redis
设计模式
微服务
VUE
SpringCloud
FileBeat
Flume
Http
Python
LeetCode刷题
Scala
前端
Hive
Linux
稀疏数组
字符串
Kibana
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭