MySQL笔记5——数据库和数据表管理

学习目的:了解MySQL数据库中数据库的创建和删除,掌握数据表结构的创建、修改和删除,掌握约束的添加、修改和删除

重点:

  • 表结构的创建、修改和删除
  • 约束的类型
  • 约束添加、修改和删除

难点:

  • 表结构的修改
  • 约束的添加
-- 1.数据库管理
 -- 1.1创建数据库 CREATE DATABASE  [IF NOT EXISTS] 数据库名
CREATE DATABASE IF NOT EXISTS MySQLDB;
 -- 1.2 删除数据库
DROP DATABASE MySQLDB;

-- 2.数据表管理
 -- 2.1创建表
/*CREATE TABLE 表名(
字段名1 数据类型 [约束条件],
字段名2 数据类型 [约束条件],
…
[其他约束条件],
[其他约束条件]
)其他选项(例如存储引擎、字符集等选项)*/

-- 2.2数据类型
-- 2.3约束(四种):
-- 							主键约束 (PRIMARY KEY)
-- 							唯一约束 (UNIQUE)
-- 							非空约束 (NOT NULL)
-- 							外键约束 (FOREIGN KEY)

-- 非空约束
CREATE TABLE test01(
uname VARCHAR(10) NOT NULL,  /*非空*/
gender CHAR(1),
);
INSERT INTO test01 	VALUES('tom',NULL); /*OK*/
INSERT INTO test01 	VALUES('NULL',NULL); /*ERROR*/
INSERT INTO test01 	VALUES('',NULL); 	/*OK mysql中空字符串不是null,可以插入*/
INSERT INTO test01 	VALUES('123',NULL); /*ok 123与字符串123等价,有自动的类型转换*/
INSERT INTO test01 (gender) VALUES(NULL); /*ERROR*/
SELECT * FROM test01;

-- 建表时提供默认值,可以在插入数据时忽略非空列
CREATE TABLE test02(
uname VARCHAR(10) NOT NULL DEFAULT 'haha',  /*非空*/
gender CHAR(1)
);
INSERT INTO test02 (gender) VALUES(NULL); /*ERROR*/
SELECT * FROM test02;

-- 唯一约束
CREATE TABLE test03(
uname VARCHAR(10) UNIQUE
);
INSERT INTO test03 VALUES('aa');
INSERT INTO test03 VALUES('aa');
INSERT INTO test03 VALUES(NULL); /*ERROR,重复了*/
INSERT INTO test03 VALUES(NULL); /*ok*/
SELECT * FROM test03;

-- 设置主键
CREATE TABLE classes(
classes_id INT PRIMARY KEY,
classes_name VARCHAR(10),
classes_dept VARCHAR(10)
);

-- DROP TABLE classes;
INSERT INTO classes VALUES(1001,'java01','计算机');
INSERT INTO classes VALUES(1001,'java01','软件工程');/*ERROR,主键重复了*/

-- 设置外键
CREATE TABLE teacher(
teacher_id INT PRIMARY KEY AUTO_INCREMENT,
teacher_name VARCHAR(10),
cid INT,
-- 表级约束
FOREIGN KEY (cid) REFERENCES classes(classes_id)
);
-- 外键列的值必须在主表的主键值范围内
INSERT INTO teacher VALUES(NULL,'tom',1001);/*当前表的主键设置自增了,所以传入null值时数据库会使用自增对象给主键提供值*/
INSERT INTO teacher VALUES(NULL,'tom',1002);/*ERROR,在 主表中没有1002这个主键值*/
SELECT * FROM teacher;



CREATE TABLE Persons(
id INT NOT NULL,
p_name VARCHAR(20) NOT NULL,
deparment VARCHAR(20),
address VARCHAR(20),
telNum VARCHAR(20)
);

CREATE TABLE classes (
classes_id INT PRIMARY KEY,
classes_name VARCHAR(10),
classes_dept varchar(10)
);

CREATE TABLE teacher (
teacher_id INT PRIMARY KEY ,
teacher_name VARCHAR(10),
cid INT , 
FOREIGN KEY(cid) REFERENCES classes(classes_id)
);

-- 3.复制表
-- 3.1复制表使用like,约束也会复制过来,记录不复制
CREATE TABLE dept2 LIKE dept;
SELECT * FROM dept2;
-- 3.2复制表:使用子查询,主外键约束不会复制,(符合条件的)记录会复制
CREATE TABLE dept3 SELECT * FROM dept;
SELECT * FROM dept3;

-- 4.删除表
DROP TABLE dept6;

-- 5.表的重命名:两种方法
RENAME TABLE dept6 TO dept7;
ALTER TABLE dept6 RENAME dept7;

-- 6.本章小结
-- ● 掌握数据库的创建和删除管理
-- ● 了解mysq的约束和数据类型
-- ● 掌握表结构的创建、删除
-- 

-- 7.课后作业

-- 1. 创建与dept表相同表结构的表dtest,将dept表中部门编号在40之前的信息插入该表。
CREATE TABLE dtest SELECT * FROM dept WHERE deptno=40;
-- 2. 创建与emp表结构相同的表empl,并将其部门编号为前30号的员工信息复制到empl表。
CREATE TABLE emp1 SELECT * FROM emp WHERE deptno<=30;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值