adoquery1.Fielddefs[1].Name; 字段名
dbgrid1.columns[0].width:=10; dbgrid的字段宽度
adoquery1.Fields[i].DataType=ftString 字段类型
update jb_spzl set kp_item_name=upper(kp_item_name) 修改数据库表中某一列为大写
select * from master.dbo.sysobjects ,jm_barcode.dbo.users 多库查询
adotable1.sort:='字段名称 ASC' adotable排序
SQL常用语句一览
sp_password null,'新密码','sa' 修改数据库密码
(1)数据记录筛选:
sql="select * from 数据表 where 字段名=字段值 orderby 字段名 [desc] "
sql="select * from 数据表 where 字段名 like '%字段值%' orderby 字段名 [desc]"
sql="select top10 * from 数据表 where 字段名 orderby 字段名[desc]"
sql="select * from 数据表 where 字段名 in('值1','值2','值3')"
sql="select * from 数据表 where 字段名 between 值1 and 值 2"
(2)更新数据记录:
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2……字段n=值n where 条件表达式"
(3)删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表 "(将数据表所有记录删除)
(4)添加数据记录:
sql="insert into 数据表(字段1,字段2,字段3…) values(值1,值2,值3…)"
sql="insert into 目标数据表 select * from 源数据表"(把源数据表的记录添加到目标数据表)
(5)数据记录统计函数:
AVG(字段名)得出一个表格栏平均值
COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名)取得一个表格栏最大的值
MIN(字段名)取得一个表格栏最小的值
SUM(字段名)把数据栏的值相加
引用以上函数的方法:
sql="selectsum(字段名)as别名from数据表where条件表达式"
setrs=conn.excute(sql)
用rs("别名")获取统的计值,其它函数运用同上。
(5)数据表的建立和删除:
CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)
例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ())
DROPTABLE数据表名称(永久性删除一个数据表)
4.记录集对象的方法:
rs.movenext将记录指针从当前的位置向下移一行
rs.moveprevious将记录指针从当前的位置向上移一行
rs.movefirst将记录指针移到数据表第一行
rs.movelast将记录指针移到数据表最后一行
rs.absoluteposition=N将记录指针移到数据表第N行
rs.absolutepage=N将记录指针移到第N页的第一行
rs.pagesize=N设置每页为N条记录
rs.pagecount根据pagesize的设置返回总页数
rs.recordcount返回记录总数
rs.bof返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete删除当前记录,但记录指针不会向下移动
rs.addnew添加记录到数据表末端
rs.update更新数据表记录
SQL语句的添加、删除、修改虽然有如下很多种方法,但在使用过程中还是不够用,不知是否有高手把更多灵活的使用方法贡献出来?
添加、删除、修改使用db.Execute(Sql)命令执行操作
╔----------------╗
☆ 数据记录筛选 ☆
╚----------------╝
注意:单双引号的用法可能有误(没有测式)
Sql = "Select Distinct 字段名 From 数据表"
Distinct函数,查询数据库存表内不重复的记录
Sql = "Select Count(*) From 数据表 where 字段名1>#18:0:0# and 字段名1< #19:00# "
count函数,查询数库表内有多少条记录,“字段名1”是指同一字段
例:
set rs=conn.execute("select count(id) as idnum from news")
response.write rs("idnum")
sql="select * from 数据表 where 字段名 between 值1 and 值2"
Sql="select * from 数据表 where 字段名 between #2003-8-10# and #2003-8-12#"
在日期类数值为2003-8-10 19:55:08 的字段里查找2003-8-10至2003-8-12的所有记录,而不管是几点几分。
select * from tb_name where datetime between #2003-8-10# and #2003-8-12#
字段里面的数据格式为:2003-8-10 19:55:08,通过sql查出2003-8-10至2003-8-12的所有纪录,而不管是几点几分。
Sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
Sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
模糊查询
Sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
查找数据库中前10记录
Sql="select top n * form 数据表 order by newid()"
随机取出数据库中的若干条记录的方法
top n,n就是要取出的记录数
Sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"
╔----------------╗
☆ 添加数据记录 ☆
╚----------------╝
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 数据表 valuess (值1,值2,值3 …)"
不指定具体字段名表示将按照数据表中字段的顺序,依次添加
sql="insert into 目标数据表 select * from 源数据表"
把源数据表的记录添加到目标数据表
╔----------------╗
☆ 更新数据记录 ☆
╚----------------╝
Sql="update 数据表 set 字段名=字段值 where 条件表达式"
Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n "
没有条件则更新整个数据表中的指定字段值
╔----------------╗
☆ 删除数据记录 ☆
╚----------------╝
Sql="delete from 数据表 where 条件表达式"
Sql="delete from 数据表"
没有条件将删除数据表中所有记录)
╔--------------------╗
☆ 数据记录统计函数 ☆
╚--------------------╝
AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别名") 获取统的计值,其它函数运用同上。
╔----------------------╗
☆ 数据表的建立和删除 ☆
╚----------------------╝
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表名称 (永久性删除一个数据表)
╔--------------------╗
☆ 记录集对象的方法 ☆
╚--------------------╝
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录
%:代表任意长的一段字符 _ :代表一个字符 [a,b,c,d]:a、b、c、d中的任意一个 [^a,b,c,d]:不在a、b、c、d中的任意一个
-
数据库增删改查基本语句
2018-02-23 17:13:49原文地址:数据库增删改查基本语句作者:风过后 adoquery1.Fielddefs[1].Name; 字段名 dbgrid1.columns[0].width:=10; dbgrid的字段宽度 adoquery1.Fields[i].DataType=ftString 字段类型 update jb_spzl set kp_...原文地址:数据库增删改查基本语句作者:风过后adoquery1.Fielddefs[1].Name; 字段名
dbgrid1.columns[0].width:=10; dbgrid的字段宽度
adoquery1.Fields[i].DataType=ftString 字段类型
update jb_spzl set kp_item_name=upper(kp_item_name) 修改数据库表中某一列为大写
select * from master.dbo.sysobjects ,jm_barcode.dbo.users 多库查询
adotable1.sort:='字段名称 ASC' adotable排序
SQL常用语句一览
sp_password null,'新密码','sa' 修改数据库密码
(1)数据记录筛选:
sql="select * from 数据表 where 字段名=字段值 orderby 字段名 [desc] "
sql="select * from 数据表 where 字段名 like '%字段值%' orderby 字段名 [desc]"
sql="select top10 * from 数据表 where 字段名 orderby 字段名[desc]"
sql="select * from 数据表 where 字段名 in('值1','值2','值3')"
sql="select * from 数据表 where 字段名 between 值1 and 值 2"
(2)更新数据记录:
sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2……字段n=值n where 条件表达式"
(3)删除数据记录:
sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表 "(将数据表所有记录删除)
(4)添加数据记录:
sql="insert into 数据表(字段1,字段2,字段3…) values(值1,值2,值3…)"
sql="insert into 目标数据表 select * from 源数据表"(把源数据表的记录添加到目标数据表)
(5)数据记录统计函数:
AVG(字段名)得出一个表格栏平均值
COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名)取得一个表格栏最大的值
MIN(字段名)取得一个表格栏最小的值
SUM(字段名)把数据栏的值相加
引用以上函数的方法:
sql="selectsum(字段名)as别名from数据表where条件表达式"
setrs=conn.excute(sql)
用rs("别名")获取统的计值,其它函数运用同上。
(5)数据表的建立和删除:
CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……)
例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ())
DROPTABLE数据表名称(永久性删除一个数据表)
4.记录集对象的方法:
rs.movenext将记录指针从当前的位置向下移一行
rs.moveprevious将记录指针从当前的位置向上移一行
rs.movefirst将记录指针移到数据表第一行
rs.movelast将记录指针移到数据表最后一行
rs.absoluteposition=N将记录指针移到数据表第N行
rs.absolutepage=N将记录指针移到第N页的第一行
rs.pagesize=N设置每页为N条记录
rs.pagecount根据pagesize的设置返回总页数
rs.recordcount返回记录总数
rs.bof返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete删除当前记录,但记录指针不会向下移动
rs.addnew添加记录到数据表末端
rs.update更新数据表记录
SQL语句的添加、删除、修改虽然有如下很多种方法,但在使用过程中还是不够用,不知是否有高手把更多灵活的使用方法贡献出来?
添加、删除、修改使用db.Execute(Sql)命令执行操作
╔----------------╗
☆ 数据记录筛选 ☆
╚----------------╝
注意:单双引号的用法可能有误(没有测式)
Sql = "Select Distinct 字段名 From 数据表"
Distinct函数,查询数据库存表内不重复的记录
Sql = "Select Count(*) From 数据表 where 字段名1>#18:0:0# and 字段名1< #19:00# "
count函数,查询数库表内有多少条记录,“字段名1”是指同一字段
例:
set rs=conn.execute("select count(id) as idnum from news")
response.write rs("idnum")
sql="select * from 数据表 where 字段名 between 值1 and 值2"
Sql="select * from 数据表 where 字段名 between #2003-8-10# and #2003-8-12#"
在日期类数值为2003-8-10 19:55:08 的字段里查找2003-8-10至2003-8-12的所有记录,而不管是几点几分。
select * from tb_name where datetime between #2003-8-10# and #2003-8-12#
字段里面的数据格式为:2003-8-10 19:55:08,通过sql查出2003-8-10至2003-8-12的所有纪录,而不管是几点几分。
Sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"
Sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"
模糊查询
Sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
查找数据库中前10记录
Sql="select top n * form 数据表 order by newid()"
随机取出数据库中的若干条记录的方法
top n,n就是要取出的记录数
Sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"
╔----------------╗
☆ 添加数据记录 ☆
╚----------------╝
sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 数据表 valuess (值1,值2,值3 …)"
不指定具体字段名表示将按照数据表中字段的顺序,依次添加
sql="insert into 目标数据表 select * from 源数据表"
把源数据表的记录添加到目标数据表
╔----------------╗
☆ 更新数据记录 ☆
╚----------------╝
Sql="update 数据表 set 字段名=字段值 where 条件表达式"
Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n "
没有条件则更新整个数据表中的指定字段值
╔----------------╗
☆ 删除数据记录 ☆
╚----------------╝
Sql="delete from 数据表 where 条件表达式"
Sql="delete from 数据表"
没有条件将删除数据表中所有记录)
╔--------------------╗
☆ 数据记录统计函数 ☆
╚--------------------╝
AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)
用 rs("别名") 获取统的计值,其它函数运用同上。
╔----------------------╗
☆ 数据表的建立和删除 ☆
╚----------------------╝
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表名称 (永久性删除一个数据表)
╔--------------------╗
☆ 记录集对象的方法 ☆
╚--------------------╝
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录
%:代表任意长的一段字符 _ :代表一个字符 [a,b,c,d]:a、b、c、d中的任意一个 [^a,b,c,d]:不在a、b、c、d中的任意一个 -
SQL数据库增删改查基本语句
2015-08-25 14:23:00adoquery1.Fielddefs[1].Name;... dbgrid的字段宽度adoquery1.Fields[i].DataType=ftString 字段类型update jb_spzl set kp_item_name=upper(kp_item_name) 修改数据库表中某一列为大写select * from master...转载于:https://www.cnblogs.com/ruite/p/4757324.html
-
嵌入式 数据库增删改查基本语句
2014-09-08 18:38:06adoquery1.Fielddefs[1].Name; 字段名 dbgrid1.columns[0].width:=10; dbgrid的字段宽度 adoquery1.Fields[i]....update jb_spzl set kp_item_name=upper(kp_item_name) 修改数据库表中某一列为大写 select * from maadoquery1.Fielddefs[1].Name; 字段名 dbgrid1.columns[0].width:=10; dbgrid的字段宽度 adoquery1.Fields[i].DataType=ftString 字段类型 update jb_spzl set kp_item_name=upper(kp_item_name) 修改数据库表中某一列为大写 select * from master.dbo.sysobjects ,jm_barcode.dbo.users 多库查询 adotable1.sort:='字段名称 ASC' adotable排序 SQL常用语句一览 sp_password null,'新密码','sa' 修改数据库密码 (1)数据记录筛选: sql="select * from 数据表 where 字段名=字段值 orderby 字段名 [desc] " sql="select * from 数据表 where 字段名 like '%字段值%' orderby 字段名 [desc]" sql="select top10 * from 数据表 where 字段名 orderby 字段名[desc]" sql="select * from 数据表 where 字段名 in('值1','值2','值3')" sql="select * from 数据表 where 字段名 between 值1 and 值 2" (2)更新数据记录: sql="update 数据表 set 字段名=字段值 where 条件表达式" sql="update 数据表 set 字段1=值1,字段2=值2……字段n=值n where 条件表达式" (3)删除数据记录: sql="delete from 数据表 where 条件表达式" sql="delete from 数据表 "(将数据表所有记录删除) (4)添加数据记录: sql="insert into 数据表(字段1,字段2,字段3…) values(值1,值2,值3…)" sql="insert into 目标数据表 select * from 源数据表"(把源数据表的记录添加到目标数据表) (5)数据记录统计函数: AVG(字段名)得出一个表格栏平均值 COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名)取得一个表格栏最大的值 MIN(字段名)取得一个表格栏最小的值 SUM(字段名)把数据栏的值相加 引用以上函数的方法: sql="selectsum(字段名)as别名from数据表where条件表达式" setrs=conn.excute(sql) 用rs("别名")获取统的计值,其它函数运用同上。 (5)数据表的建立和删除: CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……) 例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ()) DROPTABLE数据表名称(永久性删除一个数据表) 4.记录集对象的方法: rs.movenext将记录指针从当前的位置向下移一行 rs.moveprevious将记录指针从当前的位置向上移一行 rs.movefirst将记录指针移到数据表第一行 rs.movelast将记录指针移到数据表最后一行 rs.absoluteposition=N将记录指针移到数据表第N行 rs.absolutepage=N将记录指针移到第N页的第一行 rs.pagesize=N设置每页为N条记录 rs.pagecount根据pagesize的设置返回总页数 rs.recordcount返回记录总数 rs.bof返回记录指针是否超出数据表首端,true表示是,false为否 rs.eof返回记录指针是否超出数据表末端,true表示是,false为否 rs.delete删除当前记录,但记录指针不会向下移动 rs.addnew添加记录到数据表末端 rs.update更新数据表记录 SQL语句的添加、删除、修改虽然有如下很多种方法,但在使用过程中还是不够用,不知是否有高手把更多灵活的使用方法贡献出来? 添加、删除、修改使用db.Execute(Sql)命令执行操作 ╔----------------╗ ☆ 数据记录筛选 ☆ ╚----------------╝ 注意:单双引号的用法可能有误(没有测式) Sql = "Select Distinct 字段名 From 数据表" Distinct函数,查询数据库存表内不重复的记录 Sql = "Select Count(*) From 数据表 where 字段名1>#18:0:0# and 字段名1< #19:00# " count函数,查询数库表内有多少条记录,“字段名1”是指同一字段 例: set rs=conn.execute("select count(id) as idnum from news") response.write rs("idnum") sql="select * from 数据表 where 字段名 between 值1 and 值2" Sql="select * from 数据表 where 字段名 between #2003-8-10# and #2003-8-12#" 在日期类数值为2003-8-10 19:55:08 的字段里查找2003-8-10至2003-8-12的所有记录,而不管是几点几分。 select * from tb_name where datetime between #2003-8-10# and #2003-8-12# 字段里面的数据格式为:2003-8-10 19:55:08,通过sql查出2003-8-10至2003-8-12的所有纪录,而不管是几点几分。 Sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" Sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]" 模糊查询 Sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]" 查找数据库中前10记录 Sql="select top n * form 数据表 order by newid()" 随机取出数据库中的若干条记录的方法 top n,n就是要取出的记录数 Sql="select * from 数据表 where 字段名 in ('值1','值2','值3')" ╔----------------╗ ☆ 添加数据记录 ☆ ╚----------------╝ sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" sql="insert into 数据表 valuess (值1,值2,值3 …)" 不指定具体字段名表示将按照数据表中字段的顺序,依次添加 sql="insert into 目标数据表 select * from 源数据表" 把源数据表的记录添加到目标数据表 ╔----------------╗ ☆ 更新数据记录 ☆ ╚----------------╝ Sql="update 数据表 set 字段名=字段值 where 条件表达式" Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" Sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n " 没有条件则更新整个数据表中的指定字段值 ╔----------------╗ ☆ 删除数据记录 ☆ ╚----------------╝ Sql="delete from 数据表 where 条件表达式" Sql="delete from 数据表" 没有条件将删除数据表中所有记录) ╔--------------------╗ ☆ 数据记录统计函数 ☆ ╚--------------------╝ AVG(字段名) 得出一个表格栏平均值 COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名) 取得一个表格栏最大的值 MIN(字段名) 取得一个表格栏最小的值 SUM(字段名) 把数据栏的值相加 引用以上函数的方法: sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" set rs=conn.excute(sql) 用 rs("别名") 获取统的计值,其它函数运用同上。 ╔----------------------╗ ☆ 数据表的建立和删除 ☆ ╚----------------------╝ CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) 例:CREATE TABLE tab01(name varchar(50),datetime default now()) DROP TABLE 数据表名称 (永久性删除一个数据表) ╔--------------------╗ ☆ 记录集对象的方法 ☆ ╚--------------------╝ rs.movenext 将记录指针从当前的位置向下移一行 rs.moveprevious 将记录指针从当前的位置向上移一行 rs.movefirst 将记录指针移到数据表第一行 rs.movelast 将记录指针移到数据表最后一行 rs.absoluteposition=N 将记录指针移到数据表第N行 rs.absolutepage=N 将记录指针移到第N页的第一行 rs.pagesize=N 设置每页为N条记录 rs.pagecount 根据 pagesize 的设置返回总页数 rs.recordcount 返回记录总数 rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否 rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否 rs.delete 删除当前记录,但记录指针不会向下移动 rs.addnew 添加记录到数据表末端 rs.update 更新数据表记录 %:代表任意长的一段字符 _ :代表一个字符 [a,b,c,d]:a、b、c、d中的任意一个 [^a,b,c,d]:不在a、b、c、d中的任意一个
一、增:有2种方法
1.使用insert插入单行数据:
语法:insert [into] <表名> [列名] values <列值>
例:insert into Strdents (姓名,性别,出生日期) values ('王伟华','男','1983/6/15')
注意:如果省略表名,将依次插入所有列
2.使用insert,select语句将现有表中的 数据添加到已有的新表中
语法:insert into <已有的新表> <列名> select <原表列名> from <原表名>
例:insert into addressList ('姓名','地址','电子邮件')select name,address,email
from Strdents
注意:查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致
二、删:有2中方法
1.使用delete删除数据某些数据
语法:delete from <表名> [where <删除条件>]
例:delete from a where name='王伟华'(删除表a中列值为王伟华的行)
注意:删除整行不是删除单个字段,所以在delete后面不能出现字段名
2.使用truncate table 删除整个表的数据
语法:truncate table <表名>
例:truncate table addressList
注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能
用于有外建约束引用的表
三、改 使用update更新修改数据
语法:update <表名> set <列名=更新值> [where <更新条件>]
例:update addressList set 年龄=18 where 姓名='王伟华'
注意:set后面可以紧随多个数据列的更新值(非数字要引号);where子句是可选的(非数字要引号),用来限制条件,如果不选则整个表的所有行都被更新
四、查
1.普通查询
语法:select <列名> from <表名> [where <查询条件表达试>] [order by <排序的列
名>[asc或desc]]
1).查询所有数据行和列
例:select * from a
说明:查询a表中所有行和
2).查询部分行列--条件查询
例:select i,j,k from a where f=5
说明:查询表a中f=5的所有行,并显示i,j,k3列
3).在查询中使用AS更改列名
例:select name as 姓名 from a where gender='男'
说明:查询a表中性别为男的所有行,显示name列,并将name列改名为(姓名)显示
4).查询空行
例:select name from a where email is null
说明:查询表a中email为空的所有行,并显示name列;SQL语句中用is null或者is not null
来判断是否为空行
5).在查询中使用常量
例:select name '北京' as 地址 from a
说明:查询表a,显示name列,并添加地址列,其列值都为'北京'
6).查询返回限制行数(关键字:top )
例1:select top 6 name from a
说明:查询表a,显示列name的前6行,top为关键字(oracle 中没有top关键字
用rownum替代)
select * from a where rownum<6
7).查询排序(关键字:order by , asc , desc)
例:select name
from a
where grade>=60
order by desc
说明:查询表中成绩大于等于60的所有行,并按降序显示name列;默认为ASC升序
2.模糊查询
1).使用like进行模糊查询
注意:like运算副只用语字符串,
例:select * from a where name like '赵%'
说明:查询显示表a中,name字段第一个字为赵的记录
2).使用between在某个范围内进行查询
例:select * from a where age between 18 and 20
说明:查询显示表a中年龄在18到20之间的记录
3).使用in在列举值内进行查询(in后是多个的数据)
例:select name from a where address in ('北京','上海','唐山')
说明:查询表a中address值为北京或者上海或者唐山的记录,显示name字段
3.分组查询
1).使用group by进行分组查询
例:select studentID as 学员编号, AVG(score) as 平均成绩 (注释:这里的score是列名)
from score (注释:这里的score是表名)
group by studentID
2).使用having子句进行分组筛选
例:select studentID as 学员编号, AVG
from score
group by studentID
having count(score)>1
说明:接上面例子,显示分组后count(score)>1的行,由于where只能在没有分组
时使用,分组后只能使用having来限制条件,
4.多表联接查询
1).内联接
①在where子句中指定联接条件
例:select a.name,b.mark
from a,b
where a.name=b.name
说明:查询表a和表b中name字段相等的记录,并显示表a中的name字段和表b中的
mark字段
-
MySQL数据库增删改查常用语句详解
2020-09-21 17:48:28MySQL数据库增删改查常用语句详解一 MySQL数据库表结构1.1 常见数据类型1.2 常用约束类型1.3 MySQL存储引擎二 MySQL前置基本操作2.1 修改数据库密码2.1.1 创建登录用户2.1.2 给用户授权登录2.1.3 测试用户登录2.1.4 ...MySQL数据库增删改查常用语句详解
一 MySQL数据库表结构
数据以表格的形式出现,每行为单独的一条记录,每列为一个单独的字段,许多的记录和字段组成一张表单(table)若干的表单组成(database)。
1.1 常见数据类型
字符串类型(CHAR(O-255固定长度)
VARCHAR(O-255可变长度))
数值类型(INT(整数型)、FLOAT(浮点型))
日期和时间类型(DATE(年月日)、TIME(时分秒))1.2 常用约束类型
约束是一种限制,它通过对表的行或到的数据做出限制,来确保表的数据的完整性、唯一性。
主键约束 primary key:
主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也
不允许出现空值。每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。外键约束foreign key:
外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的
两个字段或是两个表的两个字段之间的参照关系。唯一约束unique:
唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。唯一约束不允许出现重复的值,但是可以为多个null。同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。非空约束not null与默认值default:
非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。Null类型特征:所有的类型的值都可以是null,包括int、float等数据类型。1.3 MySQL存储引擎
存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎,或者编写存储引擎。
MYISAM: 默认引擎、插入和查询速度较快,支持全文索引,不支持事务、行级锁和外键约束等功能。
INNODB: 支持事务、行级锁和外键约束等功能。
MEMORY: 工作在内存中,通过散列字段保存数据,速度快、不能永久保存数据。二 DDL语句:数据定义语句
2.1 修改数据库密码
MySQL登录及退出命令:
设置密码: mysqladmin -uroot password’123’登录:mysql -u用户名 -p密码 -P端口 -S套接字文件
-p 用户密码.
-h 登陆位置(主机名或ip地址)
-P 端口号(3306改了就不是了)
-S 套接字文件(/var/lib/mysql/mysql.sock)
退出命令:exit或ctrl+d2.1.1 创建登录用户
mysql>create user zhangsan@'%'identified by'123'; %:指任意的远程终端
2.1.2 给用户授权登录
GRANT all ON *.* TO 'zhangsan'@'192.168.1.149' IDENTIFIED BY '123';
2.1.3 测试用户登录
mysql -uzhangsan -p123 -h 192.168.1.149
2.1.4 修改用户自身密码
mysql>set password=password ('123456') ;
2.1.5 root用户更改其他用户密码
mysql>set password for zhangsan'%'=password('123123');
2.1.6 root找回密码及修改
关闭数据库,修改主配置文件(/etc/my.cnf)添加: skip-grant-tables systemctl stop mysqld #vim /etc/my.cnf skip-grant-tables 启动数据库,空密码登录并修改密码 systemctl start mysqld update mysql.user set password=password(‘新密码’) where user='root'; 或者 update mysql.user set authentication_string=password('123') where user='root'; ###centos7 删除skip-grant-tables,重启数据库验证新密码
2.2 查看数据库结构
show databases;
2.3 创建和删除数据库
create database auth; drop database auth;
2.4 使用数据库
use auth;
2.5 查看表
mysql> show tables; +----------------+ | Tables_in_auth | +----------------+ | users | +----------------+
2.6 查看数据表的结构
mysql> describe users; +-------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+-------+ | user_name | char(16) | NO | PRI | NULL | | | user_passwd | char(48) | YES | | | | +-------------+----------+------+-----+---------+-------+
2.7 修改数据表的名称
Mysql>alter table a2 rename a1;
2.8 修改数据表的字段类型
Mysql>describe a1; Mysql>alter table a1 modify name char(50); Mysql>describe a1;
2.9 修改数据表的字段属性
例:把info表的score字段改为score,5位有效数字,非空
alter table info change score score decimal(5,2) not null;
2.10 添加和删除字段
Mysql>describe a1; Mysql>alter table a1 add time datetime;
Mysql>alter table a1 drop birthday;
三 DML语句:数据管理语句
对表中数据进行管理
3.1 INSERT插入新数据
insert into users(user_name,user_passwd) values('peiqi',password('250')); insert into users(user_name,user_passwd) values('qiaozhi','250'); insert into users values('hapi',password('360'));
3.2 UPDATE更新表中原有数据
update users set user_passwd=password('250') where user_name='qiaozhi'; update users set user_name='peihua' where user_name='qiaozhi';
直接修改数据库来实现数据库管理员密码的修改
update mysql.user set authentication_string=password('123') where user_name='root';
3.3 DELETE删除不需要的数据
DELETE删除不需要的数据 delete from users where user_name='hapi'; 删除系统用户 delete from mysql.user where user='yiqi'; 删除表中所有记录 delete from auth.users;
四 DQL语句:数据查询语句
4.1 基础查询语句
select * from auth.users where user_name='peiqi'; #查询用户名为佩奇的所有记录信息 select user_passwd from auth.users where user_name='peiqi'; #查询用户名为佩奇的密码信息
4.2 进阶查询语句
4.2.1准备工作:创建数据库player,表player
create database player; use player; create table player (id int(4) not null,name varchar(10) not null,level int(3) not null,primary key (`id`)); insert into player (id,name,level) values ('30','抢宝真多呀',47); insert into player (id,name,level) values ('15','新五皇·白胡子',46); insert into player (id,name,level) values ('63','新五皇–敬神',46); insert into player (id,name,level) values ('199','D 丶狙击王',46); insert into player (id,name,level) values ('298','唐三',46); insert into player (id,name,level) values ('51','新五皇·暴雪',45); insert into player (id,name,level) values ('272','D 丶抢人头辅助',45);
4.2.2 按等级降序查询level大于45的记录
mysql> select id,name,level from player where level>=45 order by level desc; +-----+----------------------+-------+ | id | name | level | +-----+----------------------+-------+ | 30 | 抢宝真多呀 | 47 | | 15 | 新五皇·白胡子 | 46 | | 63 | 新五皇–敬神 | 46 | | 199 | D 丶狙击王 | 46 | | 298 | 唐三 | 46 | | 51 | 新五皇·暴雪 | 45 | | 272 | D 丶抢人头辅助 | 45 | +-----+----------------------+-------+ 7 rows in set (0.00 sec)
4.2.3 ORDER BY 语句多字段排序
查询等级在 45 级及以上的用户,并以 level 降序排列和 id 降序排列。
mysql> select id,name,level from player where level>=45 order by level desc,id desc; +-----+----------------------+-------+ | id | name | level | +-----+----------------------+-------+ | 30 | 抢宝真多呀 | 47 | | 298 | 唐三 | 46 | | 199 | D 丶狙击王 | 46 | | 63 | 新五皇–敬神 | 46 | | 15 | 新五皇·白胡子 | 46 | | 272 | D 丶抢人头辅助 | 45 | | 51 | 新五皇·暴雪 | 45 | +-----+----------------------+-------+ 7 rows in set (0.00 sec)
注意!
ORDER BY 后面跟多个字段时,字段之间使用英文逗号隔开,
优先级是按先后顺序而定。下面以A和B分别表示两个字段。
ORDER BY A,B desc 指A用升序,B用降序;
ORDER BY A asc,B desc 指A用升序,B用降序;
ORDER BY A desc,B desc 指A用降序,B用降序;4.2.4 GROUP BY语句
通过 SQL 查询出来的结果,还可以对其进行分组,使用 GROUP BY 语句来实现。
GROUP BY 从字面上看,是以 BY 后面的内容对查询出的数据进行分组,就是将一个“数据集”
划分成若干个“小区域”,然后针对这些个“小区域”进行数据处理。
GROUP BY通常都是结合聚合函数一起使用的,常用的聚合函数包括:
计数(COUNT)、求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),
这些聚合函数的用法在后面函数小节会有更详细的讲解。GROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理。mysql> select count(name),level from player where level>=45 group by level; +-------------+-------+ | count(name) | level | +-------------+-------+ | 2 | 45 | | 4 | 46 | | 1 | 47 | +-------------+-------+ 3 rows in set (0.00 sec)
mysql> select count(name),level from player where level>=45 group by name; +-------------+-------+ | count(name) | level | +-------------+-------+ | 1 | 45 | | 1 | 46 | | 1 | 46 | | 1 | 47 | | 1 | 45 | | 1 | 46 | | 1 | 46 | +-------------+-------+ 7 rows in set (0.00 sec)
4.2.5 限制结果条目
LIMIT 的第一个参数是位置偏移量(可选参数),是设置 MySQL 从哪一行开始显示。
如果不设定第一个参数,将会从表中的第一条记录开始显示。需要注意的是,
第一条记录的位置偏移量是 0,第二条是 1,以此类推。第二个参数是设置返回记录行的最大数目。
插入新的字段insert into player (id,name,level) values ('1','修欧拉卡',10); insert into player (id,name,level) values ('2','起风了',10); insert into player (id,name,level) values ('3','吊打低V',15); insert into player (id,name,level) values ('4','小花',14); insert into player (id,name,level) values ('5','小舞',35);
mysql> select id,name,level from player limit 3; +----+--------------+-------+ | id | name | level | +----+--------------+-------+ | 1 | 修欧拉卡 | 10 | | 2 | 起风了 | 10 | | 3 | 吊打低V | 15 | +----+--------------+-------+ 3 rows in set (0.00 sec)
LIMIT 子句的使用也可以结合 ORDER BY:先进行排序,然后再LIMIT限制固定的记录。
也就是说LIMIT是放在最后的,将处理好的结果集按要求选出几行来。
例如,将查询记录按等级 level 降序排列,只取前三条记录。mysql> select id,name,level from player order by level desc limit 3; +----+----------------------+-------+ | id | name | level | +----+----------------------+-------+ | 30 | 抢宝真多呀 | 47 | | 15 | 新五皇·白胡子 | 46 | | 63 | 新五皇–敬神 | 46 | +----+----------------------+-------+ 3 rows in set (0.00 sec)
在显示结果的时候也可以不从第一行开始,引入 offset 参数。
例如,执行以下操作即可从第 3 条记录开始显示之后的 3 条数据。mysql> select id,name,level from player limit 2,3; +----+------------+-------+ | id | name | level | +----+------------+-------+ | 3 | 吊打低V | 15 | | 4 | 小花 | 14 | | 5 | 小舞 | 35 | +----+------------+-------+ 3 rows in set (0.00 sec)
4.2.6 设置别名
在MySQL查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了,增强可读性。设置别名使用AS语句。
在使用 AS 后,可以用 alias_name 代替 table_name,其中 AS 语句是可选的。AS之后的别名,主要是为表内的列或者表提供临时的名称,在查询过程中使用,库内实际的表名或字段名是不会被改变的。
例如,在统计表内所有记录共有多少条时,使用 count(*), 这么写不便于识别,可以将其别名设置为 number。mysql> select count(*) as number from player; +--------+ | number | +--------+ | 12 | +--------+ 1 row in set (0.00 sec) mysql> select count(*) number from player; #省略as是一样的结果 +--------+ | number | +--------+ | 12 | +--------+ 1 row in set (0.00 sec)
此外,AS还可以作为连接语句的操作符。例如,执行以下操作即可实现用一条 SQL语句完成在创建表tmp的时候将player表内的数据写入 tmp 表。
mysql> create table tmp as select * from player; Query OK, 12 rows affected (0.02 sec) Records: 12 Duplicates: 0 Warnings: 0 mysql> select count(*) from tmp; +----------+ | count(*) | +----------+ | 12 | +----------+ 1 row in set (0.00 sec)
4.2.7 通配符
通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。
通常通配符都是跟 LIKE 一起使用的,并协同WHERE子句共同来完成查询任务。
常用的通配符有两个,分别是:
%:百分号表示零个、一个或多个字符
_:下划线表示单个字符mysql> select id,name,level from player where name like 's%'; ##name 字段以 s 开头的记录 +------+--------------+-------+ | id | name | level | +------+--------------+-------+ | 238 | sagou 轰总 | 7 | | 795 | senoku | 15 | | 2460 | shirley | 1 | +------+--------------+-------+ 3 rows in set (0.00 sec)
mysql> select id,name,level from player where name like '_uess'; #替换开头的一个字符 +-----+-------+-------+ | id | name | level | +-----+-------+-------+ | 713 | guess | 25 | +-----+-------+-------+ 1 row in set (0.00 sec) mysql> select id,name,level from player where name like 'use____'; #替换结尾的四个字符 +-----+---------+-------+ | id | name | level | +-----+---------+-------+ | 448 | useless | 1 | +-----+---------+-------+ 1 row in set (0.00 sec)
4.2.8 子查询
子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语句子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一步的查询过滤。子查询不仅可以在 SELECT 语句中使用,在 INERT、UPDATE、DELETE中也同样适用。在嵌套的时候,子查询内部还可以再次嵌套新的子查询,也就是说可以多层嵌套。
mysql> select name,level from player where id in (select id from player where level>=45); +----------------------+-------+ | name | level | +----------------------+-------+ | 新五皇·白胡子 | 46 | | 抢宝真多呀 | 47 | | 新五皇·暴雪 | 45 | | 新五皇–敬神 | 46 | | D 丶狙击王 | 46 | | D 丶抢人头辅助 | 45 | | 唐三 | 46 | +----------------------+-------+
五 DCL语句:设置用户权限
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 IDENTIFIED BY ‘密码’
mysql> GRANT all ON *.* TO 'root'@'%' IDENTIFIED BY '123'; mysql> GRANT all ON *.* TO 'root'@'localhost' IDENTIFIED BY '123'; flush privileges; #刷新
用户不存在时新建用户
grant select on auth.* to 'yiqi'@'localhost' identified by '123'; #只授予查询权限
撤销用户的权限
revoke all on auth.* from 'yiqi'@'20.0.0.1';
查看用户权限
show grants for 'yiqi'@'20.0.0.1';
清空表数据
truncate table tmp;
在已有表中添加字段
alter table users add wocao varchar(50) not null;
远程登录其他用户的数据库
mysql -ulph -p123 -h192.168.1.60
六 临时表
CREATE TEMPORARY TABLE `mytmp` (`id` int(10) NOT NULL AUTO_INCREMENT,`NAME` varchar(32) CHARACTER SET utf8 COLLATE utF8_bin NOT NULL, `level` int(10) NOT NULL,PRIMARY KEY (id) ) ENGINE InnoDB DEFAULT CHARSET=utf8;
七 克隆表
7.1 方法一:通过like方法,复制ky表生成test表
方法一: mysql> create table test like ky; Query OK, 0 rows affected (0.01 sec) mysql> show create table ky\G *************************** 1. row *************************** Table: ky Create Table: CREATE TABLE "ky" ( "user_name" char(16) NOT NULL, "user_passwd" char(48) DEFAULT '', PRIMARY KEY ("user_name") ) ENGINE=InnoDB DEFAULT CHARSET=utf8 mysql> select * from ky; ##like方法复制表结构,不复制数据 Empty set (0.00 sec) mysql> insert into test select * from users; ##将ky表的数据写入test表 Query OK, 7 rows affected (0.00 sec) Records: 7 Duplicates: 0 Warnings: 0
7.2 方法二:通过创建表的方法克隆表
mysql> show create table ky\G #获取源表结构,,索引等信息 *************************** 1. row *************************** Table: ky Create Table: CREATE TABLE "ky" ( "user_name" char(16) NOT NULL, "user_passwd" char(48) DEFAULT '', "level" char(16) NOT NULL, PRIMARY KEY ("user_name") ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) CREATE TABLE "test3" ( "user_name" char(16) NOT NULL, "user_passwd" char(48) DEFAULT '', "level" char(16) NOT NULL, PRIMARY KEY ("user_name") ) ENGINE=InnoDB DEFAULT CHARSET=utf8; #改名后创建与源表一样的表结构 mysql> insert into test3 select * from ky; #导入源表数据 Query OK, 7 rows affected (0.00 sec) Records: 7 Duplicates: 0 Warnings: 0 mysql> select * from test3; #查看新创建表的数据 +-----------+-------------------------------------------+-------+ | user_name | user_passwd | level | +-----------+-------------------------------------------+-------+ | lisi | *6691484EA6B50DDDE1926A220DA01FA9E575C18A | 10 | | lisi1 | *6691484EA6B50DDDE1926A220DA01FA9E575C18A | 10 | | lisi2 | *6691484EA6B50DDDE1926A220DA01FA9E575C18A | 40 | | lisi3 | *6691484EA6B50DDDE1926A220DA01FA9E575C18A | 50 | | lisi4 | *6691484EA6B50DDDE1926A220DA01FA9E575C18A | 60 | | lisi5 | *6691484EA6B50DDDE1926A220DA01FA9E575C18A | 70 | | lisi6 | *6691484EA6B50DDDE1926A220DA01FA9E575C18A | 80 | +-----------+-------------------------------------------+-------+
-
MySQL数据库连接增删改查sql语句_关于MySQL数据库——增删改查语句集锦
2021-01-27 23:48:19一、基本的sql语句CRUD操作:create 创建(添加)read 读取update 修改delete 删除1、添加数据insert into Info values('p009','张三',1,'n001','2016-8-30 12:9:8') ;给特定的列添加数据insert into Info (code,name)... -
数据库mysql增删改查基本语句操作(基本语句杂记)
2020-05-22 21:30:26首先,我们在windows的cmd中打开mysql(或者直接打开mysql) ...不同版本语句略有差异...然后我们选择要操作的数据库,这样我们的后续操作针对改数据库。 use caozuo; 可以看到提示信息: 然后我们创建数据库,这里 ... -
mysql增删改查格式_mysql增删改查基本语句
2021-02-08 05:26:06mysql增删改查基本语句mysql 增、删、改、查 基本语句数据库的链接和选择及编码$link=mysql_connect(localhost,root, or die(数据库连接失败.mysql_error(;$sel=mysql_select_db(login,$link or die(数据库选择失败....
-
jdk8安装包.txt
-
LVS + Keepalived 实现 MySQL 负载均衡与高可用
-
火遍全网的Java核心知识pdf(Java岗),竟是出自阿里P8架构师之手
-
MySQL 视图
-
建议收藏!分享一篇Github上点赞10W+的java面经,看完涨薪80%简简单单!
-
全正色散Yb光纤激光器中耗散孤子的光谱移动,变窄,变宽和波长转换的机理
-
NodeEx-源码
-
420 nm同位素Rb-87法拉第反常色散滤光片
-
3DeamGame-源码
-
分析类初始化
-
c# 关于配置文件
-
Unity RUST 逆向安全开发
-
c2960x-universalk9-mz.152-4.E8.bin
-
基于分脉冲放大法的皮秒脉冲放大器的数值研究
-
被动锁模光纤激光器中增益支配孤子的腔致峰值功率钳位效应(英文)
-
2021年 系统分析师 系列课
-
Python函数库深度详解(1)
-
阿里架构师十年心血,成就Java核心知识pdf(Java岗)
-
文件多功能器。2021.3.1..rar
-
MySQL 数据类型和运算符