DROP TABLE users;

# 数据的来源 用户  后端(Java)
# NOT NULL 不能为空 为空就会报错,除非加了DEFAULT
# DEFAULT 默认值
CREATE TABLE users(
	id    INT(11) PRIMARY KEY AUTO_INCREMENT, 
	uname VARCHAR(40) NOT NULL DEFAULT '张三' COMMENT '用户名',
	upass VARCHAR(40) NOT NULL COMMENT '密码',
	phone BIGINT(11)  NOT NULL COMMENT '电话号码',
	qq    BIGINT(15)  NOT NULL COMMENT 'qq号码',
	sex   INT(1)      NOT NULL DEFAULT 0 COMMENT '性别',
	id_card CHAR(18) COMMENT '身份证号'
);

INSERT INTO users(uname,upass,phone,qq) VALUE("张三","654321",13665432178,666777);
INSERT INTO users(uname,upass,phone,qq) VALUE("李四","123456",13661234178,651237);
INSERT INTO users(uname,upass,phone,qq) VALUE("王五","223344",13665764178,674577);


SELECT * FROM users;


-- 调整表字段
-- 修改表名
-- ALTER TABLE 旧表名 RENAME AS 新表名;
ALTER TABLE users RENAME AS user_info;

SELECT * FROM user_info;

-- 增加字段
-- ALTER TABLE 表名 ADD 字段名 INT(3) 其它参数;
ALTER TABLE user_info ADD age INT(3);

-- 修改字段(了解)
-- ALTER TABLE 表名 CHANGE 老字段名 新字段名 INT(4);
ALTER TABLE user_info CHANGE aeg age INT(4);

-- 删除表字段
-- ALTER TABLE 表名 DROP 字段名;
ALTER TABLE user_info DROP age;



--  主外键
--  成绩表
-- java的double = mysql DOUBLE
-- DOUBLE(m,d) m总个数  d小数位   99.5 100.0
CREATE TABLE grade(
	id       INT(11) PRIMARY KEY AUTO_INCREMENT, #主键
	english  DOUBLE(3,1)
)
INSERT INTO grade(english) VALUE(100.0);
SELECT * FROM grade;


DROP TABLE grade;
--  以上操作 会导致100.0分存不进去   m-d=2 小数点前面只能放两位
--  主外键
-- Java Date() = Mysql DATE
-- mysql 有两种放时间的方式
	-- DATE 年月日
	-- DATETIME 年月日加时分秒
CREATE TABLE grade(
	id         INT(11) PRIMARY KEY AUTO_INCREMENT, #主键
	english    DOUBLE(4,1) COMMENT '英语成绩',
	grade_time DATE COMMENT '考试时间',
	user_id    INT(11) NOT NULL COMMENT 'users表的主键' #外键
)
/**
主键:是唯一标识符的一条数据,不能重复,不允许为空,用来保证数据完整性。
外键:指的是另一个表的主键,外键可以重复,也可以是空值,是用来建立两表之间联系的。
*/

-- 创建主外键约束 在数据库里面让两个表的两个字段产生关联
-- 为什么要做主外键约束
-- 1、避免产生垃圾数据

-- ALTER TABLE 成绩表 ADD CONSTRAINT 外键名(自己定义) FOREIGN KEY(成绩表的外键名) REFERENCES 用户表(用户表的主键);
ALTER TABLE grade ADD CONSTRAINT fk_users_grade FOREIGN KEY(user_id) REFERENCES users(id);
-- 删除主外键约束
ALTER TABLE grade DROP FOREIGN KEY fk_users_grade;


INSERT INTO grade(english,grade_time,user_id) VALUE(70.0,"2022-11-29",7);
INSERT INTO grade(english,grade_time) VALUE(70.0,"2022-11-29");
INSERT INTO grade(english,grade_time,user_id) VALUE(70.0,"2022-11-29",2);
INSERT INTO grade(english,grade_time,user_id) VALUE(58.0,"2022-11-29",1);
SELECT * FROM grade;
SELECT * FROM users;

-- 修改成绩
-- UPDATE 表名 SET 字段名 = 值;
-- 修改大多数情况都要加上WHERE条件
UPDATE grade SET english = 90.0 WHERE user_id = 1;

-- 删除成绩
-- DELETE FROM 表名 WHERE 字段 = 值;
DELETE FROM grade WHERE user_id = 1;
DELETE FROM grade WHERE id = 2; -- 用成绩的主键id删除


 

最后修改于 2022-11-29 19:13:30
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇