2021-01-08

2020  1  08

# 创建一个表的sql语句

CREATE TABLE IF NOT EXISTS `eee`(
    `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
    `name` VARCHAR(39) NOT NULL DEFAULT ' 匿名' COMMENT '姓名',
    `pwd` VARCHAR(33) NOT NULL DEFAULT  '123456' COMMENT '密码',
    `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
    `birthday` VARCHAR(33) NOT NULL DEFAULT '没生日' COMMENT '出生日期',
    `address` VARCHAR(44) NOT NULL DEFAULT '山东' COMMENT '家庭住址',
    `email` VARBINARY(55) NOT NULL DEFAULT '网易邮箱' COMMENT '你夫人邮箱',
    PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- primary key为主键,一般一个表只有一个

 

=============================================================================================================================

外键的用法

CREATE TABLE `grade`(
    `gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年纪id',
    `gradename` VARCHAR(50) NOT NULL COMMENT '年纪名称',
    PRIMARY KEY (`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

-- 学生表的gradeid引用grade 的gradeid
-- 定义外键key
-- 给这个外键添加约束(执行引用)
CREATE TABLE IF NOT EXISTS `student`(
    `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
    `name` VARCHAR(39) NOT NULL DEFAULT ' 匿名' COMMENT '姓名',
    `pwd` VARCHAR(33) NOT NULL DEFAULT  '123456' COMMENT '密码',
    `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
    `birthday` VARCHAR(33) NOT NULL DEFAULT '没生日' COMMENT '出生日期',
    `gradeid` INT(10) NOT NULL COMMENT '出生日期',
    `address` VARCHAR(44) NOT NULL DEFAULT '山东' COMMENT '家庭住址',
    `email` VARBINARY(55) NOT NULL DEFAULT '网易邮箱' COMMENT '你夫人邮箱',
    PRIMARY KEY(`id`),
    KEY `FK_gradeid` (`gradeid`) ,
    CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- primary key为主键,一般一个表只有一个

外键的用法2

-- 创建表的时候,没有外键关系
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);

======================================================================================================================================

数据库的增改查


-- primary key为主键,一般一个表只有一个
-- 创建表的时候,没有外键关系
-- alter table `student`
-- add constraint `FK_gradeid` foreign key(`gradeid`) references `grade`(`gradeid`);
-- 插入语句
INSERT INTO `grade`(gradename) VALUES('大四')
-- 由于主键自增,我们可以省略
-- 插入语句,数据和字段一一对应!!!
INSERT INTO `grade` VALUES('大五')
-- 插入多个字段
INSERT INTO `grade`(`gradename`) VALUES('大一'),('大二'),('大三')
INSERT INTO `student`(`name`,`gradeid`) VALUES ('张三','7')
INSERT INTO `student`(`name`,`gradeid`,`pwd`) VALUES ('宋志远','7','的日日')
INSERT INTO `student`(`name`,`gradeid`,`pwd`,`sex`) VALUES ('宋志远','7','的日日','男')
-- 修改表,update
-- 格式:update 表名 set 字段名='' where 条件
UPDATE `student` SET `name`='林彪' WHERE id=1;
UPDATE `student` SET `name`='白崇禧' WHERE id=3;
-- 修改多个字段
UPDATE `student` SET `name`='白崇禧',`email`='233223334@344.com' WHERE id=2;
-- where条件
-- 通过多个条件的定位数据
-- 具体语法:
UPDATE `student` SET `email`='2343の顶顶顶顶@33' WHERE `email`= '233223334@344.com';
-- 删除数据
DELETE FROM `student` WHERE id=1;
-- 完全清空一个数据库表,表的结构和索引约束不会变
TRUNCATE `student`;
-- delete与truncate区别
-- 相同点:都能删除数据,都不会删除表的结构
-- 不同:
    -- truncate  重新设置自增列,计数器会归零
    -- truncate  不会影响事务()
-- 测试delete与truncate的区别
CREATE TABLE `test`(
    `id` INT(4) NOT NULL AUTO_INCREMENT,
    `coll` VARCHAR(20) NOT NULL,
    PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO `test`(`coll`) VALUES ('你大爷'),('他大爷'),('我大爷')
DELETE FROM `test`;  -- 不会影响自增
TRUNCATE `test`; -- 自增会归零

=============================================================================================

查询

-- 查询有些同学参加了考试,成绩

SELECT * FROM result
-- 发现重复数据,去重
SELECT DISTINCT `studentno` FROM result
-- 查看系统版本(函数)
SELECT VERSION()
-- 计算结果
SELECT 100*2-1 AS 计算结果
-- 设置自增的步chang
SELECT @@auto_increment_inycrement --查询自增的步长
-- 数据库的列(表达式)
-- 学员考试成绩+1,查看
-- where条件操作符
-- 作用:
-- ===================================================
-- 查询成绩在95-100之间的
--
SELECT studentNo,`StudentResult` FROM result
WHERE studentresult>=3 && studentresult<=10
-- ========================================================
-- 模糊查询(区间)
SELECT studentNo,`studentresult` FROM result
WHERE studentresult BETWEEN 3 AND 4
-- ============================================================
-- 除了1000号学生之外的同学的成绩
SELECT studentno,`studentresult` FROM result
WHERE studentno=1000

===================================================================================================

--
SELECT studentNo,`StudentResult` FROM result
WHERE studentresult>=3 && studentresult<=10
-- ========================================================
-- 模糊查询(区间)
SELECT studentNo,`studentresult` FROM result
WHERE studentresult BETWEEN 3 AND 4
-- ============================================================

 


-- 除了1000号学生之外的同学的成绩
SELECT studentno,`studentresult` FROM result
WHERE studentno=1000
-- 查询姓刘的同学,名字后面只有一个字的
SELECT `StudentNo`,`studentname` FROM `student`
WHERE studentname LIKE '刘'
-- 查询名字中间有嘉字的
SELECT `studentno`, `studentname` FROM `student`
WHERE studentname LIKE '%空%'
-- =======  in   =========================================、、
-- 查询1001,1002号学员
SELECT `studentno`,`studentname` FROM `student`
WHERE studentno IN (111,3344,44);
-- 查询在北京学生
SELECT `studentno`,`studentname` FROM `student`
WHERE `Address` IN('北京');
-- =============null not null ===================================================
SELECT `studentno`,`studentname` FROM `student`
WHERE address = '' OR  address IS NULL
-- 查询有出生日期同学,不为空
SELECT `studentno`,`studentname` FROM `student`
WHERE `studentno` IS NOT NULL
SELECT  `studentname`,`studentno` FROM `student`
WHERE studentno IN (33344,5,5)
-- ===============================================================================
SELECT s.studentno,studentname,subjectno,studentresult
FROM student AS s
INNER JOIN result AS r
ON s.studentno = r.studentno
-- =======右连接 ===========================================================================
SELECT s.studentno,studentname,subjectno,studentresult
FROM student AS s
RIGHT JOIN result AS r
ON s.studentno=r.studentno
-- =======左连接=====================================================================================
SELECT s.studentno,studentname,subjectno,studentresult
FROM student AS s
LEFT JOIN result AS r
ON s.studentno=r.studentno
--  分析需求,分析查询的字段来自哪些表,student result subject(连接查询)
--  确定使用哪种连接查询
--  确定交叉点(这两个表那个数据是相同的)
SELECT s.studentno,studentname,subjectname,`Studentresult`
FROM student s
RIGHT JOIN result r
ON r.studentno = s.studentno
INNER JOIN `subject` sub
ON r.subjectno = sub.subjectNo
-- 我要查询哪些数据 select 。。。
-- 从那几个表from 表 XXX Join 链接的表 on 交叉条件
-- 左连接:left_join():以左边的表为主
-- 右连接:right_join():以右边的表为主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值