戚权20201014

知识点

数据库

创建数据库

CREATE DATABASE company_info;

使用数据库

USE company_info;

删除数据库

DROP DATABASE hws_20191106;

创建表

CREATE TABLE dept(

deptno INT DEFAULT 1 COMMENT '部门编号', int型默认默认为1

deptname VARCHAR(20) DEFAULT NULL COMMENT '部门名称' 默认为空,comment:注释

)CHARACTER SET utf8; //编码格式

查看表

DESCRIBE dept;

创建和某表结构一样的表

CREATE TABLE d LIKE dept;

删除表

DROP TABLE table_name

添加列

ALTER TABLE d ADD id int;

修改列

ALTER TABLE d MODIFY id VARCHAR(20);

修改列名

ALTER TABLE d CHANGE id ss VARCHAR(20);

删除列

ALTER TABLE d DROP ss;

重命名表

RENAME TABLE d to dd;

CRUD 操作

添加数据

— 不推荐使用

INSERT INTO dept VALUE(1,'研发部');

— 2

INSERT INTO dept VALUES(2,'销售部');

INSERT INTO dept VALUES(3,'行政部'),(4,'技术部');

— 3

INSERT INTO dept(deptno,deptname)VALUES(5,'安保部');

查询数据

— 查询所有数据

SELECT *FROM dept;

— 查询某列的数据

SELECT deptname FROM dept;

— 根据条件查询*

SELECT deptno FROM dept WHERE deptname='销售部';

修改数据

–全部修改为6

UPDATE dept SET deptno=6;

–根据条件修改

UPDATE dept SET deptno=1 WHERE deptname='研发部';

UPDATE dept SET deptno=2 WHERE deptname='销售部';

UPDATE dept SET deptno=3 WHERE deptname='行政部';

UPDATE dept SET deptno=4 WHERE deptname='技术部';

UPDATE dept SET deptno=5 WHERE deptname='安保部';

删除数据

— 删除数据 ,一定要加 where 条件

DELETE FROM dept WHERE deptno=5;

— 全部删除

DELETE FROM dept;

— 清空/截断 所有数据(慎用)

TRUNCATE TABLE dept;

命令行备份

mysqldump -h127.0.0.1 -uroot -proot db_name>path;

使用mysqldump 命令备份数据库

-h指定数据库所在的服务器的ip地址

-u指定登录数据库的密码

db_name是要备份的数据库的名称

使用输出目标操作符>,指定输出的文件具体路径c:/back.sql

命令行还原

mysql -h127.0.0.1 -uroot -proot db_name<back.sql

约束

主键约束

  • 主键约束最显著的特征是主键列中的值是不允许重复的,通过主键约束可强制表的实体完整性。当创建或更改表时可通过定义 primary key约束来创建主键。一个表只能有一个primary key约束,且primary key约束中的列不能接受NULL值。
  • alter table tab_name add constraint pk_name primary key (deptno);

— 创建表时

CREATE TABLE table_name (

id int(0) NOT NULL,

name varchar(20) ,

PRIMARY KEY (id) — 设置主键

);

— 设置主键是deptno

ALTER TABLE dept ADD CONSTRAINT pk_name PRIMARY KEY(deptno);

自增长列

并不是所有表在设计完成后都能找到适合作为主键的列,为此数据库提供了自增长列,自增长列是int类型的,其值是int类型的,其值是由数据库自动维护的,是永远都不会重复的,因此自增长是最适合作为主键列的。在创建表时,通过auto_increment关键字来标识自增长列,在MySQL数据库中自增长列必须时主键列。

自增长与主键

CREATE TABLE emp(

empNo INT PRIMARY KEY AUTO_INCREMENT,

job VARCHAR(10),

mgr INT,

sal DOUBLE,

comm DOUBLE,

deptno INT

)CHARACTER SET utf8;

唯一约束

  • 对于非主键列中的值也要求唯一性时,就需要唯一约束

ALTER TABLE dept ADD CONSTRAINT UNIQUE(deptname);

默认约束

  • 为列中的值设置默认值,default ….,如果已经定了值,默认值就无效了

外键约束

  • 表中列的值来自于另外一张表的主键或唯一键的列称为外键FK,将被引用值得表称为主表或父表,将引用值得表称为从表或子表。

alter table userinfo add constraint foreign key fk_dept_no (dept_no) REFERENCES dept(deptno);

dept 是主表, userinfo 是从表

在 userinfo 表中添加或修改时, dept_no 列的值必须是 dept 表中 deptno 字段中的存在值

删除从表数据可以直接删除

删除主表数据时,会先检查从表中有没有对此数据的关联,如果有不能直接删除

​ on delete CASCADE/ on update CASCADE 级联删除 / 级联更新

总结

今天开始了数据库的学习,感觉开始不是很难还能适应.

标签

评论