11sql语句.docx

上传人:b****5 文档编号:28887989 上传时间:2023-07-20 格式:DOCX 页数:21 大小:19.85KB
下载 相关 举报
11sql语句.docx_第1页
第1页 / 共21页
11sql语句.docx_第2页
第2页 / 共21页
11sql语句.docx_第3页
第3页 / 共21页
11sql语句.docx_第4页
第4页 / 共21页
11sql语句.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

11sql语句.docx

《11sql语句.docx》由会员分享,可在线阅读,更多相关《11sql语句.docx(21页珍藏版)》请在冰豆网上搜索。

11sql语句.docx

11sql语句

 

数据库:

保存在硬盘上的文件

数据库产品:

采用一种优良的数据结构来保存数据,方便我们对数据进行查询和修改

sql语句:

用于操作数据库的语句

数据库database表table

创建create

查看show

修改alter

删除drop

所有对数据库和表单的操作就是上面六个单词的组合

//创建一个数据库

createdatabasemydb;

//删除一张表

droptablemytable;

一、数据库的操作

创建一个名称为mydb1的数据库。

createdatabasemydb1;

创建一个使用utf-8字符集的mydb2数据库。

createdatabasemydb2charactersetutf8;

创建一个使用utf-8字符集,并带校对规则的mydb3数据库。

createdatabasemydb3charactersetutf8collateutf8_general_ci;

查看所有的数据库

showdatabases;

查看数据库的创建语句

showcreatedatabasemydb2;

删除前面创建的mydb3数据库

dropdatabasemydb3;

dropdatabaseifexistsmydb3;如果存在才会删除

数据库的修改

数据库一旦创建名称无法修改,字符集和校对规则可以改

把mydb2的字符集修改为gb2312

alterdatabasemydb2charactersetgb2312;

备份数据库

//使用数据库

usemydb2;

//创建表

createtablea

namevarchar(20)

);

//插入数据

insertintoa(name)values('aaa');

insertintoa(name)values('bbb');

备份数据库

mysqldump-uroot-prootmydb2>d:

\a.sql

删除mydb2

dropdatabasemydb2;

恢复数据库实际上是恢复数据库中的数据

创建数据库使用数据库

createdatabasemydb3;

usemydb3;

sourced:

\a.sql

实际上source命令用于执行一段sql脚本

二、表的操作

创建表

id整形

name字符型

gender字符型或bit型

brithday日期型

entry_date日期型

job字符型

Salary小数型

resume大文本型

createtableemployee

idint,

namevarchar(20),

gendervarchar(6),

birthdaydate,

entry_datedate,

jobvarchar(20),

salaryfloat,

resumetext

);

修改表

在上面员工表的基础上增加一个image列

altertableemployeeaddimageblob;

修改job列,使其长度为60

altertableemployeemodifyjobvarchar(60);

删除gender列。

altertableemployeedropgender;

表名改为users。

renametableemployeetousers;

修改表的字符集为utf-8

altertableuserscharactersetutf8;

列名name修改为username

altertableuserschangecolumnnameusernamevarchar(40);

查看所有的表

showtables;

查看表的创建语句

showcreatetableusers;

查看表的结构

descusers;

//删除表

droptableemployee;

三、表中数据的操作(重点)

crud:

createreadupdatedelete

sql语句

1.insert语句增加数据

employee.sql

createtableemployee

idint,

namevarchar(20),

gendervarchar(10),

birthdaydate,

salaryfloat,

entry_datedate,

resumetext

);

插入三条记录

insertintoemployee(id,name,gender,birthday,salary,entry_date,resume)values(1,'zhangsan','male','1980-1-1',1000,'2000-3-16','goodboy');

insertintoemployee(id,name,gender,birthday,salary,entry_date,resume)values(2,'lisi','male','1983-1-1',1000,'2010-3-16','goodboy');

insertintoemployee(id,name,gender,birthday,salary,entry_date,resume)values(3,'xiaohong','female','1984-1-1',1000,'2008-3-16','goodgirl');

insertintoemployee(id,name,gender,birthday,salary,entry_date,resume)values(4,'王五','男','1983-1-1',1000,'2010-3-16','一个好男孩');

//查看数据库的所有编码

showvariableslike'character%';

character_set_client使用的客户端编码

character_set_results结果集的编码

设置的方式

setcharacter_set_client=gbk

setcharacter_set_results=gbk

//创建一张a表

createtablea

idint,

namevarchar(20)

);

insertintoavalues(1,'aaa');

insertintoa(name)values('bbbb');

inserta(id,name)values(2,'cccc'),(3,'dddd');

规范的方式书写

insertintoa(id,name)values(6,'eeeee');

查看表中的数据

select*fromemployee;

2.update语句更新数据

将所有员工薪水修改为5000元。

updateemployeesetsalary=5000;

将姓名为’zhangsan’的员工薪水修改为3000元。

updateemployeesetsalary=3000wherename='zhangsan';

将姓名为’lisi’的员工薪水修改为4000元,gender改为female。

updateemployeesetsalary=4000,gender='female'wherename='lisi';

将xiaohong的薪水在原有基础上增加1000元。

updateemployeesetsalary=salary+1000wherename='xiaohong';

3.delete语句删除数据

删除表中name为’zhangsan’的记录。

deletefromemployeewherename='zhangsan';

删除表中所有记录。

deletefromemployee;

使用truncate删除表中记录。

删除表再创建表

truncateemployee;

4.select语句查询数据

student.sql

createtablestudent(

idint,

namevarchar(20),

chinesefloat,

englishfloat,

mathfloat

);

insertintostudent(id,name,chinese,english,math)values(1,'张小明',89,78,90);

insertintostudent(id,name,chinese,english,math)values(2,'李进',67,53,95);

insertintostudent(id,name,chinese,english,math)values(3,'王五',87,78,77);

insertintostudent(id,name,chinese,english,math)values(4,'李一',88,98,92);

insertintostudent(id,name,chinese,english,math)values(5,'李来财',82,84,67);

insertintostudent(id,name,chinese,english,math)values(6,'张进宝',55,85,45);

insertintostudent(id,name,chinese,english,math)values(7,'黄蓉',75,65,30);

insertintostudent(id,name,chinese,english,math)values(8,null,75,65,30);

查询表中所有学生的信息。

select*fromstudent;

查询表中所有学生的姓名和对应的英语成绩。

selectname,englishfromstudent;

过滤表中重复数据。

selectdistinctenglishfromstudent;

在所有学生分数上加10分特长分。

selectname,chinese+10aschinese,math+10,english+10fromstudent;

统计每个学生的总分。

selectname,chinese+math+englishfromstudent;

使用别名表示学生分数。

selectname,chinesec,englishefromstudent;

查询姓名为李一的学生成绩

select*fromstudentwherename='李一';

查询英语成绩大于90分的同学

select*fromstudentwhereenglish>90;

查询总分大于200分的所有同学

select*fromstudentwhereenglish+chinese+math>200;

查询英语分数在80-90之间的同学。

两头的值都包含

select*fromstudentwhereenglishbetween80and90;

查询数学分数为89,90,91的同学。

select*fromstudentwheremathin(89,90,30);

查询所有姓李的学生成绩。

select*fromstudentwherenamelike'李%';

查询所有姓李的,名字是两个字的学生成绩。

select*fromstudentwherenamelike'李_';

查询数学分>80,语文分>80的同学。

select*fromstudentwheremath>80andchinese>80;

查询英语>80或者总分>200的同学

select*,chinese+english+mathassssfromstudentwhereenglish>80orchinese+english+math>200;

对数学成绩排序后输出。

select*fromstudentorderbymath;

对总分排序后输出,然后再按从高到低的顺序输出

select*,chinese+math+englishfromstudentorderbychinese+math+englishdesc;

对姓李的学生成绩排序输出

select*fromstudentwherenamelike'李%'orderbychinese;

合计函数--count

统计一个班级共有多少学生?

selectcount(*)fromstudent;

统计数学成绩大于90的学生有多少个?

selectcount(*)fromstudentwheremath>90;

统计总分大于230的人数有多少?

selectcount(*)fromstudentwheremath+chinese+english>230;

sum只对数值类型起作用

统计一个班级数学总成绩?

selectsum(math)fromstudent;

统计一个班级语文、英语、数学各科的总成绩

selectsum(math),sum(chinese),sum(english)fromstudent;

统计一个班级语文、英语、数学的成绩总和

selectsum(math+chinese+english)fromstudent;

统计一个班级语文成绩平均分

selectsum(chinese)/count(*)fromstudent;

selectsum(chinese)/count(chinese)fromstudent;

求一个班级数学平均分?

selectavg(chinese)fromstudent;

求一个班级总分平均分

selectavg(chinese+math+english)fromstudent;

求班级语文最高分和最低分

selectmax(chinese)fromstudent;

groupby子句用于分类查询

orders.sql

createtableorders(

idint,

productvarchar(20),

pricefloat

);

insertintoorders(id,product,price)values(1,'电视',900);

insertintoorders(id,product,price)values(2,'洗衣机',100);

insertintoorders(id,product,price)values(3,'洗衣粉',90);

insertintoorders(id,product,price)values(4,'桔子',9);

insertintoorders(id,product,price)values(5,'洗衣粉',90);

对订单表中商品归类后,显示每一类商品的总价

//归类

select*fromordersgroupbyproduct;

selectproduct,sum(price)fromordersgroupbyproduct;

查询购买了几类商品,并且每类总价大于100的商品

selectproduct,sum(price)fromordersgroupbyproducthavingsum(price)>100;

四、表的约束

有的时候针对某个列,我们不希望别人插入任意的数据,这样会导致错误

例如插入null值,取数据的时候就会出错

例如有的列我们希望数据是有唯一性的(不允许重复)

notnull非空约束这一列不允许插入null值

createtablea

namevarchar(20)notnull

);

insertintoa(name)values('aaa');

insertintoa(name)values(null);

//id需要唯一unique唯一约束限定了列的值不能重复

createtableb

idintnotnullunique,

namevarchar(20)

);

insertintob(id,name)values(1,null);

insertintob(id,name)values(2,'zhangsan');

insertintob(id,name)values(2,'lisi');

//只用唯一约束

createtablec

idintunique,

namevarchar(20)

);

insertintoc(name)values('aaa');

insertintoc(name)values('bbb');

insertintoc(id,name)values(1,'ccc');

//通常来讲我们会根据id来查询某条记录id一般会加非空约束、唯一约束

//主键约束=非空约束+唯一约束

createtabled

idintprimarykey,

namevarchar(20)

);

insertintod(name)values('aaa');不行,因为非空

insertintod(id,name)values(1,'aaa');

insertintod(id,name)values(1,'bbb');不行,唯一要唯一

通常来讲如果主键定义为int我们为了方便会定义主键自定增长

createtablee

idintpr(参考下载:

)imarykeyauto_increment,

namevarchar(20)

);

insertintoe(name)values('aaa');

insertintoe(id,name)values(4,'bbb');

//声明联合主键

createtablef

firstnamevarchar(20),

lastnamevarchar(20),

primarykey(firstname,lastname)

);

insertintof(firstname,lastname)values('aaa','bbb');

insertintof(firstname,lastname)values('aaa','ccc');

insertintof(firstname)values('eee');

//增加主键约束

createtableg

idint,

namevarchar(20)

);

//增加两条记录

insertintogvalues(1,'aaa');

//增加主键约束但是如果主键列有重复或者为空的情况,主键约束加不上

altertablegaddprimarykey(id);

//删除主键约束

createtableh

idintprimarykey,

namevarchar(20)

);

altertablehdropprimarykey;

夫妻关系系统

创建老公表

createtablehusband

idintprimarykeyauto_increment,

namevarchar(20)

);

insertintohusband(name)values('张三');

insertintohusband(name)values('李四');

insertintohusband(id,name)values(3,'王五');

创建老婆表

createtablewife

idintprimarykeyauto_increment,

namevarchar(20),

husbandidint

);

insertintowife(name,husbandid)values('小红',2);

insertintowife(name,husbandid)values('小兰',3);

insertintowife(name,husbandid)values('小黑',1);

insertintowife(name,husbandid)values('小黄',8);

//小兰来找老公

select*fromhusbandwhereid=3;

//删除王五

deletefromhusbandwhereid=3;

//外键约束

某一列数据是参照另一张表的某一个列这是就需要加外键约束

好处:

外键列只能插入参照列存在的值,参照列被参照的值是不能删除的

createtablewife

idintprimarykeyauto_increment,

namevarchar(20),

husbandidint,

constrainthusbandid_FKforeignkey(husbandid)referenceshusband(id)

);

表的关系有三种情况

多对一

在多的一方建立外键

多对多

需要创建中间表描述关系

中间表有两个字段都是外键参照两个表的主键列,同时这两列又是联合主键

一对一

分清主从关系

在从的一方建立外键此时应将主键直接作为外键

多对一

创建部门表

createtabledepartment

idintprimarykeyauto_increment,

namevarchar(20)

);

创建员工表

droptableifexistsemployee;

createtableemployee

idintprimarykeyauto_increment,

namevarchar(20),

departmentidint,

constraintdepartmentid_FKforeignkey(departmentid)referencesdepartment(id)

);

insertintodepartment(name

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1