欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql笔记(一)创建数据库、创建表、修改表、删除表,以及建立约束

程序员文章站 2021-11-28 11:23:20
...

 

这是我在学习Mysql之路上做的笔记,今天将它粘出来。这一篇比较基础主要是创建数据库、创建表、修改表、删除表,以及建立约束:非空约束、主键约束、外键约束、唯一值约束。有错误的欢迎大家指出。。。

-- 命令行创建数据库

#1、创建数据库

CREATE DATABASE luo DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

#2、给数据库授权,

#其中密码是可选项;

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON luo.* TO [email protected]_3309 identified by 'root'; 

#删除数据库和#使用数据库

DROP DATABASE luo;
USE luo;

CHAR的长度是固定的,而VARCHAR的长度是可以变化的,

比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长

#创建部门表

CREATE TABLE tb_dept(

deptno INT PRIMARY KEY auto_increment COMMENT '部门编号',

dname VARCHAR(18) COMMENT '部门名称',

loc VARCHAR(100) COMMENT '部门地址'

)engine=innodb DEFAULT charset=utf8;

#显示表的结构

DESC tb_dept;

#删除表,信息以及结构

DROP TABLE tb_dept;

-- 删除

#DELETE删除表数据,保留表结构,可以回滚

DELETE FROM tb_dept WHERE dname='销售部';

#DROP删除表结构和数据:删除最快,直接从内存删除

DROP TABLE tb_dept;

#TRUNCATE清空一个表数据,不可以回滚

TRUNCATE TABLE tb_dept;

#修改列类型

ALTER TABLE tb_dept MODIFY dname INT;

ALTER TABLE tb_dept MODIFY COLUMN dname VARCHAR(18);

#增加列

ALTER TABLE tb_dept ADD COLUMN phone VARCHAR(15);

#删除列

ALTER TABLE tb_dept DROP COLUMN phone;

#更改列名

ALTER TABLE tb_dept CHANGE dname dept_name VARCHAR(18);

ALTER TABLE tb_dept CHANGE COLUMN dept_name dname VARCHAR(18);

#更改表名两种方法

ALTER TABLE tb_dept RENAME dept;

RENAME TABLE dept TO tb_dept;

-- 1、创建表国家/地区,并确保不会在表格中输入除中国China,美国America,日本Japan之外的任何国家/地区

CREATE TABLE countries(

country_id VARCHAR(5) NOT NULL,

country_name enum('China','America','Japan') DEFAULT 'China'

)ENGINE=INNODB DEFAULT charset=utf8;



INSERT countries VALUES('1','America');

INSERT countries(country_id) VALUES('1');

SELECT *FROM countries;



DROP TABLE IF EXISTS countries;

建立约束:非空约束、主键约束、外键约束、唯一值约束

#约束:保证数据库的完整性

#1、非空约束 not null

#2、主键约束primary key

/*一个表只允许有一个主键,

作用:唯一确定一行数据的字段

主键可以是一个字段也可以是多字段的组合

当创建主键约束时,MySQL会为主键创建索引

*/

#3、外键约束foreign key

#4、唯一值约束unique

#5、检查约束check在MySQL中不起作用,CHECK子句会被分析,但是会被忽略。

 

#在建表时建立约束

#创建员工表

CREATE TABLE tb_emp(

empno INT PRIMARY KEY auto_increment COMMENT '员工编号',

ename VARCHAR(18) NOT NULL COMMENT '员工姓名',

job varchar(8) COMMENT '员工职位' enum(),

mgr int COMMENT '上级领导',

hiredate DATE COMMENT '入职时间',

sal int COMMENT '薪资',

comm int COMMENT '奖金',

phone VARCHAR(18) UNIQUE COMMENT '电话',

dept_id int COMMENT '部门编号',

CONSTRAINT fk_emp FOREIGN KEY (dept_id) REFERENCES tb_dept(deptno)

)COMMENT='员工表';

#显示表的结构

DESC tb_emp;

#显示创建表的命令

SHOW CREATE TABLE tb_emp;

#删除表

DROP TABLE tb_emp;

#在建表之后建立约束

#创建员工表

CREATE TABLE tb_emp(

empno INT COMMENT '员工编号',

ename VARCHAR(18) COMMENT '员工姓名',

job VARCHAR(8) COMMENT '员工职位',

mgr INT COMMENT '上级领导',

hiredate DATE COMMENT '入职时间',

sal INT COMMENT '薪资',

comm INT COMMENT '奖金',

phone VARCHAR(18) COMMENT '电话',

dept_id INT COMMENT '部门编号'

)COMMENT='员工表';

#非空约束NOT NULL

ALTER TABLE tb_emp MODIFY ename VARCHAR(18) NOT NULL;

#删除非空约束

ALTER TABLE tb_emp MODIFY ename VARCHAR(18);

#主键约束PRIMARY KEY

ALTER TABLE tb_emp ADD PRIMARY KEY (empno);

#删除主键约束

ALTER TABLE tb_emp DROP PRIMARY KEY;

#外键约束FOREIGN KEY

ALTER TABLE tb_emp ADD

CONSTRAINT fk_emp FOREIGN KEY (dept_id) REFERENCES tb_dept(deptno);

#删除外键约束(外键的名字由MySQL自动非配的,自己给的不起作用,Sql标准要起名)

ALTER TABLE tb_emp DROP

FOREIGN KEY fk_emp;

#唯一约束UNIQUE

ALTER TABLE tb_emp ADD UNIQUE(phone);

#删除唯一约束

ALTER TABLE tb_emp DROP INDEX phone;

#修改字段为自动增长

ALTER TABLE tb_emp

MODIFY empno INT auto_increment;

#取消字段自动增长

ALTER TABLE tb_emp

MODIFY id INT

 

相关标签: Mysql