create table student(  sid varchar(50),
sname varchar(50),
sage varchar(50),
ssex varchar(50)
); insert into student( sid,sname,sage,ssex ) values('','zhaolei','1990-01-01','nan'); insert into student values('','qiandian','1990-12-21','nan');
insert into student values('','sunfeng','1990-05-20','nan');
insert into student values('','liyun','1990-08-06','nan'); insert into student values('','zhoumei','1991-12-01','nv'),
('','wulan','1992-03-01','nv'),
('','zhenzu','1989-07-01','nv'),
('','wangju','1990-01-20','nv'); select * from student; select sid,sname,sage,ssex from student; select sid,sname,ssex from student; ============================================================================================= 1、修改表名 语法格式:alter table 旧表名 rename [to] 新表名; 注释:修改后example1表就不存在了,只存在名为user的新表,但是其内容是一致的,只是换了个名称. alter table student rename to sww; select * from student; select * from sww; alter table sww rename to student; =====================================================================================================
2、修改字段名 语法格式:alter table 表名 change 旧属性名 新属性名 新数据类型; 注释:新数据类型指修改后的数据类型,如不需要修改,则将新数据类型设置成与原来一样 alter table student change sname sww varchar(50); select * from student; alter table student change sww sname varchar(50); ============================================================================================== 3、修改字段的数据类型 语法格式:alter table 表名 modify 属性名 数据类型; 注释:表名指所要修改数据类型的字段的表的名称; 属性名指:所要修改数据类型字段的名称; 数据类型指:修改后的新的数据类型 =========================================================================================================
4、修改字段的排列位置 语法格式:alter table 表名 modify 属性名1 数据类型 first|after 属性名2; alter table student modify sage varchar(50) first; select * from student; alter table student modify sage varchar(50) after sname; ====================================================================================== 5、增加字段 语法格式:alter table 表名 add 属性名1 数据类型 [完整性约束条件] [first | after 属性名2]; 完整性约束条件:是可选参数,用来设置新增字段的完整性约束条件 first:是可选参数,其作用是将新增字段设置为表的第一个字的 after:是可选参数,其作用是将新增字段添加到“属性名2”所指的字段后 如果执行的SQL语句中没有“first”或者“after 属性名2”参数指定新增字段的位置,则新增字段默认为表的最后一个字段 alter table student add saddress varchar(50) after ssex; select * from student; ============================================================================================================== 6、删除字段 删除字段是删除表中已经定义好的表中的某个字段,删除后其字段所属的数据都会被删除 语法格式:alter table 表名 drop 属性名; alter table student drop saddress; select * from student; ========================================================================================================== select * from student; select * from student where sid in('','','',''); select * from student where sid not in('','','',''); select * from student where sid > 4; select * from student where sid != 4; select * from student where sid between 4 and 6; select * from student where sid not between 4 and 6; select * from student where sname like '%n%'; select * from student where sname not like '%n%'; ===================================================================================================== select * from student; select * from student order by sid desc; select count(*) from student; select sum(sid) from student; select avg(sid) from student; select max(sid) from student; select min(sid) from student; select count(*) from student group by ssex; select sid as a, sname as b,sage as c, ssex as d from student; select * from student limit 3; select * from student limit 1,2; ====================================================================================
增加一个字段,插入数据,并更改数据 alter table student add saddress varchar(50) after ssex; select * from student; update student set saddress = 'jiangsu' where sid = '';
update student set saddress = 'jiangsu' where sid = ''; update student set saddress = 'shanghai' where sid = '';
update student set saddress = 'shanghai' where sid = '';
update student set saddress = 'shanghai' where sid = ''; update student set saddress = 'beijing' where sid = '';
update student set saddress = 'beijing' where sid = ''; update student set saddress = 'anhui' where sid = ''; insert into student ( sid,sname,sage,ssex ) values ('','shenweiwei','1989-10-18','nan'); update student set saddress = 'jiangsu' where sid = ''; 一、将查询结果插入到表中 insert语句可以将一个表中查询到的数据插入到另外一个表中 语法格式: insert into 表名1 (属性列表1) select 属性列表2 from 表名2 where 条件表达式; 表名1说明记录插入到哪个表中; 表名2表示记录是从哪个表中查询出来的; 属性列表1参数表示为哪些字段赋值; 属性列表2表示从表中查询出哪些字段的数据; 条件表达式参数设置了select语句的查询条件; 注意:使用这种方法时,必须保证属性列表1和属性列表2中的字段个数是一样的,而且每个对应字段的数据类型必须是一样的。 create table student2( sid varchar(50),
sname varchar(50),
sage varchar(50),
ssex varchar(50),
saddress varchar(50)
); select * from student2;
delete from student2;
insert into student2 ( sid,sname,sage,ssex,saddress ) values ('','fenglili2','1988-09-18','nv','jiangsu');
insert into student2 ( sid,sname,sage,ssex,saddress ) values ('','fenglili3','1988-08-18','nv','jiangsu');
insert into student2 ( sid,sname,sage,ssex,saddress ) values ('','fenglili4','1988-07-18','nv','shanghai'); insert into student ( sid,sname,sage,ssex,saddress ) values ('','fenglili2','1988-09-18','nv','jiangsu');
insert into student ( sid,sname,sage,ssex,saddress ) values ('','fenglili3','1988-08-18','nv','jiangsu');
insert into student ( sid,sname,sage,ssex,saddress ) values ('','fenglili4','1988-07-18','nv','shanghai');
delete from student where sid in('','','');
select * from student; insert into student(sid,sname,sage,ssex) select sid,sname,sage,ssex from student2 where sid = ''; select * from student; insert into student(sid,sname,sage,ssex,saddress) select sid,sname,sage,ssex,saddress from student2 where sid in ('',''); select * from student; update student set saddress = 'jiangsu' where saddress is null; select * from student; ================================================================================================================================
一、基本查询语句 select的基本语法格式如下: select 属性列表 from 表名和视图列表 [ where 条件表达式1 ] [ group by 属性名1 [ having 条件表达式2 ] ] [ order by 属性名2 [ asc | desc ] ] 属性列表参数表示需要查询的字段名; 表名和视图列表参数表示从此处指定的表或者视图中查询数据,表和视图可以有多个; 条件表达式1参数指定查询条件; 属性名1参数指按照该字段的数据进行分组; 条件表达式2参数满足该表达式的数据才能输出; 属性名2参数指按照该字段中的数据进行排序;排序方式由asc和desc这两个参数指出; asc参数表示升序,这是默认参数,desc表示降序;(升序表示从小到大) 对记录没有指定是asc或者desc,默认情况下是asc; 如果有where子句,就按照“条件表达式1”指定的条件进行查询;如果没有where子句,就查询所有记录; 如果有group by子句,就按照“属性名1”指定的字段进行分组,如果group by后面带having关键字,那么只有 满足“条件表达式2”中知道的条件才能输出。group by子句通常和count()、sum()等聚合函数一起使用; 如果有order by子句,就按照“属性名2”指定的字段进行排序,排序方式由asc和desc两个参数指出;默认情况下是asc; 查询结果不重复:distinct 关键字 select * from student; select distinct ssex from student; select distinct saddress from student; 分组查询: select * from student group by ssex; select * from student group by saddress; group by 关键字与group_concat()函数一起使用,每个分组中指定字段值都显示出来: select ssex,GROUP_CONCAT(ssex) from student group by ssex;
select ssex,GROUP_CONCAT(sname) from student group by ssex;
select saddress,GROUP_CONCAT(sname) from student group by saddress; group by 关键字与集合函数一起使用: select ssex,count(ssex) from student group by ssex; select saddress,count(saddress) from student group by saddress; group by 关键字与"having 条件表达式"一起使用,可以限制输出结果,只有满足条件表达式的结果才会显示: select ssex,count(ssex) from student group by ssex;
select ssex,count(ssex) from student group by ssex having count(ssex) >6; select saddress,count(saddress) from student group by saddress;
select saddress,count(saddress) from student group by saddress having count(saddress) >3; 注意:“having 表达式” 与 "where 表达式"都是用来限制显示的,但是两者起作用的地方不一样; "where 表达式"用于表或者视图,是表和视图的查询条件; “having 表达式”作用于分组后的记录,用于选择满足条件的分组。 group by 关键字与 with rollup 一起使用,会在所有记录的最后加上一条记录,这条记录是上面所有记录的总和。 select ssex,count(ssex) from student group by ssex;
select ssex,count(ssex) from student group by ssex with rollup; select saddress,count(saddress) from student group by saddress;
select saddress,count(saddress) from student group by saddress with rollup; select * from student; select * from student limit 4;
select * from student limit 1,5; ======================================================================================================= create table score ( xh int(50),
km varchar(50),
cj int(50)
); select * from score; insert into score values(1,'shuxue',80);
insert into score values(1,'yuwen',70);
insert into score values(1,'yingyu',40); insert into score values(2,'shuxue',40);
insert into score values(2,'yuwen',60);
insert into score values(2,'yingyu',50); insert into score values(3,'shuxue',60);
insert into score values(3,'yuwen',20);
insert into score values(3,'yingyu',90); insert into score values(4,'shuxue',50);
insert into score values(4,'yuwen',60);
insert into score values(4,'yingyu',70); select xh,sum(cj) from score where xh = 1; 查询此同学的总成绩;
select xh,sum(cj) from score where xh = 4; select xh,sum(cj) from score group by xh; 查询每一个同学的各科总和成绩; select km,max(cj) from score group by km; 查询各个科目的最高成绩; select km,avg(cj) from score group by km; 查询每一科目的平均成绩; select km,max(cj) from score group by km; 查询每一科目的最高成绩; select km,min(cj) from score group by km; 查询每一科目的最低成绩;
======================================================================================================================= create table employee ( num int(50),
d_id int(50),
name varchar(50),
age int(50),
sex varchar(50),
homeadd varchar(50)
); insert into employee values(1,1001,'zhangsan',26,'nan','beijing');
insert into employee values(2,1001,'lisi',24,'nv','hunan');
insert into employee values(3,1002,'wangwu',25,'nan','jiangsu');
insert into employee values(4,1004,'aric',15,'nan','yingguo'); select * from employee; create table department ( d_id int(50),
d_name varchar(50),
functione varchar(50),
address varchar(50)
); insert into department values(1001,'keyanbu','yanfachanpin','3lou5hao');
insert into department values(1002,'shengchanbu','shengchanchanp','5louyiceng');
insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating'); select * from department; select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id; 内连接查询:可以查询两个或者两个以上的表,当两个表中存在表示相同意义的字段时,可以通过该字段来连接这两个表; 当该字段的值相等时,就查询出该记录。 ====================================================================================================================== 外连接查询:可以查询两个或者两个以上的表,外连接查询也需要通过指定字段来进行连。 当该字段取值相等时,可以查询出该记。 而且该字段取值不相等的记录也可以查询出来。 外连接包括:左连接、右连接 语法: select 属性列表 from 表名1 left | right join 表名2 on 表名1.属性名1 = 表名2.属性名2; 属性列表表示要查询的字段的名称,这些字段可以来自不同的表; Left表示左连接查询; rigth表示右连接查询; on后面接的是连接的条件; 1、左连接查询 进行左连接查询时,可以查询出表名1所指的表中的所有记录。而表名2所指的表中,只能查询出匹配的记录 select * from employee;
select * from department; select num,name,employee.d_id,age,sex,d_name,functione from employee left join department on employee.d_id = department.d_id; 2、右连接查询 进行右连接查询时,可以查询出表名2所指的表中的所有记录。而表名1所指的表中,只能查询出匹配的记录 select * from employee;
select * from department; select num,name,employee.d_id,age,sex,d_name,functione from employee right join department on employee.d_id = department.d_id; 复合条件查询 在连接查询时,通过增加其他的限制条件,可以使查询结果更加准确 select * from employee;
select * from department; select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id; select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id and age > 24; select num,name,employee.d_id,age,sex,d_name,functione from employee,department where employee.d_id = department.d_id order by age asc; select 语句先按照内连接的方式从employee和department表中查询出数据。然后查询结果按照age字段从小到大的顺序进行排序。 ================================================================================================================================================= 子查询 子查询是将一个查询语句嵌套在另外一个查询语句中,内层查询语句的查询结果,可以作为外来层查询语句提供查询条件。 1、带in关键词的子查询 select * from employee;
select * from department; select * from employee where d_id in (select d_id from department ); select * from employee where d_id not in (select d_id from department ); 2、带exists关键字的子查询 exists关键字表示存在,使用exists关键字时,内层查询语句不用返回查询的记录。而是返回一个真假值。 如果内层查询语句查询到满足条件的记录,就返回一个真值(true);否则,返回一个假值(false); 当返回值为true时,外层查询语句将进行查询;而返回false时,外层查询语句不进行查询或者查询不出任何记录。 select * from employee;
select * from department; select * from employee where exists (select d_name from department where d_id = 1003); select * from employee where exists (select d_name from department where d_id = 1004); exists关键字可以与其他查询条件一起使用。条件表达式与exists关键字之间用and或者or来连接。 select * from employee where age > 24 and exists (select d_name from department where d_id = 1003); select * from employee where age > 24 and exists (select d_name from department where d_id = 1004); not exists与exists相反。 select * from employee where age > 24 and not exists (select d_name from department where d_id = 1003); select * from employee where age > 24 and not exists (select d_name from department where d_id = 1004); 3、带比较运算符的子查询 create table schoarship ( levela int(50),
score int(50)
); insert into schoarship(levela,score) values(1,90);
insert into schoarship values(2,80);
insert into schoarship values(3,70); select * from schoarship; create table computer_stu ( id int(50),
name varchar(50),
score int(50)
); insert into computer_stu(id,name,score) values (1001,'lily',85); insert into computer_stu(id,name,score) values (1002,'tom',91),
(1003,'jim',87),
(1004,'aric',77),
(1005,'lucy',65),
(1006,'andy',99),
(1007,'ada',85),
(1008,'jeck',70); select * from computer_stu; select id,name,score from computer_stu where score >= (select score from schoarship where levela = 1); /* 查询获得一等奖学金的学生有哪些,第一个表为奖学金等级和最低分数*/ select d_id,d_name from department where d_id != (select d_id from employee where age = 24); /*只有生产部和销售部没有年龄等于24岁的员工*/ 4、带any关键字的子查询 any关键字表示满足其中任何一个条件。使用any关键字时,只要满足内查询语句返回的结果中的任何一个,就可以通过该条件来执行外层查询语句 select * from computer_stu where score >= any ( select score from schoarship ); /*结果显示,有7个人获得奖学金,只有id为1005的人没有,因为分数为65,不高于奖学金指定最低分数的任何一个*/ 5、带all关键字的子查询 all关键字表示满足所有条件。使用all关键字时,只有满足内层查询语句返回的所有结果,才可以执行外层查询语句。 select * from computer_stu where score >= all ( select score from schoarship ); /*结果显示,只有两个人获得奖学金。因为这两个人的分数比所有奖学金要求的分数都高*/ ============================================================================================================================
合并查询结果 合并查询结果 是将多个select语句的查询结果合并到一起 union关键字,数据库会将所有的查询结果合并到一起,然后除掉相同的记录; union all关键字,只是简单的合并到一起 select d_id from department; select d_id from employee; select d_id from department union select d_id from employee; select d_id from department union all select d_id from employee; ===================================================================================================================== 为表和字段取别名 1、语法:表名 表的别名 select * from department d where d.d_id = 1001; 2、语法:属性名 [as] 别名 select d_id as department_id,d_name department_name from department; 数据库中,可以同时为表和字段取别名 select d_id as department_id,d_name department_name,d.functione,d.address from department d where d.d_id = 1001; =================================================================================================================================

mysql——前面内容——前期整理笔记00的更多相关文章

  1. mysql——触发器——前期整理笔记00

    一.触发器 触发器是由事件来出发某个动作.这些事件包括insert语句.update语句和delete语句. 当数据库系统执行这些事件时,就会激活触发器执行相应得动作. 触发器是有insert.upd ...

  2. Mysql又一次整理笔记--woods备忘

    ==============================SQL备忘 CRUD 查询 多表 事件等=============================== ------------------ ...

  3. mysql 索引优化知识整理笔记

    http://blog.csdn.net/zhxp_870516/article/details/8434539 http://www.jb51.net/article/49346.htm https ...

  4. mysql 5.7压缩包安装笔记

    转载请注明出处http://www.cnblogs.com/havedream/p/5075263.html 重装系统之后准备安装mysql,看到官网上有mysql 5.7.10可以下载就点了,然后就 ...

  5. (转)Mysql数据库主从心得整理

    Mysql数据库主从心得整理 原文:http://blog.sae.sina.com.cn/archives/4666 管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本 ...

  6. MySql命令,吐血整理的Mysql,实话,真的吐血

    MySql命令,吐血整理的Mysql,实话,真的吐血 1.基本操作 2.数据库操作 3.表的操作 4.数据操作 5.字符集编码 6.数据类型(列类型) 7.列属性(列约束) 8.建表规范 9.SELE ...

  7. canvas学习之API整理笔记(二)

    前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...

  8. MySQL隐式转化整理

    MySQL隐式转化整理 前几天在微博上看到一篇文章:价值百万的 MySQL 的隐式类型转换感觉写的很不错,再加上自己之前也对MySQL的隐式转化这边并不是很清楚,所以就顺势整理了一下.希望对大家有所帮 ...

  9. xmpp整理笔记:发送图片信息和声音信息

    图片和音频文件发送的基本思路就是: 先将图片转化成二进制文件,然后将二进制文件进行base64编码,编码后成字符串.在即将发送的message内添加一个子节点,节点的stringValue(节点的值) ...

随机推荐

  1. 解决Iview 中 input 无法监听 enter 事件

    比如 我们想要在某个组件的根元素监听一个原生事件 可以使用 .native 修饰 v-on 例子: 这样子写 enter事件将无效 但是使用 .native 修饰 就可以监听到 enter事件啦.

  2. JavaScript RegExp ——对象,语法,修饰符,方括号,元字符,量词,对象方法,对象属性

    ㈠RegExp 对象 正则表达式是描述字符模式的对象. 正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具. ㈡语法 var patt=new RegExp(pattern,m ...

  3. C# 2.0

    序言 泛型 为什么需要泛型? 分部类型 分部类和方法 partial 匿名方法 使用Delegate的时候很多时候没必要使用一个普通的方法,因为这个方法只有这个Delegate会用,并且只用一次,这时 ...

  4. HTML+CSS知识总结1

    一.浏览器页面页面由结构层(html)表现层(css)行为层(js)组成 二.DOCTYPE作用是用来告知浏览器以何种模式渲染文档. 三.严格模式是指浏览器按照W3C标准解析代码,混杂模式又称怪异模式 ...

  5. Nowcoder Two Graphs ( 图的同构 )

    题目链接 题意 : 给出两幅顶点数一样的图 G1.G2 ,现在要求在 G2 中选出一些边集.使之构成一幅新的图 G ,要求 G 要与 G1 同构,现在要你统计合法的 G 有多少种 分析 :  图的同构 ...

  6. javascript中的原型和原型链(四)

    new运算符工作原理

  7. 我不熟悉的string类

    我不常用的string函数 多的不说,直接上: assign函数 string& assign(const char *s); //把字符串s赋给当前的字符串 string& assi ...

  8. HDU 6136 Death Podracing (堆)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6136 题解 完了,普及题都不会做了... 发现一个重要性质是只有相邻的人才会相撞,于是直接拿堆维护即可 ...

  9. RabbitMQ消费端限流策略(十)

    消费端限流: 什么是消费端限流? 场景: 我们RabbitMQ服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么 ...

  10. 论文阅读Graph Convolutional Matrix Completion

    摘要:我们从链路预测的视角考虑推荐系统的matrix completion.像电影评分的交互数据可以表示为一个user-item的二分图,其中的edge表示观测到的评分.这种表示是特别有用的在额外的基 ...