2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > MySQL笔记(一)创建数据库 创建表 修改表 删除表 以及建立约束

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

时间:2021-03-13 07:30:36

相关推荐

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

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

-- 命令行创建数据库

#1、创建数据库

CREATE DATABASE luo DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

#2、给数据库授权,

#其中密码是可选项;

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON luo.* TO root@localhost_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 ADDCONSTRAINT fk_emp FOREIGN KEY (dept_id) REFERENCES tb_dept(deptno);

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

ALTER TABLE tb_emp DROPFOREIGN KEY fk_emp;

#唯一约束UNIQUE

ALTER TABLE tb_emp ADD UNIQUE(phone);

#删除唯一约束

ALTER TABLE tb_emp DROP INDEX phone;

#修改字段为自动增长

ALTER TABLE tb_empMODIFY empno INT auto_increment;

#取消字段自动增长

ALTER TABLE tb_empMODIFY id INT

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。