mysql教程PPT(无水印).ppt

上传人:小飞机 文档编号:5441069 上传时间:2023-07-07 格式:PPT 页数:146 大小:1.15MB
返回 下载 相关 举报
mysql教程PPT(无水印).ppt_第1页
第1页 / 共146页
mysql教程PPT(无水印).ppt_第2页
第2页 / 共146页
mysql教程PPT(无水印).ppt_第3页
第3页 / 共146页
mysql教程PPT(无水印).ppt_第4页
第4页 / 共146页
mysql教程PPT(无水印).ppt_第5页
第5页 / 共146页
点击查看更多>>
资源描述

《mysql教程PPT(无水印).ppt》由会员分享,可在线阅读,更多相关《mysql教程PPT(无水印).ppt(146页珍藏版)》请在三一办公上搜索。

1、MYSQL实用技术,张鹏亮,MySQL的安装,详见安装指南,MySQL基本操作,PHP+MySQL+Linux 目前已逐渐成为小型web 服务器的一种经典组合。在Windows 环境下构筑和调试MySQL 数据库是许多网站研发者的一种最佳选择。启动mysql,有如下方法:方法一:使用winmysqladmin1)、进入d:mysqlbin 目录,运行winmysqladmin.exe,在屏幕右下角的任务栏内会有一个带红色的图符。2)、鼠标左键点击该图符,选择“show me”,出现“WinMySQLAdmin”操作界面;首次运行时会中间会出现一个对话框需求输入并设置你的用户名和口令。,3)、选

2、择“My.INI setup”4)、在“mysqld file”中选择“mysqld-opt”(win9x)或“mysqld-nt”(winNT)5)、选择“Pick-up or Edit my.ini values”能在右边窗口内对你的my.ini 文件进行编辑6)、选择“Save Modification”保存你的my.ini 文件7)、如果你想快速使用winmysqladmin(开机时自动运行),选择“Create ShortCut on StartMenu”8)、测试:进入DOS 界面;在d:mysqlbin 目录下运行mysql,进入mysql 交互操作界面输入show databa

3、ses 并回车,屏幕显示出当前已有的两个数据库mysql 和test,方法二:不使用winmysqladmin1)、在DOS 窗口下,进入d:/mysql/bin 目录2)、win9X 下)运行:mysqld在NT 下运行:mysqld-nt-standalone3)、此后,mysql 在后台运行4)、测试mysql:(在d:/mysql/bin 目录下)a)、mysqlshow正常时显示已有的两个数据库mysql 和test,b)、mysqlshow-u root mysql正常时显示数据库mysql 里的五个表:columns_privdbhosttables_privuserc)、mys

4、qladmin version status proc显示版本号、状态、进程信息等d)、mysql test进入mysql 操作界面,当前数据库为test5)、mysql 关闭方法:mysqladmin-u root shutdown4、至此,MySQL 已成功安装,接着能熟悉MySQL 的常用命令并创建自己的数据库了。上篇讲了怎么安装并测试MySQL,环境建好后就能继续我们的学习了。本篇主要熟悉一写,常用命令。1、启动MySQL 服务器实际上上篇已讲到怎么启动MySQL。两种方法:一是用winmysqladmin,如果机器启动时已自动运行,则可直接进入下一步操作。二是在DOS 方式下运行d:

5、mysqlbinmysqld2、进入mysql 交互操作界面在DOS 方式下,运行:d:mysqlbinmysql出现:mysql的提示符,此时已进入mysql 的交互操作方式。如果出现 ERROR 2003:Cant connect to MySQL server on localhost(10061)“,说明你的MySQL 还没有启动。3、退出MySQL 操作界面在mysql提示符下输入quit 能随时退出交互操作界面:Generated by Foxit PDF Creator Foxit Softwarehttp:/For evaluation only.mysql quitBye你也

6、能用control-D 退出。,mysql命令,mysql命令mysql h192.168.4.28-uroot ppasswordh:当连接MySQL服务器不在同台主机时,填写主机名或IP地址u:登录MySQL的用户名p:登录MySQL的密码注意:密码如果写在命令行的时候一定不能有空格。如果使用的系统为linux并且登陆用户名字与MySQL的用户名相同即可不用输入用户名密码,linux默认是以root登陆,windows默认用户是ODBC,更改密码:,在MySql安装目录下:mysqlbin下输入如下命令:Mysqladmin uroot p旧密码 password 新密码注意:结尾无分号,

7、新建用户,Grant 操作权限(select,insert,update,delete或者all)on 数据库名.*to 用户名访问地址 identified by“密码”;Flush privileges;刷新系统权限表,删除用户,Delete from user where user=“test2”and host=“localhost”;修改指定用户名密码:Update mysql.user set password=password(新密码)where user=“test2”and host=“localhost”;Drop USER 用户名;,mysql程序常用命令,选定默认数据库

8、:use dbname;显示所有数据库:show databases;显示默认数据库中所有表:show tables;放弃正在输入的命令:c显示命令清单:h退出mysql程序:q查看MySQL服务器状态信息:s,处理SQL文件,mysql命令处理存放在文件里的SQL命令格式:mysql option dbname file.sqlmysql u root p-default-character-set=latin1 dbname backup.sql注:latin1是MySQL4.0的默认字符集或者utf-8是MySQL5.0的默认字符集,如果不知道使用什么字符集的时候,可以选用这两个其中一个

9、,使用的几点提示,字符集Windows命令窗口默认字符集为cp850或者gbk,因此存在许多字符显示不出来的问题。可以在mysql命令加入-default-character-set=cp850或gbk选项,cp850字符集需要再追加一个-character-sets-dir=C:/MySQL/share/characters选项,mysqladmin命令,mysqladmin命令完成许多系统管理任务,如创建或删除一个数据库、修改密码等格式:mysqladmin option admincommand创建数据库mysqladmin u root p create newdb删除数据库mysql

10、admin u root p drop newdb更改密码mysqladmin u root p password“newpasswd”,mysqldump命令,mysqldump命令用于为数据库创建备份格式:mysqldump option dbname bak.sqlmysqldump u root p tmpdb backuptmp.sql备份出来的是一个文本文件,默认为utf-8字符集,如果想使用另外一种字符集,必须使用-default-character-set=gbk选项来设置,附加工具,对于MySQL,它是一个极好的前端查询和数据库管理工具。现有Windows,UNIX和Linu

11、x版本可用,并且Mac OS X 的版本现在也有DBTOOL专业管理器,来自http:/.br,是一个用于管理MySQL数据库、表和索引的图形客户,其输入来自其他RDBMS的数据,该管理器提供一个用于查询和报告设计的接口。,总结,MySQL是一种功能非常强大的关系型客户服务器数据库系统,它的安全性和稳定性足以满足许多应用程序的要求,而且有着非常高的性价比。,第二部分:数据库基础知识,数据库基础知识概述 SQL概述 SQL语言,数据库基础知识,数据库由一批数据构成的有序集合,这些数据被分门别类地存放在一些结构化的数据表(table)里,而数据表之间又往往存在交叉引用的关系,这种关系使数据库又被称

12、为关系型数据库档案柜=数据库抽屉=表文件=记录,数据库,数 据 表存储过程视 图.,产品数据库,表,数据表,数据在表中的存放,存在冗余,为减少数据查找的麻烦,允许数据有一定的冗余,数据存储的完整性,存在不正确、不准确的数据,数据库“失去了完整性”,数据的完整性,数据完整性,+,=,完整性分类,数据实体完整性字段完整性引用完整性自定义完整性,数据实体完整性,约束方法:唯一约束、主键约束、标识列,字段完整性,约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束,引用完整性,约束方法:外键约束,自定义完整性,约束方法:规则、存储过程、触发器,完整性包括,输入的类型是否正确?年龄必须是数字输入

13、的格式是否正确?身份证号码必须是18位是否在允许的范围内?性别只能是”男”或者”女”是否存在重复输入?学员信息输入了两次是否符合其他特定要求?信誉值大于5的用户才能够加入会员列表,创建数据库表完毕!,输入数据项,验证主键、主外键关系、检查约束,SQL概述,什么是SQL?SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。,SQL语法组成,DML(Data Manipulation Language数据操作语言)查询、插入、删除和

14、修改数据库中的数据;SELECT、INSERT、UPDATE、DELETE等;DCL(Data Control Language数据控制语言)用来控制存取许可、存取权限等;GRANT、REVOKE 等;DDL(Data Definition Language数据定义语言)用来建立数据库、数据库对象和定义其列CREATE TABLE、DROP TABLE、ALTER TABLE 等功能函数日期函数、数学函数、字符函数、系统函数等,MySQL中使用SQL语言几点说明,属于一个SQL语句,使用分号(;)结尾,否则mysql认为语句没有输入完。箭头(-)代表SQL语句没有输入完取消SQL语句使用(c)

15、SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)使用函数时,函数名和后面的括号之间不能有空格,MySQL数据类型,数据类型种类数值列类型字符串列类型日期和时间列类型,数据类型种类,数值型分为整型和浮点型整型:可以由十进制和十六进制表示整数由数字序列组成,如:1,100。由十六进制表示方法:0 x且后面加19和AF 的任意数字或字母,并且0 x中的X不能大写。浮点型:浮点数由一个数字加一个小数点再加上一个数字组成。两个数字序列不能同时为空。,字符串:由单引号或者双引号括起来的字符或者数字。如:”abc”,abc10字符串中要用转义字符才能表示的特殊符号,日期和时间值是

16、存储如“2005-1-1”或者“12:00:00”这样的数值的值。在MySQL中日期是按”年-月-日”的顺序。NULL值是一种无类型的值,表示“空,什么也没有”。,数值列类型,MySQL为除了NULL值外的所有通用数据类型提供了列类型。列类型是一种手段,通过这种手段可以描述表的列可以包含什么样类型的值。数值列类型 所有数值列类型的类型名及其说明和所占的字节数见下表:,数值列类型包括整型和浮点型说明:TINYINT,SAMLLINT,MEDIUMINT,INT,BIGINT每个数据类型的取值范围不同,故分别可以表示不同的数值范围。在定义整型列时,可以指定可选的显示尺寸M(见上表),M是从1到25

17、5的值,它表示显示列中值的字符数。,尝试,输入以下语句,观察结果Create table data1(TIN TINYINT,SMALL SMALLINT);Describe data1;观察结构Create table data2(TIN TINYINT(1),SMALL SMALLINT(2);Describe data2;观察结构Insert into data2 values(1,1);Insert into data2 values(128,1);Insert into data2 values(127,1);Insert into data2 values(127,32768);I

18、nsert into data2 values(127,32767);,例如:INT(4)意思是指定了一个具有4个字符显示宽度的INT列。如果定义了一个没有明确宽度的整数列,则会分配缺省的宽度,缺省值为每种类型的最长值的长度。对于每种浮点型,可指定一个最大的显示尺寸M和小数位数D,M的取值应该是0-30。正数位最大为M-D-1,M和D对于DECIMAL是必须的。,AUTO_INCREMENT 自动标识列,在需要产生唯一标志符号或者顺序值时候,可用此属性。值一般从1开始,每行增加1,在插入NULL到一个AUTO_INCREMENT列时,MySQL会插入一个比该列中当前最大值大1 的值,一个表中最

19、多能有一个有此属性的列。对于想使用此属性的列应该定义为NOT NULL,并定义为PRIMARY KEY 或者定义为UNIQUE键。举例:create table t(id int auto_increment not null primary key);UNSIGNED 无符号,此属性禁用负值,将数值的取值范围从零开始。举例:create table t(num tinyint,num2 tinyint unsigned);,数值列的完整性约束,NULL和NOT NULL默认为NULL,即插入值时没有在此字段插入值时自动填NULL,如果指定了NOT NULL,则必须在插入值时在此字段添入值,不

20、允许插入NULL值。DEFAULT可以通过此属性来指定一个缺省值,即如果没有在此列添加值,那么默认添加DEFAULT后指定值。ZEROFILL 前导零填充数值类型值以达到列的显示宽度。举例:create table test2(num1 int default 1,num2 int zerofill);,字符串列类型所有字符串列类型及其说明和所占的字节数见下表:,说明:对于可变长的字符串类型,其长度取决于实际存放在列中的值的长度。此长度在上表中用L来表示。附加若干额外字节,用来记录字符串长度,也就是说总长度等于Ln(n1、2、3、4、8),CHAR和VARCHAR类型CHAR类型和VARCHA

21、R类型长度范围都是0255之间的大小。他们之间的差别在于MySQL处理存储的方式:CHAR把这个大小视为值的准确大小(用空格填补比较短的值)。VARCHAR类型把它视为最大值并且只使用了存储字符串实际上需要的字节数(增加了一个额外的字节记录长度)。因而,较短的值当被插入一个语句为VARCHAR类型的字段时,将不会用空格填补(然而,较长的值仍然被截短)。,BLOB和TEXT类型BLOB是二进制大对象,如果想存储二进制数BLOB将是最佳选择,而TEXT与之相同,只是BOLOB按照二进制编码排序(区分大小写),TEXT按照字符文本模式排序(不区分大小写)。ENUM 和SET类型是特殊的串类型,其列值

22、必须从固定的串集中选择,二者差别为前者必须是只能选择其中的一个值,而后者可以多选。(不推荐使用),字符串列类型的可选属性BINARY使用此属性可以使列值作为二进制串处理,即看成BLOB类型。NULL 和NOT NULL同数值型功能相同DEFAULT同数值型功能相同,日期和时间列类型所有时间和日期列类型的类型名及其说明和所占的字节数见下表:,说明:每个时间和日期列类型都有一个零值,当插入非法数值时就用零值来添加表示日期时必须先按:年,月,日的顺序给出DATE,TIME,DATETIME分别是存储日期,时间与日期和时间的组合,其格式为“YYYY-MM-DD”,“hh:mm:ss”和“YYYY-MM

23、-DD hh:mm:ss”,对于DATETIME类型,日期和时间部分都需要TIMESTAMP时间戳列类型以YYYYMMDDhhmmss的格式来表示值,其取值范围是到2037年的某个时间,主要用于记录更改或创建某个记录,总结:常用数据类型,创建数据库,建立数据库操作:语法:create database 数据库名叙述:创建一个具有指定名称的数据库。如果要创建的数据库已经存在,或者没有创建它的适当权限,则此语句失败。例:建立一个student库。mysql create database student;,mysql数据库备份及恢复命令mysqldump,source的用法,还原一个数据库:mys

24、ql-h localhost-u root-p123456 数据库名 数据库所在路径(d:数据库.sql),备份MySQL数据库的命令mysqldump-hhostname-uusername-ppassword databasename backupfile.sql,备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。mysqldump-add-drop-table-uusername-ppassword databasename backupfile.sql,直接将MySQL数据库压缩备份备份MySQL数据库某个(

25、些)表mysqldump-hhostname-uusername-ppassword databasename specific_table1 specific_table2 backupfile.sql,同时备份多个MySQL数据库mysqldump-hhostname-uusername-ppassword databases databasename1 databasename2 databasename3 multibackupfile.sql仅仅备份数据库结构mysqldump no-data databases databasename1 databasename2 databas

26、ename3 structurebackupfile.sql备份服务器上所有数据库mysqldump all-databases allbackupfile.sql,还原MySQL数据库的命令mysql-hhostname-uusername-ppassword databasename backupfile.sql还原压缩的MySQL数据库gunzip backupfile.sql.gz|mysql-uusername-ppassword databasename将数据库转移到新服务器mysqldump-uusername-ppassword databasename|mysql host=

27、*.*.*.*-C databasename,几个常用用例:,1.导出整个数据库mysqldump-u 用户名-p 数据库名 导出的文件名mysqldump-u root-p dataname dataname.sql这个时候会提示要你输入root用户名的密码,输入密码后dataname数据库就成功备份在mysql/bin/目录中.2.导出一个表mysqldump-u 用户名-p 数据库名 表名 导出的文件名mysqldump-u root-p dataname users dataname_users.sql3.导出一个数据库结构mysqldump-u wcnc-p-d add-drop-t

28、able smgp_apps_wcnc d:wcnc_db.sql-d 没有数据 add-drop-table 在每个create语句之前增加一个drop table,4.导入数据库常用source 命令进入mysql数据库控制台,如mysql-u root-pmysqluse 数据库然后使用source命令,后面参数为脚本文件(如这里用到的.sql)mysqlsource d:wcnc_db.sql,建立表操作:语法:create table 表名(列名1 列类型,列名2 列类型,.);叙 述:在当前数据库下新创建一个数据表。列类型:表示该列的数据类型。例:建立一个表school,其由两列组

29、成,第一列属性为非空,并做为主键,并自增create table school(school_id int(10)not null auto_increment primary key,school_name varchar(20);,创建表,常见完整性约束:PRIMARY KEY 主码约束(主键)UNIQUE唯一性约束NOT NULL非空值约束AUTO_INCREMENT用于整数列默认自增1UNSIGNED 无符号整数DEFAULT default_value默认值约束DEFAULT cur_timestamp 创建新记录时默认保存当前时间(仅适用timestamp数据列)ON UPDATE

30、 cur_timestamp 修改记录时默认保存当前时间(仅适用timestamp数据列)CHARACTER SET name 指定字符集(仅适用字符串),数据表类型,在创建一个新的MySQL数据表时,可以为它设置一个类型,其中最重要的3种类型是MyISAM:成熟、稳定和易于管理InnoDB:加入事物、数据行级锁定机制、外键约束条件、崩溃恢复等新功能HEAP:只存在于内存中,可做临时表create table tmp()ENGINE=MyISAM,主键与外键,数据表之间的关联/引用关系是依靠具体的主键(primary key)和外键(foreign key)建立起来的。主键:帮助MySQL以最

31、快的速度把一条特点的数据记录的位置确定下来。主键必须是唯一的主键应该是紧凑的,因此整数类型比较适合外键:引用另外一个数据表的某条记录。外键列类型尽可能与主键列类型保持一致外键列应该加上NOT NULL,主键create table student(sid int not null auto_increment,name varchar(20)not null,primary key(sid);外键(自动检查外键是否匹配,仅适用InnoDB)create table score(cid int not null auto_increment primary key,score int,sid i

32、nt,foreign key(sid)references student(sid);,主表和从表,1、当主表中没有对应的记录时,不能将记录添加到子表成绩表中不能出现在学员信息表中不存在的学号;2、不能更改主表中的值而导致子表中的记录孤立把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变;3、子表存在与主表对应的记录,不能从主表中删除该行不能把有成绩的学员删除了4、删除主表前,先删子表先删学员成绩表、后删除学员信息表,思考,电话号码一般使用什么数据类型存储?性别一般使用什么数据类型存储?年龄信息一般使用什么数据类型存储?照片信息一般使用什么数据类型存储?薪水一般使用什么数据类型存储?

33、,思考,学员姓名允许为空吗?家庭地址允许为空吗?电子邮件信息允许为空吗?考试成绩允许为空吗?,思考,在主键列输入的数值,允许为空吗?不允许一个表可以有多个主键吗?不可以在一个学校数据库中,如果一个学校内允许重名的学员,但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗?,选择主键的原则,最少性尽量选择单个键作为主键稳定性尽量选择数值更新少的列作为主键,思考,标识列允许为字符数据类型吗?INT如果标识列A的初始值为1,则输入三行数据以后,再删除两行,下次再输入数据行的时候,标识值从多少开始?四,例:建立一个学生信息表(student)定义列sno学号,类型为5位定长字符串,

34、非空,主键定义列sname姓名,类型为8位定长字符串,非空定义列ssex性别,取值1或0定义列sage年龄,类型为短整型定义列sdept系名,数据类型为20位变长字符串例:建立一个课程信息表(course)定义列courseid课程号,类型为整型,非空,自动增长,主键定义列cname课程名,类型为16位变长字符串,非空例:建立一个学生考试成绩信息表(sc)定义列grade成绩,类型为整型要求把表字段补充完整,可以通过学号查看学生相关课程的成绩,显示表结构操作,语法:describe 表名;desc 表名;叙述:用于显示表的创建结构。,删除数据库或表操作,删除表操作语法:drop table i

35、f exists tab_name,tab_name.叙述:从数据库中删除给定的表。如果给出if exists 子句,则删除不存在的表不会出错。删除数据库操作语法:drop database if exists db_name叙述:删除给定的数据库。在删除一个数据库后,它就永远没有了,因此要特别小心。如果给出if exists 子句,则删除不存在的数据库不会出错。,更改表结构操作,语法:alter table 表名 action;说明:action 可以是如下语句:add 列名 建表语句 first|after 列名可以为表添加一列,如果没指定first或者after,则在列尾添加一列,否则在

36、指定列添加新列add primary key(列名)为表添加一个主键,如果主键已经存在,则出现错误add foreign key(列名)references 表名(列名)为表添加一个外键alter 列名 set default 默认值可以更改指定列默认值,change 旧列名 新列名 first|after 列名 可以更改列类型和列名称,如果原列的名字和新列的名字相同modify 列名 first|after 列名 和change的作用相同drop 列名/可以删除一列drop primary key/可以删除主键engine 类型名/可以改变表类型rename as 新表名/可以将表名更改,举

37、例1:向people表中添加字段address2,类型为varchar,最大长度为100alter table people add address2 varchar(100);举例2:将people表中的name列默认值改为100:alter table people alter name set default 100;举例3:向student表增加“入学时间”列,其数据类型为日期型。alter table student add scome date;注:无论基本表中原来是否已有数据,新增加的列一律为空值。举例4:将年龄的数据类型改为半字长整数。alter table student m

38、odify sage smallint;注:修改原有的列定义有可能会破坏已有数据,MySQL运算符,算数运算符 比较运算符 逻辑运算符 位运算符,算数运算符,用字符串表示的数字在任何可能便于计算的地方都被自动地转换为数字。当执行转换时,MySQL遵循两个基本规则:如果第一位是数字的字符串被用于一个算数运算中,那么它被转换为这个数字的值。如果一个包含字符和数字混合的字符串不能被正确的转换为数字,那么它被转换成0。,字符串自动转换数字,比较运算符 比较运算符允许我们对表达式的左边和右边进行比较。一个比较运算符的结果总是1(真),0(假),或是为NULL(不能确定)。比较运算符可以用于比较数字和字符

39、串。数字作为浮点值比较,而字符串以不区分大小写的方式进行比较(除非使用特殊的BINARY二进制关键字),对于运算符,如果表达式两边不相等返回真值,相等返回假值。还可以比较字符串,BETWEEN运算符 用于检验一个值(或者一个求值表达式)是否存在一个指定的范围内:,运算符用于检验一个值(或者一个求值表达式)是否包含在一个指定的值集合中。,可以使用IS NULL或者IS NOT NULL运算符来测定是否为空。可以使用特殊的运算符,MySQL称为”NULL安全的等于”运算符。这意味着即使当包含在比较运算符中的表达式含有一个NULL值时,MySQL也会为比较运算符返回一个真值或假值。,如果想执行通配符

40、数据搜索,应该使用LIKE运算符。它通过在表达式中允许使用专门的通配字符,可以找出与指定搜索字符串全部或部分匹配的记录。,默认情况下,比较是不区分大小写的方式执行的。然而,以前我们注意到,可以添加BINARY关键字让MySQL执行区分大小写的比较。,MySQL数据库中的通配符,“%”(百分号)代表任意长度(长度可以为0)的字符串举例:a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab 等都满足该匹配串“_”(下横线)代表任意单个字符举例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串,REGEXP运算符 允许我们执行更复杂的字符串比

41、较运算,在这里使用UNIX正则表达式。,逻辑运算符,位运算符,如下表所示:“”表示按位取反。“”表示异或。,插入记录操作,语法:叙述:如果表名后面没写字段名,则默认是向所有的字段添加值,另外字符串值应该用 或“”引号括起来举例1:向people表中添加一条记录:insert into people(name,age)values(“zhangsan”,20);,INSERT INTO 列名 VALUES,插入案例,创建一张学生信息表,往表中插入数据create table students(scode int not null auto_increment,sname varchar(20)n

42、ot null,saddress varchar(20)default未知,sgrade int,semail varchar(20),ssex bit,primary key(scode);,插入数据行 1,注意事项1:每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验;,插入数据行 2,注意事项2:每个数据值的数据类型、精度和小数位数必须与相应的列匹配;,插入数据行3,注意事项4:如果在设计表的时候就指定了某列不允许为空,则必须插入数据;,插入数据行4,注意事项6:具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值,IN

43、SERT INTO Students(SName,SAddress,SGrade,SEmail,SSEX)VALUES(张青裁,DEFAULT,6,ZQCS,0),插入多行数据,INSERT INTO(列名)VALUES(),(),(),插入多行数据,INSERT INTO(列名)SELECT FROM,学生、课程、成绩插入数据,学生信息95001,洛燕妮,女,20,信息系 95002,欧阳炎,男,19,计算机系 95003,何东升,男,21,美术系 95004,刘晨,男,18,计算机系 95005,沙明华,女,21,美术系 95006,欧阳宝宝,男,19,美术系课程信息1,JAVA2,C3,

44、.NET成绩信息95001,1,98 95002,1,50 95004,1,70 95003,4,95 95005,4,40 95006,4,77 95001,2,80 95002,3,58 95006,2,70,更改记录操作,语法:叙述:where 子句是判断语句,用来设定条件,限制只更新匹配的行,如果不带where子句,则更新所有行数据。举例:将student表中的所有学生名称为Alex的改为Tom:update student set sname=Tom where sname=Alex;,UPDATE SET WHERE,更新数据行,删除记录操作,语法:叙述:此语句删除表中的行,如果不

45、带where子句,则删除整个表中的记录,但是表不被删除。举例:删除student表中的所有年龄小于18岁的记录:delete from student where sage18;,DELETE FROM WHERE,补充说明,删除学生编号为95005的学生信息包括成绩信息delete from student,sc using student,sc where student.sno=sc.studentid and student.sno=95005;说明:表和字段的引用方式有两种:绝对引用和相对引用绝对引用:数据库名.表名(.字段名)相对引用:表名.(字段名),删除数据行,什么是查询?,客

46、户程序,SQL SERVER,SELECT*FROM SALES,查询产生一个虚拟表,看到的是表形式显示的结果,但结果并不真正存储,每次执行查询只是现从数据表中提取数据,并按照表的形式显示出来,怎么查的?,SQL语法,SELECT DISTINCT|DISTINCTROW|ALL select_expression,.FROM table_references WHERE where_definition GROUP BY col_name,.HAVING where_definition ORDER BY unsigned_integer|col_name|formula ASC|DESC,

47、.LIMIT offset,rows PROCEDURE procedure_name,查询记录操作,from子句:指定查询数据的表where子句:查询数据的过滤条件group by子句:对匹配where子句的查询结果进行分组having子句:对分组后的结果进行条件限制order by子句:对查询结果结果进行排序,后面跟desc降序或asc升序(默认)。limit子句:对查询的显示结果限制数目procedure子句:查询存储过程返回的结果集数据,查询举例,SELECT FROM WHERE ORDER BY ASC或DESC,举例1:查询全体学生的学号与姓名。select sno,sname

48、from student;举例2:查询全体学生的详细记录。select sno,sname,ssex,sage,sdept from student;或select*from student;举例3:查全体学生的姓名及其出生年份。select sname,2008-sage from student;举例4:查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。select sname,year of birth:,2008-sage,islower(sdept)from student;举例5:查询选修了课程的学生学号(去掉重复的记录)select distinct studen

49、tid from sc;,举例6:查询全体学生的学号与姓名,用中文显示列名。select sno as 编号,sname as 姓名 from student;举例7:给表设置别名。select s.sno,s.sname from student as s;举例8:查询年龄在20以下的学生的姓名。select sname from student where sage20;举例9:查询全体学生的姓名、年龄,要求按照年龄降序排序。select sname,sage from student order by sage desc;举例10:查询年龄最大的前3个学生的姓名和年龄,或第4、5个学生s

50、elect sname,sage from student order by sage desc limit 3;或(limit 3,2),使用集函数,SQL提供的统计函数称为集函数.主要的集函数:记数函数:count(列名)计算元素的个数求和函数:sum(列名)对某一列的值求和,但属性必须是整型计算平均值:avg(列名)对某一列的值计算平均值求最大值:max(列名)找出某一列的最大值求最小值:min(列名)找出某一列的最小值,举例11:查询学生总数。select count(*)from student;举例12:查询选修了课程的学生人数。select count(distinct stud

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号