李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
其它
正文
MySQL基本操作
Leefs
2019-10-14 PM
1763℃
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快捷键
下一篇
构造器内部多态方法的行为
取消回复
评论啦~
提交评论
唉呀 ~ 仅有一条评论
已读
已读
回复
2023-08-23 14:18
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
Shiro
JavaWeb
Nacos
Kibana
Scala
Hbase
NIO
国产数据库改造
排序
数据结构和算法
Typora
gorm
锁
查找
CentOS
Java
数据结构
SQL练习题
Spark Core
Java阻塞队列
VUE
Java工具类
Golang基础
MyBatis
Spark
Tomcat
工具
FileBeat
Kafka
机器学习
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
已读