MySQL

理论知识

修改数据表

1.修改表名

格式:Alter table 旧表名 rename [to] 新表名;

如下:Alter table tb_grade rename to grade;

2.修改字段名

格式:Alter table 表名 change 旧字段名 新字段名 新数据类型;

如下:Alter table grade change name username varchar(20);

3.修改字段的数据类型

格式: Alter table 表名 modify 字段名 数据类型;

如下:Alter table grade modify id int(20);

4.添加字段

  格式:Alter table 表名 add 新字段名 数据类型

如下:Alter table grade add age int(10);

5.删除字段

格式:Alter table 表名 drop 字段名;

如下:Alter table grade drop age;

6.修改字段的排列位置

格式:Alter table 表名 modify 字段名 1 数据类型 first|after 字段名2

如下:Alter table grade modify username varchar(20) first;  //将username,该为表的第一个字             段

Alter table grade modify id int(20) after grade;//将id字段插入到grade字段后面

7.添加数据

格式:Insert into 表名(字段名1,字段名2,….)

values(值1,值2,……);

Create database school;

Use school;

Create table student(

id int(4),

name varchar(20) not null,

grade float

);

Insert into student(id,name,grade)values(1,’zhangsan’,98.5);

Insert into student(name,grade,id)values(’lisi’,95.5,2);

(2)为表的指定字段添加数据

Insert into 表名(字段1,字段2,…)values(值1,值2,…)

Insert into student(id,name)values(4,’zhaoliu’);

Insert into student(id,grade)values(5,97);//name字段没有指定默认值,并且添加了非null约束。

(3)同时添加多条记录

Insert into 表名[(字段名1,字段名2,…)]

values(值1,值2,…),(值1,值2,…),…

Insert into student values

(6,’lilei’,99),

(7,’hanmeimei’,100),

(8,’lihua’,50);

//如果指定字段,则可以只为指定字段添加值

8.更新数据

Update 表名

set 字段名1=值1[,字段名2=值2,…]

[where 条件表达式]

Update student set name=‘laozhang’,grade=50 where id = 1;

更新全部数据

如:Update student set grade = 80;

9.删除数据

1.Delete删除部分数据

删除部分数据是指根据指定条件删除表中的某一条或者某几条记录,需要使用where子句来指定删除记录的条件。

Insert into student values(11,’xiaowang’,80);

Select * from student where id = 11;

Delete from student where id = 11;

Delete from student where id > 5;

2.Delete删除全部数据

在delete语句中如果没有使用where子句,则会将表中的所有记录都删除

Select * from student;

Delete from student;

二 单表查询

1.在select语句中指定所有字段

Select 字段1,字段2,…from 表名

Create table student2(

id int(3) primary key auto_increment,

name varchar(20) not null,

grade float,

gender char(2)

); //插入一些数据

Select id,name,grade,gender from student2;

2.在select语句中使用星号(“*”)通配符代表所有字段

Select * from 表名;

Select * from student2

2.按条件查询

查询student2表中id为4的学生姓名:

Select  id,name from student2 where id = 4;

(1.)带in关键字

查询student表中id值为1、2、3的记录:

Select * from student2 where id in (1,2,3);

查询student表中id值不为1、2、3的记录:

Select * from student2 where id not in (1,2,3);

(2)带between and 关键字的查询

查询student表中id值在2~5之间的学生姓名

select * from student where id between 2 and 5;

(3)空值查询

查询student2表中gender为空值的记录

Select * from student where gender is null;

查询student2表中gender不为空值的记录

Select * from student where gender is not null;

(4)带distinct关键字的查询

查询student2表中gender字段的值,要求不能出现重复数据:

Select distinct gender from student2;

(5)带like关键字的查询

1.百分号(%)通配符

匹配任意长度的字符串,包括空字符串。

查找student表中name字段以字符“z”开头的学生id:

Select id,name from student2 where name like ‘z%’;

查找student表中name字段以字符“z”开头,以“n”结尾的学生id:

Select id,name from student2 where name like ‘z%n’;

查找student表中name字段包含字符“y”的学生id:

Select id,name from student2 where name like ‘%y%’;

2.下划线(_)通配符

查询student2表中name字段值以字符串“zhan”开始,以字符串“san”结束,并且两个字符串之间只有一个字符的记录:

Select * from student2 where name like ‘zhan_san’;

查询student2表中name字段值包含8个字符,并且以字符串“san”结束的记录:

Select * from student2 where name like ‘_____san’;

注意:查询student表中name字段值包括“%”的记录:(\%)

select * from student where like ‘%\%%’

(6)带and关键字的多条件查询

查询student2表中id字段值在1,2,3,4之中,name字段值以字符串“san”结束,并且grade字段值小于80的记录:

Select id,name,grade,gender from student2

where id in(1,2,3,4) and name like ‘%san’ and grade <80;

(7)带or关键字的多条件查询

查询student2表中id字段值小于3,或者gender字段值为“女”的学生姓名:

Select id,name,gender from student2 where id<3 or gender=‘女’;

Or和and一起使用的情况

注意:and的优先级高于or,因此当两者在一起使用时,应该先运算and两边的条件,再运算or两边的条件

查询student2表中gender字段值为“女”或者gender字段值为“男”,并且grade字段值为100的学生姓名:

Select name,grade,gender from student2 where gender = ‘女’ or gender = ‘男’ and grade=100;

三 聚合函数

实际开发中,经常需要对某些数据进行统计,例如统计某个字段的最大值,最小值,平均值等,为此,MySql中提供了一些函数来实现这些功能。

1.count()函数

Count()函数用来统计记录的条数

Select count(*) from 表名

2.sum()函数

Sum()是求和函数,用于求出表中某个字段所有值的总和

Select sum(字段名) from 表名;

3.avg()函数

Avg()函数用于求出某个字段所有值的平均值

Select avg(字段名) from 表名

4.max()函数

Max()函数是求最大值的函数,用于求出某个字段的最大值

Select max(grade) from 表名;

5.min()函数

Min()函数是求最小值的函数,用于求出某个字段的最小值

Select min(grade) from 表名;

四 对查询结果排序

从表中查询出来的数据可能是无序的,或者其排列顺序不是用户期望的。为了使查询结果满足用户的需求,可以使用order by对查询结果进行排序

Select 字段名1,字段名2,… from 表名 order by 字段名1, [asc|desc],字段名2 [asc|desc]…

1.查出student2表中的所有记录,并按照grade字段进行排序

2.查出student2表中的所有记录,使用参数asc按照grade字段升序排列

3.查出student2表中的所有记录,使用参数desc按照grade字段降序排列

4.查出student2表中的所有记录,按照gender字段的升序和grade字段的降序进行排列

五 分组查询

在对表中数据进行统计时,也可能需要按照一定的类别进行统计。在mysql中可以使用group by按某个字段或者多个字段中的值进行分组,字段中值相同的为一组:

Select 字段名1,字段名2,…from 表名

group by字段名1,字段名2,..[having 条件表达式]

1.单独使用group by分组

Select * from student2 group by gender;

每个分组只返回一条结果

2.group by和聚合函数一起使用

Group by和聚合函数一起使用,可以统计出某个或者某些字段在一个分组中最大值、最小值、平均值等

将student2表按照gender字段值进行分组查询,计算出每个分组中各有多少名学生:

Select count(*) ,gender from student2 group by gender;

3.group by和having关键字一起使用

Having关键字和where关键字的作用相同,都用于设置条件表达式对查询结果进行过滤,两者的区别在于,having关键字后可以跟聚合函数,而where不能,通常情况下having关键字都和group by 一起使用,用于对分组后的结果进行过滤。

将student2表按照gender字段进行分组查询,查询出grade字段值之和小于300的分组:

Select sum(grade),gender from student2 group by gender having sum(grade)<300;i

六 使用limit限制查询结果的数量

查询student2表的前4条记录:

Select * from student2 limit 4;

七 为表和字段取别名

1.为表取别名

为student2表起一个别名,并查询student2表中gender字段值为“女”的记录

Select * from student2 as s2 where s2.gender=‘女’;

2.为字段取别名

查询student2表中的所有记录的name和gender字段值,并为这两个字段起别名为stu_name和stu_gender:

Select name as stu_name,gender as stu_gender from student2;

具体实践

2、创建如下表


a )插入数据,使表内容如下所示


b)修改李四的SERVLET为65、JSP为73


c)查询并显示ID、USERNAME这两个字段的值


d)将c的结果用下图所示别名显示


e)查询并以如下结果显示


f)查询并显示每个学生的SERVLET和JSP的总成绩


g)查询并显示不重复的ADDRESS字段的值


h)查询ID为2且姓名为李四的学生


i)查询ID为2,或者姓名为张三的学生


J) 查询SERVLET成绩大于70分的学生,并显示所有字段信息


K)查询SERVLET 成绩大于60分小于80分的学生,并显示所有字段信息


L)查询姓名不等于张三的记录,并显示所有字段信息


M)查询ADDRESS为空的记录,并显示所有字段信息


N)查询ADDRESS不为空的记录,并显示所有字段信息


O)查询李姓学生的所有信息


P)查询所有学生SERVLET总成绩


Q)查询所有学生SERVLET的平均分


R)查询SERVLET的最高分和最低分



S)查询前两条记录


T)将表按SERVLET由大到小显示


U)将表按JSP小到大显示


V)查询每个地区的人数


W)查询分组后区域人数超过1个人的区域


x)查询id是1,2,3的记录


X���3x�t�ݬ�

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容

  • 1.1、常用数据库包括:Oracle、MySQL、SQLServer、DB2、SyBase等 1.2、Navica...
    NOX_5d2b阅读 3,325评论 0 0
  • 2.2 什么是数据库软件 数据库,俗称数据的仓库。方便管理数据的软件(或程序)。 2.4 MySQL入门 1)到m...
    yangliangliang阅读 398评论 0 0
  • 转自:http://www.lai18.com/content/7451585.html 基本操作 查看数据库 指...
    光光李阅读 915评论 0 5
  • 数据库简介关系型数据库MySQL安装和使用SQL语言 一、数据库简介 (一)数据库的发展 文件系统:磁盘文件存储数...
    哈喽别样阅读 434评论 0 1
  • 那天我有点累。 一起打零时工的一个同事在我进洗手间之际翻我的包,后被我抓住,问起原因,他说,我的包就那么开着,他也...
    Twist_of8阅读 222评论 1 1