MySQL的基本语法

1.修改表

1.创建数据库
create database 数据库名
2.查看数据库列表
show database
3.选择数据库
use 数据库名
4.删除是数据库
drop database 数据库名
5.查看表是否存在
use 数据库名 show tables;
6.查看表定义
describe 表名;
或
desc 表名

例:USE myschool;
DESCRIBE `student`;
7.删除表
DROP TABLE [IF  EXISTS] 表名;
在删除表之前,先使用IF EXISTS语句验证表是否存在
USE myschool;
DROP TABLE IF EXISTS `student`;
8.设置表的存储引擎
CREATE TABLE 表名(
    #省略代码
)ENGINE=存储引擎;:CREATE TABLE `myisam` (
   id  INT(4)
  )ENGINE=MyISAM;
9.MySQL系统帮助
help 查询内容  例:HELP contents;

在这里插入图片描述

在这里插入图片描述

USE myscool;
create table test(
test1 int,
test2 int
);

修改表的名称
ALTER TABLE test RENAME test1
数据表添加列
ALTER TABLE test1 ADD test3 VARCHAR(200);
修改列信息
ALTER TABLE test1 CHANGE test3 test4 DOUBLE
删除列
ALTER TABLE test1 DROP test4;

2.添加主键

在这里插入图片描述

3.添加外键

在这里插入图片描述

给表添加主键
ALTER TABLE test1 ADD CONSTRAINT pk_test1 PRIMARY KEY test1(test1);
创建一张年级表
CREATE TABLE t_grage(
gradeID INT PRIMARY KEY,
grageName VARCHAR(200)
);
创建外键(创建在你的主表上的)外键表中的关系的列是外键表的主键 所以主外键关系
ALTER TABLE t_student ADD CONSTRAINT t_gradeID
FOREIGN KEY(gradeID)
REFERENCES t_grade(gradeID);

4.DML语句——插入单条数据记录and多条数据计入

在这里插入图片描述
DML语句——插入多条数据记录
在这里插入图片描述
DML语句——将查询结果插入新表
在这里插入图片描述
DML语句——将查询结果插入新表
在这里插入图片描述

插入单条记录(自动增长列,是不需要任何的赋值的操作,根据插入的数据的信息,直接赋值)
INSERT INTO t_student(lodinPWD,studentName,sex,gradeID,phone,address,bornDate,email,ipdentityCard)
VALUES('123','zs','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')

INSERT INTO t_grade VALUES(1.'一年级')
同时插入多条的记录
INSERT INTO t_student(lodinPWD,studentName,sex,gradeID,phone,address,bornDate,email,ipdentityCard)
VALUES
('123','zs','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','l4','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','ww','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','ml','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','sq','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','jb','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','hj','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','xs','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')

赋值表数据
INSERT  INTO test1
SELECT loginpwd,studentName FROM t_studunt
完整的做数据表的备份
CREATE TABLE test2(SELECT * FROM t_student)
更新 把所有人的年级 由1年级 改为5年级
INSERT INTO t_grade VALUES
(2,'二年级'),
(3,'3年级'),
(4,'4年级'),
(5,'5年级'),
(6',6年级'),
(7,'7年级'),
(8,'8年级'),
(9,'9年级');

UPDATE t_student SET grade=5
要求把zs由5改为9年级
UPDATE t_student SET gradeID=9 WHERE studentName='zs'
如果在修改的过程中,不带入任何的修改条件,那么修改则改为全部的数据
如果在修改的过程中,带入了修改的条件,则之修改满足的条件

删除数据
删除表数据
DELETE FROM test2;

删除指定数据
DELETE FROM t_student WHERE studentName='xs'

INSERT INTO t_student(lodinPWD,studentName,sex,gradeID,phone,address,bornDate,email,ipdentityCard)
VALUES('123','xx','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
重置表=收集恢复出厂设置
TRUNCATE TABLE t_student
删除数据可以多用,但是重置数据(不要使用)
删除数据是可以通过日志找回的,因为执行的是SQL语句
重置表不可找回数据,因为执行的是SQL命令

5.LIMIT子句

5.1MySQL查询语句中使用LIMIT子句限制结果集

在这里插入图片描述

limit 分页语句
第一个数字,跳过的行数,第二个数字返回的数据行
SELECT * FROM t_student LIMIT 1,2

5.2聚合函数

在这里插入图片描述

聚合函数 最大,最小,平均,总和 括号里面使用的列数据类型 必须是数字的 不能够是字符串的
最大
SELECT MAX(gradeID) FROM t_grade
最小
SELECT MIN(gradeID) FROM t_grade
平均
SELECT AVG(gradeID) FROM t_grade
总和
SELECT SUM(gradeID) FROM t_grade
总行数
SELECT COUNT(gradeID) FROM t_grade

5.3常用函数—字符串函数

在这里插入图片描述

连接字符串
SELECT CONCAT('M','Y','S','Q','L')
替换指定位置的字符串
SELECT INSERT('今天的天气很好',1,4,'abcdef')
截取字符串
SELECT SUBSTRING('今天的天气很好',2,4)

5.4常用函数—时间日期函数

在这里插入图片描述

日期
SELECT CURTDATE();
时间
SELECT CURTTIME();
时间和日期
SELECT NOW();

SELECT YEAR(DATEDIFF('2019-09-09','2021-09-09')

5.5常用函数–数学和函数

在这里插入图片描述

向下取整
SELECT CEIL(2.3)
向上取整
SELECT FLOOR(2.9)
四舍五入
SELECT ROUND(2.9)
随机数
一段SQL代码
1.定义变量进行数据值得接收
2.使用长度的函数判断当前位数是否是43.如果不满足4位则重新产生
4.满足则使用ROUND直接返回4位数
SELECT RAND()*10000

6.子查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

INSERT   INTO   t_student (loginPwd,studentName,sex,gradeID,phone,address,bornDate,email,identityCard)  
VALUES('123','李斯文','男',9,'12345678910','湖南省',
'2009-09-09','123@qq.com','43010120090909305X')

查看表信息
SELECT  *  FROM  t_student

SELECT  *  FROM  t_student
WHERE  bornDate< '2009-09-09' 

子查询的列就是你的条件列
SELECT  * FROM  t_student
WHERE bornDate <(SELECT  bornDate FROM t_student 
WHERE studentName='李斯文')

Insert插入语句中开始使用子查询的方式
INSERT   INTO   t_student (loginPwd,studentName,sex,gradeID,
phone,address,bornDate,email,identityCard)  
VALUES('123','李佳文','男',
(SELECT   gradeID FROM t_grade WHERE gradeName='9年级'),'12345678910','湖南省',
'2009-09-09','123@qq.com','43010120090909305X');

update 语句中使用子查询
使用到where条件中(行锁定) 编辑成功以后才能够对行的数据进行解锁

解锁以后才能够进行读取操作
UPDATE  t_student  SET  gradeID=4
WHERE bornDate<'2009-09-09'

使用到列的值中
UPDATE  t_student  SET  gradeID=(SELECT    gradeID    FROM   t_grade WHERE gradeName='9年级')
WHERE bornDate<'2009-09-09'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.1IN子查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建成绩表
DROP TABLE t_result;
PRIMARY  KEY 实际上就位唯一列  也就是包含了唯一的约束
逻辑上的主外键关系   从t_student表来看  因为如果把t_student看成主表 
那么关系无法进行搭建
主表里面先有数据,子表里面才能够有
先出成绩 在出人?先有人才有成绩

CREATE    TABLE    t_result(
resultId       INT  AUTO_INCREMENT   PRIMARY  KEY ,
studentNo  INT    NOT NULL,
subjectNo  INT NOT NULL,
examDate   DATETIME   NOT NULL,
studentResult  INT NOT NULL
);

INSERT INTO `t_result` (`studentNo`, `subjectNo`, `examDate`, `studentResult`) VALUES('1','1','2016-02-15 00:00:00','71');
INSERT INTO `t_result` (`studentNo`, `subjectNo`, `examDate`, `studentResult`) VALUES('1','1','2016-02-17 00:00:00','60');
INSERT INTO `t_result` (`studentNo`, `subjectNo`, `examDate`, `studentResult`) VALUES('2','1','2016-02-17 00:00:00','46');
INSERT INTO `t_result` (`studentNo`, `subjectNo`, `examDate`, `studentResult`) VALUES('2','1','2016-02-17 00:00:00','83');
INSERT INTO `t_result` (`studentNo`, `subjectNo`, `examDate`, `studentResult`) VALUES('3','1','2016-02-17 00:00:00','60');
INSERT INTO `t_result` (`studentNo`, `subjectNo`, `examDate`, `studentResult`) VALUES('4','1','2016-02-17 00:00:00','60');
INSERT INTO `t_result` (`studentNo`, `subjectNo`, `examDate`, `studentResult`) VALUES('5','1','2016-02-17 00:00:00','95');
INSERT INTO `t_result` (`studentNo`, `subjectNo`, `examDate`, `studentResult`) VALUES('6','1','2016-02-17 00:00:00','93');

INSERT INTO `t_result` (`studentNo`, `subjectNo`, `examDate`, `studentResult`) VALUES('7','1','2016-02-17 00:00:00','23');

CREATE   TABLE t_subject(
subjectNo    INT   AUTO_INCREMENT   PRIMARY  KEY,
subjectName	VARCHAR(50)
);

INSERT INTO  t_subject(subjectName) VALUES('MYSQL')



表连接
SELECT  t_student.`studentName`, t_result.`examDate`,t_result.`studentResult`,t_subject.`subjectName`
FROM t_student  
INNER JOIN    t_result       ON  t_student.`studentNo`=t_result.`studentNo`
INNER  JOIN t_subject  ON t_result.`subjectNo`=t_subject.`subjectNo`

查询参加过Mysql考试的学生
SELECT * FROM t_student
WHERE studentNo  IN(
SELECT   studentNo FROM t_result 
WHERE subjectNo=
(SELECT subjectNo FROM t_subject WHERE subjectName='MYSQL'))


2 
SELECT * FROM t_student
WHERE studentNo  IN(
SELECT   studentNo FROM t_result 
INNER JOIN    t_subject   ON t_result.`subjectNo`=t_subject.`subjectNo`
WHERE t_subject.`subjectName`='MYSQL')

查询未参加过Mysql考试的学生
SELECT * FROM t_student
WHERE studentNo  NOT IN(
SELECT   studentNo FROM t_result 
WHERE subjectNo=
(SELECT subjectNo FROM t_subject WHERE subjectName='MYSQL'))

7.总结

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值