数据库 之 mysql学习总结

USE hero
SHOW TABLES
DROP TABLE student;
DROP TABLE project;

SELECT*FROM student;
SELECT *FROM project;
SELECT *FROM table1

DESC student ;
DESC project;
DESC table1

CREATE TABLE table1 LIKE student;
CREATE TABLE table2 AS SELECT *FROM student

添加表字段
ALTER TABLE table1 ADD birth DATE NULL;
添加索引
ALTER TABLE table1 ADD INDEX table1_name(NAME)
添加主键
ALTER TABLE table1 ADD PRIMARY KEY (id);
ALTER TABLE table1 ADD UNIQUE KEY(NAME);
创建分类表
CREATE TABLE hero_class (id INT PRIMARY KEY,NAME VARCHAR (11) NOT NULL);
添加分类id
ALTER TABLE table1 ADD classid INT 
添加外键约束
ALTER TABLE table1 ADD FOREIGN KEY fk_table1_heroclass_id(classid) REFERENCES hero_class(id)

修改表字段名称
ALTER TABLE table1 CHANGE NAME heroname VARCHAR(10)
修改表字段类型,注意兼容性和精度
ALTER TABLE table1 MODIFY heroname VARCHAR(20)

备份,恢复
dos 命令下进行
DROP DATABASE hero
SHOW DATABASES 
备份数据库
mysqldump -uroot -p123456 --DATABASE hero> d:\hero.sql
恢复数据库
mysql -uroot -p123456<d:\hero.sql


插入数据
INSERT INTO table1 (id,heroname)VALUES(1,'吴用');
INSERT INTO table1 (id,heroname)VALUES(2,'宋江');
INSERT INTO project(pid,pname,tijiaoren)VALUES(11,'项目53',5),(12,'项目54',5);

SELECT *FROM student;
SELECT *FROM project;
SELECT *FROM table1;

一次插入多个值
INSERT INTO table1(id,heroname)VALUES(3,'ff'),(4,'hh');


创建项目数据
学生
CREATE TABLE student(id INT NOT NULL PRIMARY KEY,NAME VARCHAR(11) NOT NULL UNIQUE KEY);
INSERT INTO student(id,NAME)VALUES(1,'学生1');
INSERT INTO student(id,NAME)VALUES(2,'学生2');
INSERT INTO student(id,NAME)VALUES(3,'学生3');
INSERT INTO student(id,NAME)VALUES(4,'学生4');
INSERT INTO student(id,NAME)VALUES(5,'学生5');
项目
CREATE TABLE project(pid INT NOT NULL PRIMARY KEY,pname VARCHAR(11)NOT NULL UNIQUE KEY,
pdesc VARCHAR(11) NULL ,tijiaoren INT)
INSERT INTO project(pid,pname,tijiaoren)VALUES(1,'项目11',1);
INSERT INTO project(pid,pname,tijiaoren)VALUES(2,'项目12',1);
INSERT INTO project(pid,pname,tijiaoren)VALUES(3,'项目21',2);
INSERT INTO project(pid,pname,tijiaoren)VALUES(4,'项目22',2);
INSERT INTO project(pid,pname,tijiaoren)VALUES(5,'项目31',3);
INSERT INTO project(pid,pname,tijiaoren)VALUES(6,'项目32',3);
INSERT INTO project(pid,pname,tijiaoren)VALUES(7,'项目41',4);
INSERT INTO project(pid,pname,tijiaoren)VALUES(8,'项目42',4);
INSERT INTO project(pid,pname,tijiaoren)VALUES(9,'项目51',5);
INSERT INTO project(pid,pname,tijiaoren)VALUES(10,'项目52',5);

ALTER TABLE project ADD lixiang VARCHAR(11)DEFAULT '否'
SHOW TABLES
 
创建两张表的关系,添加外键
ALTER TABLE project ADD FOREIGN KEY fk_project_student(tijiaoren) REFERENCES student(id);
 
查询学生3提交的项目
SELECT pid,pname,tijiaoren FROM project
WHERE tijiaoren=3;
统计每个学生提交了几个项目
SELECT tijiaoren,COUNT(*) FROM project
GROUP BY tijiaoren 
统计项目少于三个的学生
SELECT tijiaoren ,COUNT(*)FROM project
GROUP BY tijiaoren
HAVING COUNT(*)<3

按照学生编号从小到大显示项目
SELECT pname FROM project
ORDER BY tijiaoren DESC
从小到大排序
SELECT pname FROM project
ORDER BY tijiaoren ASC LIMIT 3

拼接字符串
SELECT CONCAT('aa','bb') FROM DUAL;


日期
SELECT NOW() FROM DUAL
SELECT SYSDATE() FROM DUAL;
SELECT YEAR(SYSDATE())FROM DUAL;
SELECT MONTH(SYSDATE())FROM DUAL;
SELECT DAY(SYSDATE())FROM DUAL;


SELECT MAX(pid),MIN(pid)FROM project;

内连接
SELECT *FROM student,project WHERE project.tijiaoren=student.id;

表的别名
SELECT *FROM project a,student b WHERE a.tijiaoren=b.id;
SHOW TABLES 

CREATE TABLE tba(a1 INT,a2 INT);
CREATE TABLE tbb(b1 INT,b2 INT);
 
INSERT INTO tba(a1,a2)VALUES(1,2),(1,4);
INSERT INTO tbb(b1,b2)VALUES(3,2),(1,2);

 SELECT*FROM tba; 
 笛卡尔积
 SELECT * FROM tba,tbb
 内连接
 SELECT *FROM tba INNER JOIN tbb ON tba.a1=tbb.b1;
 左连接
 SELECT *FROM tba LEFT JOIN tbb ON tba.a1=tbb.b1;
 右连接
 SELECT *FROM tba RIGHT JOIN tbb ON tba.a1=tbb.b1;
 
 
 根据学生名字查询对应的项目
 SELECT *FROM student,project WHERE student.id=project.tijiaoren AND student.name LIKE '%3%'
 使用子查询
 SELECT *FROM project WHERE tijiaoren IN(SELECT id FROM student WHERE NAME LIKE '%3%')
 子查询作为操作数
 SELECT(SELECT id FROM student  WHERE id=1)FROM DUAL
 子查询作为条件
 SELECT * FROM project WHERE tijiaoren>(SELECT 2 FROM DUAL)
 SELECT *FROM project WHERE tijiaoren>ANY(SELECT id FROM student WHERE id>3)
 SELECT *FROM project WHERE tijiaoren>ALL(SELECT id FROM student WHERE id>3)
 多列比较
 SELECT (3,2)<(3,4)FROM DUAL 
 
 
 
 修改数据
 UPDATE project SET lixiang='是'WHERE MOD(pid,2)=0;
 SELECT *FROM project ;
 更改五以内的项目内容pname+pid
 SELECT CONCAT(pname,CAST(pid AS CHAR))FROM project
 UPDATE project SET pdesc=CONCAT(pname,CAST(pid AS CHAR))WHERE pid<6 
 更改多行
 UPDATE project SET pdesc='123',pname=CONCAT(pname,'123')WHERE pid BETWEEN 7 AND 9;
 
 
 

猜你喜欢

转载自blog.csdn.net/fnwibwj/article/details/81453051