sql数据库示例适合初学者.docx

上传人:b****9 文档编号:25781154 上传时间:2023-06-14 格式:DOCX 页数:24 大小:55.24KB
下载 相关 举报
sql数据库示例适合初学者.docx_第1页
第1页 / 共24页
sql数据库示例适合初学者.docx_第2页
第2页 / 共24页
sql数据库示例适合初学者.docx_第3页
第3页 / 共24页
sql数据库示例适合初学者.docx_第4页
第4页 / 共24页
sql数据库示例适合初学者.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

sql数据库示例适合初学者.docx

《sql数据库示例适合初学者.docx》由会员分享,可在线阅读,更多相关《sql数据库示例适合初学者.docx(24页珍藏版)》请在冰豆网上搜索。

sql数据库示例适合初学者.docx

sql数据库示例适合初学者

一、数据库概述

数据库(DataBase,DB):

指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。

(文件系统)

数据库管理系统(DataBaseManagementSystem,DBMS):

指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。

用户通过数据库管理系统访问数据库中的数据。

数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。

数据库:

存储、维护和管理数据的集合。

二、数据库的安装与配置

*安装

*参照图解

*一路下一步

*配置

*参照图解

*到选择字符集时停

登录Mysql:

mysql-uroot-pabc

*卸载

1.停止mysql服务netstopmysql启动mysql服务netstartmysql

2.卸载mysql

3.找到mysql安装目录下的my.inidatadir="C:

/ProgramData/MySQL/MySQLServer5.5/Data/"

*修改密码

运行cmd

*安装成功了打开cmd-->mysql-uroot-p你的密码

*修改mysqlroot用户密码

1)停止mysql服务运行输入services.msc停止mysql服务

或者cmd-->netstopmysql

2)在cmd下输入mysqld--skip-grant-tables启动服务器光标不动(不要关闭该窗口)

3)新打开cmd输入mysql-uroot-p不需要密码

usemysql;

updateusersetpassword=password('abc')WHEREUser='root';

4)关闭两个cmd窗口在任务管理器结束mysqld进程

5)在服务管理页面重启mysql服务

密码修改完成

数据库中一行记录与对象之间的关系。

列:

字段

行:

一条记录(实体)

publicclassUser{

privateintid;

privateStringname;

privateintage;

}

三、sql概述

SQL:

StructureQueryLanguage。

(结构化查询语言)

SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。

各数据库厂商都支持ISO的SQL标准。

普通话

各数据库厂商在标准的基础上做了自己的扩展。

方言

四、Sql的分类

DDL**(DataDefinitionLanguage):

数据定义语言,用来定义数据库对象:

库、表、列等;CREATE、ALTER、DROP

DML***(DataManipulationLanguage):

数据操作语言,用来定义数据库记录(数据);INSERT、UPDATE、DELETE

DCL(DataControlLanguage):

数据控制语言,用来定义访问权限和安全级别;

DQL*****(DataQueryLanguage):

数据查询语言,用来查询记录(数据)。

SELECT

*注意:

sql语句以;结尾

4.1DDL:

操作数据库、表、列等

使用的关键字:

CREATE、ALTER、DROP

*4.1.1操作数据库

创建

createdatabasemydb1;

Createdatabasemydb2charactersetgbk;

Createdatabasemydb3charactersetgbkCOLLATEgbk_chinese_ci;

查询

查看当前数据库服务器中的所有数据库

showdatabases;

查看前面创建的mydb2数据库的定义信息

Showcreatedatabasemydb2;

删除前面创建的mydb3数据库

Dropdatabasemydb3;

修改

查看服务器中的数据库,并把mydb2的字符集修改为utf8;

alterdatabasemydb2charactersetutf8;

删除

dropdatabasemydb3;

*其他:

查看当前使用的数据库

selectdatabase();

切换数据库

usemydb2;

*4.1.2操作数据表

*语法:

createtable表名(

字段1字段类型,

字段2字段类型,

...

字段n字段类型

);

*常用数据类型:

int:

整型

double:

浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;

char:

固定长度字符串类型;char(10)'abc'

varchar:

可变长度字符串类型;varchar(10)'abc'

text:

字符串类型;

blob:

字节类型;

date:

日期类型,格式为:

yyyy-MM-dd;

time:

时间类型,格式为:

hh:

mm:

ss

timestamp:

时间戳类型yyyy-MM-ddhh:

mm:

ss会自动赋值

datetime:

日期时间类型yyyy-MM-ddhh:

mm:

ss

当前数据库中的所有表

SHOWTABLES;

查看表的字段信息

DESCemployee;

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

ALTERTABLEemployeeADDimageblob;

修改job列,使其长度为60。

ALTERTABLEemployeeMODIFYjobvarchar(60);

删除image列,一次只能删一列。

ALTERTABLEemployeeDROPimage;

表名改为user。

RENAMETABLEemployeeTOuser;

查看表格的创建细节

SHOWCREATETABLEuser;

修改表的字符集为gbk

ALTERTABLEuserCHARACTERSETgbk;

列名name修改为username

ALTERTABLEuserCHANGEnameusernamevarchar(100);

删除表

DROPTABLEuser;

4.2DML操作(重要)

查询表中的所有数据

SELECT*FROM表名;

DML是对表中的数据进行增、删、改的操作。

不要与DDL混淆了。

INSERT、UPDATE、DELETE

小知识:

在mysql中,字符串类型和日期类型都要用单引号括起来。

'tom''2015-09-04'

空值:

null

4.2.1插入操作:

INSERT:

语法:

INSERTINTO表名(列名1,列名2...)VALUES(列值1,列值2...);

注意:

列名与列值的类型、个数、顺序要一一对应。

可以把列名当做java中的形参,把列值当做实参。

值不要超出列定义的长度。

如果插入空值,请使用null

插入的日期和字符一样,都使用引号括起来。

练习:

createtableemp(

idint,

namevarchar(100),

gendervarchar(10),

birthdaydate,

salaryfloat(10,2),

entry_datedate,

resumetext

);

INSERTINTOemp(id,name,gender,birthday,salary,entry_date,resume)

VALUES(1,'zhangsan','female','1990-5-10',10000,'2015-5-5-','goodgirl');

INSERTINTOemp(id,name,gender,birthday,salary,entry_date,resume)

VALUES(2,'lisi','male','1995-5-10',10000,'2015-5-5','goodboy');

INSERTINTOemp(id,name,gender,birthday,salary,entry_date,resume)

VALUES(3,'wangwu','male','1995-5-10',10000,'2015-5-5','goodboy');

批量插入:

INSERTINTOempVALUES

(4,'zs','m','2015-09-01',10000,'2015-09-01',NULL),

(5,'li','m','2015-09-01',10000,'2015-09-01',NULL),

(6,'ww','m','2015-09-01',10000,'2015-09-01',NULL);

4.2.2修改操作UPDATE:

语法:

UPDATE表名SET列名1=列值1,列名2=列值2。

WHERE列名=值

练习:

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

UPDATEempSETsalary=5000

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

UPDATEempSETsalary=3000WHEREname=’zhangsan’;

将姓名为’aaa’的员工薪水修改为4000元,job改为ccc。

UPDATEempSETsalary=4000,gender='female'WHEREname='lisi';

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

UPDATEempSETsalary=salary+1000WHEREgender='male';

4.2.3删除操作DELETE:

语法:

DELETEFROM表名【WHERE列名=值】

练习:

删除表中名称为’zs’的记录。

DELETEFROMempWHEREname=‘zs’;

删除表中所有记录。

DELETEFROMemp;

使用truncate删除表中记录。

TRUNCATETABLEemp;

DELETE删除表中的数据,表结构还在;删除后的数据可以找回

TRUNCATE删除是把表直接DROP掉,然后再创建一个同样的新表。

删除的数据不能找回。

执行速度比DELETE快。

4.3DQL操作

DQL数据查询语言(重要)

数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。

查询返回的结果集是一张虚拟表。

查询关键字:

SELECT

语法:

SELECT列名FROM表名

【WHERE-->GROUPBY-->HAVING-->ORDERBY】

语法:

SELECTselection_list/*要查询的列名称*/

FROMtable_list/*要查询的表名称*/

WHEREcondition/*行条件*/

GROUPBYgrouping_columns/*对结果分组*/

HAVINGcondition/*分组后的行条件*/

ORDERBYsorting_columns/*对结果分组*/

LIMIToffset_start,row_count/*结果限定*/

创建名:

●学生表:

stu

sid

char(6)

学生学号

sname

varchar(50)

学生姓名

age

int

学生年龄

gender

varchar(50)

学生性别

CREATETABLEstu(

sidCHAR(6),

snameVARCHAR(50),

ageINT,

genderVARCHAR(50)

);

INSERTINTOstuVALUES('S_1001','liuYi',35,'male');

INSERTINTOstuVALUES('S_1002','chenEr',15,'female');

INSERTINTOstuVALUES('S_1003','zhangSan',95,'male');

INSERTINTOstuVALUES('S_1004','liSi',65,'female');

INSERTINTOstuVALUES('S_1005','wangWu',55,'male');

INSERTINTOstuVALUES('S_1006','zhaoLiu',75,'female');

INSERTINTOstuVALUES('S_1007','sunQi',25,'male');

INSERTINTOstuVALUES('S_1008','zhouBa',45,'female');

INSERTINTOstuVALUES('S_1009','wuJiu',85,'male');

INSERTINTOstuVALUES('S_1010','zhengShi',5,'female');

INSERTINTOstuVALUES('S_1011','xxx',NULL,NULL);

●雇员表:

emp

empno

int

员工编号

ename

varchar(50)

员工姓名

job

varchar(50)

员工工作

mgr

int

领导编号

hiredate

date

入职日期

sal

decimal(7,2)

月薪

comm

decimal(7,2)

奖金

deptno

int

部分编号

CREATETABLEemp(

empnoINT,

enameVARCHAR(50),

jobVARCHAR(50),

mgrINT,

hiredateDATE,

salDECIMAL(7,2),

commdecimal(7,2),

deptnoINT

);

INSERTINTOempvalues(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);

INSERTINTOempvalues(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);

INSERTINTOempvalues(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);

INSERTINTOempvalues(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);

INSERTINTOempvalues(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);

INSERTINTOempvalues(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);

INSERTINTOempvalues(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);

INSERTINTOempvalues(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);

INSERTINTOempvalues(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);

INSERTINTOempvalues(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);

INSERTINTOempvalues(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);

INSERTINTOempvalues(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);

INSERTINTOempvalues(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);

INSERTINTOempvalues(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

●部分表:

dept

deptno

int

部分编码

dname

varchar(50)

部分名称

loc

varchar(50)

部分所在地点

CREATETABLEdept(

deptnoINT,

dnamevarchar(14),

locvarchar(13)

);

INSERTINTOdeptvalues(10,'ACCOUNTING','NEWYORK');

INSERTINTOdeptvalues(20,'RESEARCH','DALLAS');

INSERTINTOdeptvalues(30,'SALES','CHICAGO');

INSERTINTOdeptvalues(40,'OPERATIONS','BOSTON');

1 基础查询

1.1 查询所有列

SELECT*FROMstu;

1.2 查询指定列

SELECTsid,sname,ageFROMstu;

2 条件查询

2.1 条件查询介绍

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:

●=、!

=、<>、<、<=、>、>=;

●BETWEEN…AND;

●IN(set);

●ISNULL;ISNOTNULL

●AND;

●OR;

●NOT;

2.2 查询性别为女,并且年龄50的记录

  SELECT*FROMstu

WHEREgender='female'ANDge<50;

2.3 查询学号为S_1001,或者姓名为liSi的记录

SELECT*FROMstu

WHEREsid='S_1001'ORsname='liSi';

2.4 查询学号为S_1001,S_1002,S_1003的记录

SELECT*FROMstu

WHEREsidIN('S_1001','S_1002','S_1003');

2.5 查询学号不是S_1001,S_1002,S_1003的记录

SELECT*FROMtab_student

WHEREs_numberNOTIN('S_1001','S_1002','S_1003');

2.6 查询年龄为null的记录

SELECT*FROMstu

WHEREageISNULL;

2.7 查询年龄在20到40之间的学生记录

SELECT*

FROMstu

WHEREage>=20ANDage<=40;

或者

SELECT*

FROMstu

WHEREageBETWEEN20AND40;

2.8 查询性别非男的学生记录

SELECT*

FROMstu

WHEREgender!

='male';

或者

SELECT*

FROMstu

WHEREgender<>'male';

或者

SELECT*

FROMstu

WHERENOTgender='male';

2.9 查询姓名不为null的学生记录

SELECT*

FROMstu

WHEREsnameISNOTNULL;

或者

SELECT*

FROMstu

WHERENOTsnameISNULL;

3 模糊查询

当想查询姓名中包含a字母的学生时就需要使用模糊查询了。

模糊查询需要使用关键字LIKE。

通配符:

_任意一个字符

%:

任意0~n个字符

'%张%''张_'

3.1 查询姓名由5个字母构成的学生记录

SELECT*

FROMstu

WHEREsnameLIKE'_____';

模糊查询必须使用LIKE关键字。

其中“_”匹配任意一个字母,5个“_”表示5个任意字母。

3.2 查询姓名由5个字母构成,并且第5个字母为“i”的学生记录

SELECT*

FROMstu

WHEREsnameLIKE'____i';

3.3 查询姓名以“z”开头的学生记录

SELECT*

FROMstu

WHEREsnameLIKE'z%';

其中“%”匹配0~n个任何字母。

3.4 查询姓名中第2个字母为“i”的学生记录

SELECT*

FROMstu

WHEREsnameLIKE'_i%';

3.5 查询姓名中包含“a”字母的学生记录

SELECT*

FROMstu

WHEREsnameLIKE'%a%';

4 字段控制查询

4.1 去除重复记录

去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如emp表中sal字段就存在相同的记录。

当只查询emp表的sal字段时,那么会出现重复记录,那么想去除重复记录,需要使用DISTINCT:

SELECTDISTINCTsalFROMemp;

4.2 查看雇员的月薪与佣金之和

  因为sal和comm两列的类型都是数值类型,所以可以做加运算。

如果sal或comm中有一个字段不是数值类型,那么会出错。

SELECT*,sal+commFROMemp;

comm列有很多记录的值为NULL,因为任何东西与NULL相加结果还是NULL,所以结算结果可能会出现NULL。

下面使用了把NULL转换成数值0的函数IFNULL:

SELECT*,sal+IFNULL(comm,0)FROMemp;

4.3 给列名添加别名

在上面查询中出现列名为sal+IFNULL(comm,0),这很不美观,现在我们给这一列给出一个别名,为total:

SELECT*,sal+IFNULL(comm,0)AStotalFROMemp;

给列起别名时,是可以省略AS关键字的:

SELECT*,sal+IFNULL(comm,0)totalFROM

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

当前位置:首页 > PPT模板 > 简洁抽象

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

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