计算机二级《MySQL数据库程序设计》知识点总结

时间:2019-05-12 07:02:24下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《计算机二级《MySQL数据库程序设计》知识点总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《计算机二级《MySQL数据库程序设计》知识点总结》。

第一篇:计算机二级《MySQL数据库程序设计》知识点总结

MySQL知识点总结

.数据操作:检索、排序、过滤、分组、汇总、计算、联接、子查询与组合查询.表操作:表的创建、修改、删除和重命名、表数据的插入、更新和删除.索引(含主、外键)、视图

.难度编程:存储过程与存储函数、触发器与事件、PHP.数据库管理:事务处理、用户与权限、备份与还原、数据库维护

1.检索数据:select„from„

Select [distinct] prod_id,prod_name from products [limit 4,5];2.检索排序:order by„

Select * from products order by prod_id [asc|desc],prod_name [asc|desc];3.过滤数据:where 字句

= <>!= >>= <<= between(1)普通where 字句

Select prod_id,prod_name from products where prod_name=’liyang’;Select prod_id,prod_name from products where prod_id between 10 and 50;Select prod_id,prod_name from products where prod_name is [not] null;(2)组合where字句:使用AND和OR连接多个条件表达式,且AND次序优于OR;(3)IN 与NOT操作符

Select prod_id,prod_name from products where prod_id [not] in(1,2,3)|prod_name in(’zhangsan’,’lisi’,’wangwu’);(4)LIKE操作符与通配符:“%”与“_”

Select prod_id,prod_name from products where prod_name like ’%liu%’;Select prod_id,prod_name from products where prod_name like ’_u%’;找出u位于名字的第二个位置的prod_id和prod_name。(5)正则表达式 4.计算字段

(1)拼接字段:concat(„,„)Select concat(姓氏,名字)as 姓名 from orders;Select concat(vend_name,’(’,vend_country,’)’)from vendors;(2)算术运算

Select prod_name,prod_price,prod_num,prod_price*prod_num as prod_money from products;4.使用数据处理函数:文本处理函数、日期和时间处理函数、数值处理函数。5.汇总数据:聚集函数 SUM()AVG()COUNT()MAX()MIN()Select avg(distinct prod_price)from products;Select avg(prod_price)均价,max(prod_price)最高价 from products;6.分组数据:group by„ 创建分组、过滤分组、分组排序

Select count(prod_id),prod_id from products where prod_id>1000 group by prod_id having count(prod_id)>2 order by prod_id;求出prod_id大于1000且产品数量大于2的产品数量,并按prod_id排序,注意分组语句中对象要前后一致,如下划线部分。7.使用子查询:进行过滤select„where„in(select„where„in(select„))、作为计算字段使用子查询。8.联接:join„on„(1)普通联接

Select oi.order_num,oi.prod_id,p.prod_name,p.vend_id,v.vend_name from orderitems oi join products p on oi.prod_id=p.prod_id join vendors v on p.vend_id=v.vend_id where vend_name=’liyang’;可同时联接多个表且可同时用于数据过滤,这种类型的联接一般为内部联接。

(2)自联接:一个表自己与自己联接,注意判断好各字段与前后两个表的关系。(3)自然联接:基本上简历的内部联接都是自然联接。

(4)外部联接:在关系表中没有关联的信息的行也能显示出来的联接,根据表在join字句的左边还是右边可分为左联接与右联接。(5)带聚集函数的联接

Select c.cust_id,count(o.order_num)num_ord from customers c join orders o on c.cust_id=o.cust_id order by c.cust_id;找出客户对应的订单数。

9.组合查询:连接多个(至少两个)查询语句,满足其中一个查询语句条件的结果都会显示出来 union(不重复显示)/union all(可重复显示即全部显示)Select vend_id,prod_id,prod_price from products where prod_price<=5 Union [all] Select vend_id,prod_id,prod_price from products where vend_id in(1001,1002)order by prod_id;注意每个查询必须包含相同的列、表达式或者聚集函数,列的数据类型必须兼容,排序语句只能放在最后面,该排序语句对组合查询语句中的所有select语句都适用。10.全文本搜索:只支持引擎为MyISAM的表,不支持引擎为InnoDB的表,可对搜索结果进行智能排序后输出,具有较高等级的行先返回。

Match(全文本搜索字段)against(’全文本搜索内容’[with query expansion])其中下划线部分为拓展语句,使用该语句,除了可以返回符合所设置的“全文本搜索内容”的数据结果,还可返回与“全文本搜索内容”有较高相似度的数据结果。(1)启用全文本搜索支持

Create table fs(id int not null primary key,c text,c1 text,fulltext(c,c1))engine=MyISAM;(2)进行全文本搜索

Select note_text from productnotes where match(note_text)against(’liyang’ with query expansion);11.插入数据:insert into„{values|select}„

Insert into products(prod_id,prod_name,prod_price)values(1,’豆浆’,2),(3,’鸡蛋’,1);可同时插入多行数据。

Insert into products(prod_id,prod_name,prod_price)select vend_id,vend_name, vend_price from vendors where vend_id<=10;12.更新数据:update [ignore]„set„,一般情况下,若更新的数据中有部分数据出错,则全部数据返回到原来的数据,而ignore的作用在于即使更新的数据中出现错误,只对出现错误的数据返回到原来数据,而未出现错误的数据返回更新后的结果实现更新。update products set prod_name='馒头',prod_price=1 where prod_id=1;update customers set cust_city=concat(cust_city,’市’)| cust_city =replace(cust_city,’市’,’city’)where cust_id>1000;13.删除数据:delete from„ Delete from products where prod_id between 10 an 50;14.表的相关操作

(1)创建表:对表结构进行设置create table„

Create table products(prod_id int null auto_increment primary key,prod_name varchar(50),prod_price int,prod_city varchar(50)default ’广州’)engine= InnoDB;每个字段名后需要设置数据类型,default为指定默认值,只支持常量不支持函数,且只在插入数据时起作用而在更新数据时不起作用,InnoDB是一个可靠的事务处理引擎,但不支持全文本搜索。

(2)更新表:对表结构进行修改 alter table {add|drop}„

Alter table products add prod_city varchar(50); Alter table products drop prod_price;(3)删除表:一旦删除,无法撤销 drop table„

Drop table products;(4)重命名表:rename table„to„

Rename table products to new_products;15.索引的相关操作

(1)创建索引:常用于数据的快速检索,MySQL中,常用索引在物理可分为:BTREE、HASH索引两类;在具体用途上可分为:INDEX、UNIQUE、PRIMARY KEY、FOREIGN KEY、FULL TEXT、SPATIAL等。

1使用create index 语句创建索引,对已存在的表创建索引 ○Create [unique|fulltext|spatial] index index_name [using BTREE|HASH] on tbl_name(index_col_name[,index_col_name„]);Create unique index index_products on products(prod_name(2)desc,prod_price);2使用create table 语句创建索引,创建表的同时创建索引 ○Create table seller(seller_id int not null auto_increment,seller_name char(50),seller_adress char(50),seller_contact char(50),product_type int,sales int,primary key(seller_id,product_type),[unique|fulltext|spatial] index index_seller(sales));3使用alter table语句创建索引,修改表的同时添加索引 ○Alter table tbl_name add {[unique|fulltext|spatial] index index_tbl_name(字段名)|primary key(字段名)|foreign key(字段名)references elsetbl_name(相同字段名)};(2)查看索引:Show index from tbl_name [where expr];(3)删除索引:drop index index_nameon tbl_name语句或alter table语句

Drop index index_name on tbl_name;Alter table tbl_name drop {[unique|fulltext|spatial] index index_tbl_name(字段名)|primary key(字段名)|foreign key(字段名)references elsetbl_name(相同字段名};(下划线部分不确定)16.视图的相关操作

视图:虚拟的表,视图本身不包含表中的列和数据,它包含只是一个SQL查询,常用于 检索数据。*视图的作用与规则。(1)创建视图:Create view view_name as select„[where„];Create view view_products as select prod_id,prod_name,prod_price,prod_num, prod_price*prod_num as prod_money from products where prod_id<=10 [with check option];--下划线部分表示今后对该视图数据的修改都必须符合prod_id<=10(2)查看视图(用法同表): select * from view_name;(3)删除视图:drop view view_name;17.完整性:实体完整性(主键与候选键)、参照完整性(主键与外键)、用户定义的完整性(非空约束与check约束)。

18.创建主键约束:create table语句或alter table语句

Create table products(prod_id int not null auto_increment primary key,c int);作为列的主键约束;

Create table products(prod_id int not null auto_increment,c int,c1 int,primary key(prod_id));作为表的主键约束,且复合主键职能用这种形式创建 Alter table products add primary key(prod_id);备注:实体完整性通过主键约束与候选键约束来实现,候选键约束的创建类似主键约束的创建,实质上同索引。

19.设置表外键:create table语句或alter table语句,外键中列的数目和数据类型必须与被参照表的主键中列的数目和对应数据类型一致。

alter table tbl_name add [constraint fk_name] foreign key(„)references„ Create table products(prod_id int not null auto_increment,c int,c1 int,foreign key(prod_id)references customers(prod_id));alter table products add constraint fk_products_cust foreign key(cust_id)references cust(cust_id);20.存储过程:为了以后的使用而保存的一条或多条SQL语句的集合

--建立存储过程:建立一个可通过输入item_id,输出对应订单总金额的存储过程->Delimiter //--改变分割符为//->create procedure ordertotal(in o_id int,out o_total decimal(10,2))过程名字输入参数及类型输出参数及类型->begin->select sum(item_price*item_num)from orderitems where item_id=o_id into o_total;->if o_total is null then->select ’不存在该订单号’;->end if;->end;->//--执行存储过程:当item_id=200005时,得出对应订单总金额->delimiter;--将分割符改回分号->call ordertotal(200005,@total);--由于不存在输出参数,故定义一个输出变量,变量必须用@开头->select @total;返回结果为149.87 备注:书本第十一章后的编程题,使用update语句,两个参数类型都需要为in。--显示存储过程->Show create procedure ordertotal;--删除存储过程

->Drop procedure ordertotal;21.存储函数

存储函数与存储过程的区别:.存储函数不能拥有输出参数;.存储函数可直接调用,且不需使用call语句,而存储过程的调用必须使用call语句;.存储函数中必须包含一条return语句,而这条特殊的SQL语句不允许包含于存储过程。--建立存储函数:根据给定的cust_id返回客户所在的州名(缩写),若库中无给定的cust_id,则返回“不存在该客户”。->delimiter //->create function fn_search(c_id int)->returns varchar(50)--定义返回的数据类型,与函数部分中的数据类型需统一,如函数中的“不存在该客户”为6个字符,如果这里设置为char(5),则无法输出该结果->deterministic– 表示对于相同的输入值,返回值也相同->begin->declare state char(2);--声明一个变量state,作为输出的州变量->select cust_state from customers where cust_id=c_id into state;->if state is null then->return(select ’不存在该客户’);--注意这里return不用加s->else->return(select state);->end if;->end;->//--执行存储函数

->select fn_search(10001);--删除存储函数

->drop function fn_search;--删除前要确定该函数无依赖关系,即不存在其他存储过程或存储函数调用过该存储函数。

22.触发器:MySQL响应insert、delete、update语句时自动执行的一条MySQL语句,创建触发器时需要给出的4条信息:唯一的触发器名、触发器相关的表、触发器应该响应的活动(insert delete、update)、触发器何时执行(处理前或处理后)。

(1)insert触发器:当对表插入数据时起作用,含有一个虚拟表New,可访问增加的行,只能用after--建立一个insert触发器,用于记录insert语句操作时的系统时间和插入的order_num->delimiter //->create trigger trg_order_insert after insert on orders for each row 触发器 触发器名 执行时间 相关表->begin->insert into order_log(o_date,order_num)values(now(),new.order_num);--order_log是事先建立好的表,用于记录insert语句操作时的系统时间和插入的order_num->end;->//--执行insert触发器->delimiter;->insert into orders(order_date,cust_id)values(’2010-9-15’,10001);--由于order_num是自动递增的,故在这里不作为插入对象(2)delete触发器:当对表删除数据时起作用,含有一个虚拟表Old,可访问被删除的行,只能用after,创建方法与insert类似,区别在于delete和old--建立一个delete触发器,用于记录delete语句操作时的系统时间和删除的order_num->delimiter //->create trigger trg_order_delete after delete on orders for each row 触发器 触发器名 执行时间 相关表->begin->insert into order_log(o_date,order_num)values(now(),old.order_num);--order_log是事先建立好的表,用于记录delete语句操作时的系统时间和删除的order_num->end;->//--执行delete触发器->delimiter;->delete from orders where order_num=20010;(3)update触发器:当对表修改数据时起作用,同时含有new和old两个虚拟表。结合New可访问更新行的记录;结合old可访问更新前行的记录,可用after,也可用before。1用after ○--建立一个update触发器,用于记录update语句操作时的系统时间和更新数据的order_num->delimiter //->create trigger trg_order_update after update on orders for each row 触发器 触发器名 执行时间 相关表->begin->insert into order_log(o_date,order_num)values(now(),old.order_num);->end;->//--执行update触发器->delimiter;->update orders set order_date=’2015-9-18’ where cust_id=10001;2用before ○--建立一个update触发器,如果更新后的prod_price大于原来的1.2倍,则用原来的1.2倍作为当前价格->delimiter //->create trigger trg_order_update before update on orders for each row 触发器 触发器名 执行时间 相关表->begin->if new.prod_price>old.prod_price*1.2 then->set new.prod_price=old.prod_price*1.2;->end if;->end;->//(4)删除触发器:drop trigger trg_name;23.事件:临时触发器,要使用事件调度器,必须开启“event_scheduler”.查看:show variables like ’event_scheduler’;.开启:set global event_scheduler=1;(1)创建事件

CREATE EVENT EVENT_NAME ON SCHEDULE schedule DO event_body;其中schedule的语法格式为

AT timestamp [+INTERVAL interval]„|every interval--指定事件执行的时间,可以为某时刻点即timestamp,或某时刻点开始的interval时间后,或者为每隔interval时间执行一次

[starts timestamp [+INTERVAL interval]]--设置事件开始执行的时间 [ends timestamp [+INTERVAL interval]]--设置事件终止执行的时间

--建立一个事件,用于每个月向customers表中插入一条数据“liyang、广州”,该事件从下个月开始并于2015-12-31结束->delimiter //->create event event_insert on schedule every 1 month->starts curdate()+interval 1 month->ends ’2015-12-31’->do->begin->if year(curdate())<2015 then->insert into customers(cust_name,cust_adress)values(’liyang’,’广州’);->end if;->end;->//(2)修改事件,用于修改时间的状态:alter event event_name{enable|disable};(3)删除事件:drop event event_name;24.管理实务处理:start transaction„

实务处理的术语:

(1)实务(transaction):一组SQL语句;(2)回退(rollback):撤销指定SQL语句的过程;(3)提交(commit):指定未存储的SQL语句结果写入到数据库表里,提交后无法回退;(4)保留点(savepoint):实务处理中设置的临时占位符。

25.安全管理(用户创建修改与删除以及用户权限的查看设置与撤销)(1)创建用户账号:create user ben identified by ’ben’;(2)修改用户账号:update mysql.user set user=’new_ben’ where user=’ben’;--从mysql数据库中的用户表user进行修改(3)查看访问权限:show grants for new_ben;(4)设置访问权限:grant„to„.grant {all|select,update,delete,insert}on {*.*|crashcourse.*|crashcourse.cus tomers} to new_ben;.grant select(cust_id,cust_name)on crashcourse.customers to new_ben;--可针对{整个服务器|整个数据库|数据库中某个表|数据库中某个表的某些字段},对用户同时设置全部或一种或多种权限

(5)撤销访问权限:revoke„from„,用法与grant„to„类似(6)更改口令(密码)

Set password for new_ben=password(’new_ben’);(7)删除用户:drop user new_ben;26.数据库备份与还原.使用SQL语句

backup table tbl_name to„/restore table tbl_name from„(只用于MyISAM表)select„intooutfile„/load data„infile„into table tlb_name.使用命令行实用程序:mysqlhotcopy(只用于MyISAM表)或mysqldump/mysql(1)使用select„intooutfile„/load data„infile„into table tlb_name.备份数据:

Select * from mysql.products into outfile ’d:products.txt’ [Fields terminated by ’,’ optionally enclosed by ’”’

lines terminated by ’nr’;--定义字段间的分割符、字符型数据的存放形式、行与行之间的分割符.恢复数据

Load data infile ’d:products.txt’into table customers.copy [Fields terminated by ’,’ optionally enclosed by ’”’

lines terminated by ’nr’;--必须与备份时一致(2)使用命令行实用程序mysqldump/mysql(文本形式)

进入cmd运行界面(mysqldump—help 可用于获取mysqldump的选项表及更多帮助信息).备份整个数据库服务器、或整个数据库或数据库中某个表

Mysqldump –u root –proot –P 3306 –h localhost {all-databases|mysql_test [products]}>d:data.sql.恢复数据

Mysql –u root –proot –P 3306 –h localhost {all-databases|mysql_test [products]}

(1)analyze table tbl_name;更新表的索引散列程度,检查表键是否正确(2)check table tbl_name;检查一个或多个表是否有错误

(3)checksum table tbl_name;对数据库中的表进行校验,保证数据的一致性

(4)optimize table tbl_name;利用表中未使用的空间并整理数据文件碎片,保证数据读取效率

(5)repair table tbl_name;修复一个或多个可能被损害的MyISAM表 28.二进制日志文件的使用:mysqlbinlog

29.使用PHP进行MySQL数据库编程 编程步骤:

.首先建立与MySQL数据库服务器的连接;.然后选择要对其进行操作的数据库;

.再执行相应的数据库操作,包括对数据的添加、删除、修改和查询等;.最后关闭与MySQL数据库服务器的连接。(1)数据库服务器连接、选择数据库

.使用mysql_connect()建立非持久连接 ”;die();} echo “数据库服务器连接成功!
”;?> //将connect.php部署在已开启的WAMP平台环境中,并在浏览器地址中输入“http://localhost/connect.php”

.使用mysql_pconnect()建立持久连接 ”;echo “用户名:root
”;echo “使用函数mysql_pconnect()永久连接数据库。
”;?>

.使用mysql_select_db(databases[,connection])选择数据库 ”;die();} mysql_select_db(“mysql_test”,$con);if(mysql_errno()){ echo “数据库选择失败!
”;die();} echo “数据库选择成功!
” ?>(2)数据的添加、更新和删除操作,mysql_query(SQL语句[,connection]),insert、update、delete语句可置于函数mysql_query()中从而实现数据的添加、更新和删除操作.数据的添加

/*向数据库mysql_test中的表customers添加一个名为“李中华”的客户的全部信息*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“数据库选择失败!
”);Mysql_query(“set names ’gbk’”);//设置中文字符集

$sql=“insert into customers(’cust_id’,’cust_name’,’cust_sex’)”;$sql=$sql.“values(null,’李中华’,’M’)”;if(mysql_query($sql,$con))echo “客户信息添加成功!
”;else echo “客户信息添加失败!
”;?>

.数据的更新

/*将数据库mysql_test的表customers中的一个名为“李中华”的客户的地址修改为“广州市”*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“数据库选择失败!
”);Mysql_query(“set names ’gbk’”);$sql=“update customers set cust_address=’广州市’”;$sql=$sql.“where cust_name=’李中华’”;if(mysql_query($sql,$con))echo “客户地址修改成功!
”;else echo “客户地址修改失败!
”;?>

.数据的删除

/*将数据库mysql_test的表customers中一个名为“李中华”的客户信息删除*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“数据库选择失败!
”);Mysql_query(“set names ’gbk’”);$sql=“delete from customers”;$sql=$sql.“where cust_name=’李中华’”;if(mysql_query($sql,$con))echo(“客户信息删除成功!
”);else echo(“客户信息删除失败!
”);?>

(3)数据库的查询

.使用mysql_fetch_array(data[,array_type])读取结果集中的记录

/*在数据库mysql_test的表customers中查询cust_id为916的客户的姓名*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“数据库选择失败!
”);Mysql_query(“set names ’gbk’”);$sql=“select cust_name from customers”;$sql=$sql.“where cust_id=916”;$result=mysql_query($sql,$con);if($result){ echo “客户查询成功!
”;$array=mysql_fetch_array($result,MYSQL_NUM);if($array){ echo “读取到客户信息!
”;echo “所要查询客户的姓名为:”.$array[0].“
”;} else echo “未读取到客户信息!
”;} else echo “客户查询失败!
”;?>

.使用mysql_num_rows(data)读取结果集中的记录数

/*在数据库mysql_test的表customers中查询女性客户的人数*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“数据库选择失败!
”);Mysql_query(“set names ’gbk’”);$sql=“select * from customers”;$sql=$sql.“where cust_sex=’F’”;$result=mysql_query($sql,$con);if($result){ echo “查询成功!
”;$num=mysql_num_rows($result);//如果结果为空,则为0行 echo “所要查询的女性客户人数为:”.$num.“位
”;} else echo “查询失败!
”;?>

第二篇:mysql数据库要点总结

查询(R)Selec子句

书写顺序

Select distinct:要返回的列或表达式 From:从中检索数据的表 Where:行级过滤/分组前过滤 group by:分组说明

having:组级过滤/分组后过滤 order by:输出排序顺序desc/asc limit start, count:要检索的行数 limit 3,4 从第3行开始的连续4行

SELECT order_num,sum(quantity*item_price)ordertotal FROM orderitems WHEREorder_numBETWEEN20005AND 20009GROUP BY order_num HAVINGsum(quantity*item_price)>=50ORDER BYordertotalDESCLIMIT4;执行顺序

From表名->inner/left/right/ join on->where->group by->select distinct *->having->order by->limit start, count 插入Insert into(C)INSERT INTO students(name)values(‘杨过’),(‘小龙女’);更新(U)Update UPDATE customers SETcust_email = ‘elmer@fudd.com’WHEREcust_id = 10005;删除(D)Delete DELETE FROM customers WHEREcust_id = 10006;Truncate删除原来的表并重新创建一个表,删除标的全部内容时效率高。

操作表

创建CREATE TABLE customers(Cust_idint not null auto_increment primary key,Cust_name char(50)not null,Cust_addresschar(50)null)engine = innoDB;更新ALTER TABLE删除DROP TABLEcustomers2;重命名RENAME TABLE customers2 TO customers;操作数据库

创建CREATE DATABASE xxx charset = utf8;删除DROP DATABASEXXX;切换USE XXX;查看SHOW DATABASES;关联查询

INNER/LEFT/RIGHTJOIN ON SELECT students.name,subjects.title,scores.scoreFROM scores INNER JOIN students ONscores.stuid = students.id INNER JOIN subjects ONscores.subid = subjects.id;

第三篇:MySql知识点总结

1.数据库创建 : Create database db_name;

数据库删除 : Drop database db_name;删除时可先判断是否存在,写成 : drop database if exits db_name.建表 : 创建数据表的语法 : create table table_name(字段1 数据类型 , 字段2 数据类型);

例 : create table mytable(id int , username char(20));

删表 : drop table table_name;例 : drop table mytable;.添加数据 : Insert into 表名 [(字段1 , 字段2 , ….)] values(值1 , 值2 , …..);

如果向表中的每个字段都插入一个值,那么前面 [ ] 括号内字段名可写也可不写

例 : insert into mytable(id,username)values(1,’zhangsan’);.查询 : 查询所有数据 : select * from table_name;

查询指定字段的数据 : select 字段1 , 字段2 from table_name;

例 : select id,username from mytable where id=1 order by desc;多表查询语句------------参照第17条实例.更新指定数据 , 更新某一个字段的数据(注意,不是更新字段的名字)

Update table_name set 字段名=’新值’ [, 字段2 =’新值’ , …..][where id=id_num] [order by 字段 顺序]

例 : update mytable set username=’lisi’ where id=1;

Order语句是查询的顺序 , 如 : order by id desc(或asc), 顺序有两种 : desc倒序(100—1,即从最新数据往后查询),asc(从1-100),Where和order语句也可用于查询select 与删除delete.删除表中的信息 :

删除整个表中的信息 : delete from table_name;

删除表中指定条件的语句 : delete from table_name where 条件语句;条件语句如 : id=3;.创建数据库用户

一次可以创建多个数据库用户如:

CREATE USER username1 identified BY ‘password’ , username2 IDENTIFIED BY ‘password’…..用户的权限控制:grant

库,表级的权限控制 : 将某个库中的某个表的控制权赋予某个用户

Grant all ON db_name.table_name TO user_name [ indentified by ‘password’ ];.表结构的修改

(1)增加一个字段格式:

alter table table_name add column(字段名 字段类型);----此方法带括号

(2)指定字段插入的位置:

alter table table_name add column 字段名 字段类型 after 某字段;

删除一个字段:

alter table table_name drop字段名;

(3)修改字段名称/类型

alter table table_name change 旧字段名 新字段名 新字段的类型;

(4)改表的名字

alter table table_name rename to new_table_name;

(5)一次性清空表中的所有数据

truncate table table_name;此方法也会使表中的取号器(ID)从1开始.增加主键,外键,约束,索引。。(使用方法见17实例)

① 约束(主键Primary key、唯一性Unique、非空Not Null)

② 自动增张 auto_increment

③外键Foreign key-----与reference table_name(col_name列名)配合使用,建表时单独使用

④ 删除多个表中有关联的数据----设置foreign key 为set null---具体设置参考帮助文档.查看数据库当前引擎

SHOW CREATE TABLE table_name;

修改数据库引擎

ALTER TABLE table_name ENGINE=MyISAM | InnoDB;.SQL语句运用实例:

--1 建users表

create table users

(id int primary key auto_increment, nikename varchar(20)not null unique, password varchar(100)not null, address varchar(200),reg_date timestamp not null default CURRENT_TIMESTAMP);

--2 建articles表,在建表时设置外键

create table articles(id int primary key auto_increment,content longtext not null,userid int,constraint foreign key(userid)references users(id)on delete set null);

---------

--2.1 建articles表,建表时不设置外键

create table articles(id int primary key auto_increment,content longtext not null,userid int);

--2.2 给articles表设置外键

alter table articles add constraint foreign key(userid)references users(id)on delete set null;

----------

--3.向users表中插入数据,同时插入多条

insert into

users

(id,nikename,password,address)

values(1,'lyh1','1234',null),(10,'lyh22','4321','湖北武汉'),(null,'lyh333','5678', '北京海淀');

--4.向article中插入三条数据

insert

into

articles

(id,content,userid)

values(2,'hahahahahaha',11),(null,'xixixixixix',10),(13,'aiaiaiaiaiaiaiaiaiaiaiaia',1),(14,'hohoahaoaoooooooooo',10);

--5.进行多表查询,选择users表中ID=10的用户发布的所有留言及该用户的所有信息

select articles.id,articles.content,users.* from users,articles where users.id=10 and articles.userid=users.id order by articles.id desc;

--6.查看数据库引擎类型

show create table users;

--7.修改数据库引擎类型

alter table users engine=MyISAM;---因为users表中ID被设置成外键,执行此句会出错

--8.同表查询,已知一个条件的情况下.查询ID号大于用户lyh1的ID号的所有用户

select a.id,a.nikename,a.address from users a,users b where b.nikename='lyh1' and a.id>b.id;

------也可写成

select id,nikename,address from users where id>(select id from users where nikename='lyh1');

9.显示年龄比领导还大的员工:

select a.name from users a,users b where a.managerid=b.id and a.age>b.age;

查询编号为2的发帖人: 先查articles表,得到发帖人的编号,再根据编号查users得到的用户名。

接着用关联查询.select * from articles,users得到笛卡儿积,再加order by articles.id以便观察

使用select * from articles,users where articles.id=2 筛选出2号帖子与每个用户的组合记录

再使用select * from articles,users where articles.id=2 and articles.userid=users.id选出users.id等于2号帖的发帖人id的记录.只取用户名:select user where user.id=(select userid from articles where article.id =2)

找出年龄比小王还大的人:假设小王是28岁,先想找出年龄大于28的人

select * from users where age>(select age from users where name='xiaowang');

*****要查询的记录需要参照表里面的其他记录:

select a.name from users a,users b where b.name='xiaowang' and a.age>b.age

表里的每个用户都想pk一下.select a.nickname,b.nickname from users a,users b where a.id>b.id;

更保险的语句:select a.nickname,b.nickname from(select * from users order by id)a,(se

lect * from users order by id)b where a.id>b.id;

再查询某个人发的所有帖子.select b.* from articles a , articles b where a.id=2 and a.userid=b.userid

说明: 表之间存在着关系,ER概念的解释,用access中的示例数据库演示表之间的关系.只有innodb引擎才支持foreign key,mysql的任何引擎目前都不支持check约束。

第四篇:Mysql数据库学习心得

Mysql数据库学习心得(1)

由于工作中需要使用mysql,笔者通过网上学习,动手实践,终于从一个“数据库菜鸟”变成了能熟练操作mysql的“准大虾”了,:)。现将学习心得整理如下。

MySQL是完全网络化的跨平台关系型数据库系统,一个真正的多用户、多线程SQL数据库服务器,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使

用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL数据库的程序,对于中、小型应用系统是非常理想的。除了支持标准的ANSI SQL语句,更重要的是,它还支持多种平台,而在Unix系统上该软件支持多线程运行方式,从而能获得相当好的性能。对于不使用Unix的用户,它可以在Windows NT系统上以系统服务方式运行,或者在Windows 95/98系统上以普通进程方式运行。而在Unix/Linux系统上,MySQL支持多线程运行方式,从而能获得相当好的性能,而且它是属于开放源代码软。

MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成,MySQL的执行性能非常高,运行速度非常快,并非常容易使用,是一个非常棒的数据库。MySQL的官方发音是“My Ess Que Ell”(不是MY-SEQUEL)。

一.获得MySQL

首先必须下载MySQL。Mysql的官方网站是:www.xiexiebang.comf copy为c:my.cnf,并把c:mysqlibgwinb19.dll copy到winntsystem32。

3。启动mysql的方法是:

c:mysqlinmysqld-shareware--install

net start mysql

这么简单,就可以启动了。

4。更改超级用户(root)的密码:

C:mysqlinmysql mysql

mysql> UPDATE user SET password=PASSWORD('your password')swheresuser='root';

mysql> QUIT

C:mysqlinmysqladmin reload

使用命令C:mysqlinmysqlshow去看看检测一下。在这里应该显示:

+-----------+

| Databases |

+-----------+

| mysql |

| test |

+-----------+

看到这些信息这一步就证明没问题了

再来:

C:mysqlinmysqlshow--user=root--password=your password mysql

在这里应该显示:

Database: mysql

+--------------+

| Tables |

+--------------+

| columns_priv |

| db |

| host |

| tables_priv |

| user |

+--------------+

一切搞定!

5。C:mysqlinmysqladmin version status proc

应该可以看到这些版本信息的:

mysqladmin Ver 8.0 Distrib 3.22.32, for Win95/Win98 on i586

TCX Datakonsult AB, by Monty

Server version 3.22.32-shareware-debug

Protocol version 10

Connection localhost via TCP/IP

TCP port 3306

Uptime: 1 hour 29 min 30 sec

Threads: 1 Questions: 72 Slow queries: 0 Opens: 16 Flush tables: 1 Open tables: 0 Memory in use: 16423K Max memory

used: 16490K

Uptime: 5370 Threads: 1 Questions: 72 Slow queries: 0 Opens: 16 Flush tables: 1 Open tables: 0 Memory in use: 16423K

Max memory used: 16490K

+----+------+-----------+----+---------+------+-------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+----+------+-----------+----+---------+------+-------+------------------+

| 35 | ODBC | localhost | | Query | 0 | | show processlist |

+----+------+-----------+----+---------+------+-------+------------------+

接着,用show databases命令可以将安装的数据库列出来:

mysql> show databases;

你就可以看到:

+----------+

| Database |

+----------+

| mysql |

| test |

+----------+ rows in set(0.00 sec)

如果一切正常的话,那说明MySQL可以完全工作了!如果要退出程序,输入:exit

mysql> exit;

Bye

Mysql数据库学习心得(3)------------------

三.Mysql常识

(一)字段类型

1.INT[(M)]

正常大小整数类型

2.DOUBLE[(M,D)] [ZEROFILL]

正常大小(双精密)浮点数字类型

3.DATE

日期类型。支持的范围是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式来显示DATE值,但是允许你使用字符串或数字把值赋给

DATE列

4.CHAR(M)

定长字符串类型,当存储时,总是是用空格填满右边到指定的长度

5.BLOB TEXT

BLOB或TEXT类型,最大长度为65535(2^16-1)个字符。

6.VARCHAR

变长字符串类型,最常用的类型。

(二)基本操作

1:显示数据库

mysql>SHOW DATABASES;

2:当前选择的数据库,mysql> SELECT DATABASE();

+------------+

| DATABASE()|

+------------+

| test |

+------------+

3.当前数据库包含的表信息:

mysql> SHOW TABLES;

+---------------------+

| Tables in test |

+---------------------+

| mytable1 |

| mytable2 |

+---------------------+

4.获取表结构

mysql> desc mytable1;

+---------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+---------+-------------+------+-----+---------+-------+

| s1 | varchar(20)| YES | | NULL | |

+---------+-------------+------+-----+---------+-------+

5.创建表

表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联。创建表的基本语法如下:

create table table_name

(column_name datatype {identity |null|not null},…)

其中参数table_name和column_name必须满足用户数据库中的识别器(identifier)的要求,参数datatype是一个标准的SQL类型或由用户数

据库提供的类型。用户要使用non-null从句为各字段输入数据。

create table还有一些其他选项,如创建临时表和使用select子句从其他的表中读取某些字段组成新表等。还有,在创建表是可用PRIMARY

KEY、KEY、INDEX等标识符设定某些字段为主键或索引等。书写上要注意:在一对圆括号里的列出完整的字段清单。字段名间用逗号隔开

。字段名间的逗号后要加一个空格。最后一个字段名后不用逗号。所有的SQL陈述都以分号“;”结束。

例:

mysql>CREATE TABLE guest(name varchar(10),sex varchar(2),age int(3),career varchar(10));

6.创建索引

索引用于对数据库的查询。一般数据库建有多种索引方案,每种方案都精于某一特定的查询类。索引可以加速对数据库的查询过程。创建

索引的基本语法如下:

create index index_name

on table_name(col_name[(length)],...)

例:

mysql> CREATE INDEX number ON guest(number(10));

7.执行查询

查询是使用最多的SQL命令。查询数据库需要凭借结构、索引和字段类型等因素。大多数数据库含有一个优化器(optimizer),把用户的查

询语句转换成可选的形式,以提高查询效率。

值得注意的是MySQL不支持SQL92标准的嵌套的where子句,即它只支持一个where子句。其基本语法如下:

SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]

[DISTINCT | DISTINCTROW | ALL]

select_expression,...[INTO {OUTFILE | DUMPFILE} 'file_name' export_options]

[FROM table_references

[WHERE where_definition]

[GROUP BY col_name,...]

[HAVING where_definition]

[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]

[LIMIT [offset,] rows]

[PROCEDURE procedure_name] ]

其中where从句是定义选择标准的地方,where_definition可以有不同的格式,但都遵循下面的形式:

字段名操作表达式

字段名操作字段名

在第一种形式下,标准把字段的值与表达式进行比较;在第二种形式下,把两个字段的值进行比较。根据所比较的数据类型,search_condition中的操作可能选以下几种:

=检查是否相等

!=检查是否不等

>(或>=)检查左边值是否大于(或大于等于)右边值

<(或<=)检查左边值是否小于(或小于等于)右边值

[not] between检查左边值是否在某个范围内

[not] in检查左边是否某个特定集的成员

[not] like检查左边是否为右边的子串

is [not] null检查左边是否为空值

在这里,可以用通配符_代表任何一个字符,%代表任何字符串。使用关键字、和可以生成复杂的词,它们运行检查时使用

布尔表达式的多重标准集。

例:

mysql> select t1.name, t2.salary from employee AS t1, info AS t2swherest1.name = t2.name;

mysql> select college, region, seed from tournament

ORDER BY region, seed;

mysql> select col_name from tbl_nameswherescol_name > 0;

8.改变表结构

在数据库的使用过程中,有时需要改变它的表结构,包括改变字段名,甚至改变不同数据库字段间的关系。可以实现上述改变的命令是

alter,其基本语法如下:

alter table table_name alter_spec [, alter_spec...]

例:

mysql> alter table dbname add column userid int(11)not null primary key auto_increment;

这样,就在表dbname中添加了一个字段userid,类型为int(11)。

9.修改表中数据

在使用数据库过程中,往往要修改其表中的数据,比如往表中添加新数据,删除表中原有数据,或对表中原有数据进行更改。它们的基本

语法如下:

数据添加:

insert [into] table_name [(column(s))]

values(expression(s))

例:

mysql>insertsintosmydatabase values('php','mysql','asp','sqlserver','jsp','oracle');Mysql数据库学习心得(4)------------------

10.表的数据更新

(1)一次修改一个字段,再次注意语法。文本需要加引号但数字不要。

mysql>update table01 set field03='new info'swheresfield01=1;

Query OK, 1 row affected(0.00 sec)

(2)一次改变多个字段,记住在每一个更新的字段间用逗号隔开。

mysql>update table01 set field04=19991022, field05=062218swheresfield01=1;

Query OK, 1 row affected(0.00 sec)

(3)一次更新多个数据

mysql>update table01 set field05=152901swheresfield04>19990101;

Query OK, 3 rows affected(0.00 sec)

11.删除数据

mysql>delete from table01swheresfield01=3;

Query OK, 1 row affected(0.00 sec)

12.导入数据库表

(1)创建.sql文件

(2)先产生一个库如auction.c:mysqlin>mysqladmin-u root-p creat auction,会提示输入密码,然后成功创建。

(3)导入auction.sql文件

c:mysqlin>mysql-u root-p auction < auction.sql。

通过以上操作,就可以创建了一个数据库auction以及其中的一个表auction。

13.mysql数据库的授权

mysql>grant select,insert,delete,create,drop

on *.*(或test.*/user.*/..)

to用户名@localhost

identified by '密码';

如:新建一个用户帐号以便可以访问数据库,需要进行如下操作:

mysql> grant usage

-> ON test.*

-> TO testuser@localhost;

Query OK, 0 rows affected(0.15 sec)

此后就创建了一个新用户叫:testuser,这个用户只能从localhost连接到数据库并可以连接到test数据库。下一步,我们必须指定

testuser这个用户可以执行哪些操作:

mysql> GRANT select, insert, delete,update

-> ON test.*

-> TO testuser@localhost;

Query OK, 0 rows affected(0.00 sec)

此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户

程序:

mysql> exit

Bye

14.授权MySQL用户密码

MySQL数据库的默认用户名为“root”(MS SQL Server的sa相似),密码默认为空。在DOS提示符(注 意,不是mysql提示符)下输入

c:mysqlin>“mysqladmin-u root-p password newpassword

回车后会提示你输入原来的密码,由于原来密码为空,直接回车,root用户的密码便改为”newpassword“了。

Mysql数据库学习心得(5)------------------

四.安装phpMyAdmin

MySQL图形界面管理器phpMyAdmin是一套以php3写成,针对MySQL数据库系统的Web管理界面。它可以很方便地以图形化界面,来对MySQL数据库里的字段、数据进行增加、删除等的动作,更可以做数据库本身的增删管理;phpMyAdmin可以管理整个MySQL服务器(需要超级用户),也可以管理单个数据库。另外,您也可以通过使用这个图形化界面来学习SQL正确的语法,直至熟练掌握。那要等到你看过MySQL手册中相关的部分。你可以到http://www.phpwizard.net/phpMyAdmin/去下载最新的版本。

首先,将phpMyAdmin软件包解到一个目录下。

1.修改文档config.inc.php3。

将原来的设定:

§cfgServers[1]['host'] = '';// MySQL hostname

§cfgServers[1]['port'] = '';// MySQL port-leave blank fordefault port

§cfgServers[1]['adv_auth'] = false;// Use advanced authentication?

§cfgServers[1]['stduser'] = '';// MySQL standard user(only needed with advanced auth)

§cfgServers[1]['stdpass'] = '';// MySQL standard password(only needed with advanced auth)

§cfgServers[1]['user'] = '';// MySQL user(only needed withbasic auth)

§cfgServers[1]['password'] = '';// MySQL password(only needed with basic auth)

§cfgServers[1]['only_db'] = '';// If set to a db-name, only this db is accessible

§cfgServers[1]['verbose'] = '';// Verbose name for this host-leave blank to show the hostname

:

:

require(”english.inc.php3“);

修改成:

§cfgServers[1]['host'] = 'MySQL Server的hostname';//填入您的MySQL Server的主机名称

§cfgServers[1]['port'] = '';//填入连结MySQL的port,不填则以预设的port进行连结

§cfgServers[1]['adv_auth'] = true;//改成true则进入phpMyAdmin必须先身份认证

§cfgServers[1]['stduser'] = 'root';// MySQL使用者的帐号

§cfgServers[1]['stdpass'] = '密码';// MySQL使用者的密码

§cfgServers[1]['user'] = 'root';// MySQL管理帐号

§cfgServers[1]['password'] = '密码';// MySQL管理密码

§cfgServers[1]['only_db'] = '';//指定管理的资库名称,不填则可以管理整个Server

§cfgServers[1]['verbose'] = '';//指定MySQL的名称,不填则使用系统本身的hostname

:

:

require(”chinese_gb.inc.php3");//将语言改成中文

说明:

(1)因本管理接口,可以以一个接口,管理多个MySQL Server,所以可以在config.inc.php3中找到

§cfgServers[1]...§cfgServers[1]...§cfgServers[1]...:

§cfgServers[2]...§cfgServers[2]...§cfgServers[2]...其中[1]代表第一个MySQL Server,[2]代表第二个MySQL Server,您要管理的MySQL Server超过三台以上,您可以依照同样的?述,增加[4].....下去!

(2)若您的MySQL Server与http Server是同一台,则§cfgServers[1]['host'] =可直接填入localhost。

最后,打开流览器,输入你的网址/phpMyAdmin之后您会看到一个密码验证的小窗口,输入您的MySQL管理帐号及密码,即可成功地看到phpMyAdmin的管理画面。通过phpmyadmin,你就可以图形化的、方便的管理你的所有数据库了。

五.小结

通过以上的学习和操作,终于可以自由操作mysql数据库了,也可以轻车熟路的使用php或者asp调用mysql了。最后,笔者要特别感谢开发了mysql并且免费贡献的天才以及在网上提供mysql使用说明的大虾们。

第五篇:mysql数据库常用语句

mysql数据库常用语句

SQL分类:

DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

首先,简要介绍基础语句:

1、说明:创建数据库

CREATE DATABASE database-name

2、说明:删除数据库 drop database dbname

3、说明:备份sql server---创建 备份数据的 device USE master EXEC sp_addumpdevice ‟disk‟, ‟testBack‟, ‟c:mssql7backupMyNwind_1.dat‟---开始 备份

BACKUP DATABASE pubs TO testBack

4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:

A:create table tab_new like tab_old(使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only

5、说明:

删除新表:drop table tabname

6、说明:

增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

7、说明:

添加主键:Alter table tabname add primary key(col)说明:

删除主键:Alter table tabname drop primary key(col)

8、说明:

创建索引:create [unique] index idxname on tabname(col….)删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。

9、说明:

创建视图:create view viewname as select statement 删除视图:drop view viewname

10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围

插入:insert into table1(field1,field2)values(value1,value2)删除:delete from table1 where 范围

更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ‟%value1%‟---like的语法很精妙,查资料!排序:select * from table1 order by field1,field2 [desc] 总数:select count * as totalcount from table1 求和:select sum(field1)as sumvalue from table1平均:select avg(field1)as avgvalue from table1 最大:select max(field1)as maxvalue from table1 最小:select min(field1)as minvalue from table1

11、说明:几个高级查询运算词 A: UNION 运算符

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。B: EXCEPT 运算符

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。C: INTERSECT 运算符

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。

注:使用运算词的几个查询结果行必须是一致的。

12、说明:使用外连接 A、left outer join:

左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right outer join:

右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。C:full outer join:

全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

其次,大家来看一些不错的sql语句

1、说明:复制表(只复制结构,源表名:a 新表名:b)(Access可用)

法一:select * into b from a where 1<>1

法二:select top 0 * into b from a

2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b)(Access可用)insert into b(a, b, c)select d,e,f from b;

3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径)(Access可用)insert into b(a, b, c)select d,e,f from b in „具体数据库‟ where 条件 例子:..from b in ‟“&Server.MapPath(”.“)&”data.mdb“ &”‟ where..4、说明:子查询(表名1:a 表名2:b)select a,b,c from a where a IN(select d from b)或者: select a,b,c from a where a IN(1,2,3)

5、说明:显示文章、提交人和最后回复时间

select a.title,a.username,b.adddate from table a,(select max(adddate)adddate from table where table.title=a.title)b

6、说明:外连接查询(表名1:a 表名2:b)select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:在线视图查询(表名1:a)select * from(SELECT a,b,c FROM a)T where t.a > 1;

8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括 select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 数值1 and 数值2

9、说明:in 的使用方法

select * from table1 where a [not] in(„值1‟,‟值2‟,‟值4‟,‟值6‟)

10、说明:两张关联表,删除主表中已经在副表中没有的信息

delete from table1 where not exists(select * from table2 where table1.field1=table2.field1)

11、说明:四表联查问题:

select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where.....12、说明:日程安排提前五分钟提醒

SQL: select * from 日程安排 where datediff(‟minute‟,f开始时间,getdate())>5

13、说明:一条sql 语句搞定数据库分页

select top 10 b.* from(select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc)a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

14、说明:前10条记录

select top 10 * form table1 where 范围

15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)select a,b,c from tablename ta where a=(select max(a)from tablename tb where tb.b=ta.b)

16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表

(select a from tableA)except(select a from tableB)except(select a from tableC)

17、说明:随机取出10条数据

select top 10 * from tablename order by newid()

18、说明:随机选择记录 select newid()

19、说明:删除重复记录

Delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)20、说明:列出数据库里所有的表名 select name from sysobjects where type=‟U‟

21、说明:列出表里的所有的

select name from syscolumns where id=object_id(‟TableName‟)

22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。

select type,sum(case vender when ‟A‟ then pcs else 0 end),sum(case vender when ‟C‟ then pcs else 0 end),sum(case vender when ‟B‟ then pcs else 0 end)FROM tablename group by type 显示结果:

type

vender pcs 电脑

A 电脑

A 光盘

B 光盘

A 手机

B 手机

C

23、说明:初始化表table1 TRUNCATE TABLE table1

24、说明:选择从10到15的记录

select top 5 * from(select top 15 * from table order by id asc)table_别名 order by id desc 随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)

对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环: Randomize RNumber = Int(Rnd*499)+1 While Not objRec.EOF If objRec(“ID”)= RNumber THEN...这里是执行脚本...end if objRec.MoveNext Wend

这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一 个数据库内就包含了成千上万条记录。这时候不就死定了?

采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示: Randomize RNumber = Int(Rnd*499)+ 1

SQL = “SELECT * FROM Customers WHERE ID = ” & RNumber

set objRec = ObjConn.Execute(SQL)Response.WriteRNumber & “ = ” & objRec(“ID”)& “ ” & objRec(“c_email”)

不必写出RNumber 和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。

再谈随机数

现在你下定决心要榨干Random 函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。

为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:

SQL = “SELECT * FROM Customers WHERE ID = ” & RNumber & “ OR ID = ” & RNumber2 & “ OR ID = ” & RNumber3

假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这里的ID 是自动生成的号码):

SQL = “SELECT * FROM Customers WHERE ID BETWEEN ” & RNumber & “ AND ” & RNumber & “+ 9”

注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。

随机读取若干条记录,测试过

Access语法:SELECT top 10 * From 表名 ORDER BY Rnd(id)Sql server:select top n * from 表名 order by newid()mysql select * From 表名 Order By rand()Limit n

Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)

语法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where...使用SQL语句 用...代替过长的字符串显示

语法:

SQL数据库:select case when len(field)>10 then left(field,10)+‟...‟ else field end as news_name,news_id from tablename

Access数据库:SELECT iif(len(field)>2,left(field,2)+‟...‟,field)FROM tablename;

Conn.Execute说明

Execute方法

该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:

1.执行SQL查询语句时,将返回查询得到的记录集。用法为:

Set 对象变量名=连接对象.Execute(“SQL 查询语言”)

Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。

2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:

连接对象.Execute “SQL 操作性语句” [, RecordAffected][, Option] ·RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。

·Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。

·BeginTrans、RollbackTrans、CommitTrans方法

这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。

事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。

BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过 连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一 个错误信息。

下载计算机二级《MySQL数据库程序设计》知识点总结word格式文档
下载计算机二级《MySQL数据库程序设计》知识点总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    计算机二级Access知识点总结

    1、算法:是对一个问题求解步骤的一种描述,具有以下5个主要特性:有穷性,确定性,可行性,输入(有零个或者多个输入),输出(有一个或者多个输出)。算法的有穷性是指算法必须在有限的时间内......

    【数据库知识点总结】

    数据库概念总结 第一章 绪论 1、数据:描述事物的符号记录称为数据。可以是数字也可以是文字、图形、图像声音、语言等。 2、数据库:是长期储存在计算机内、有组织的、可共享的......

    数据库知识点总结

    文件处理系统存在问题:数据的冗余和不一致,数据访问困难,数据孤立,完整性问题,原子性问题,并发访问异常,安全性问题 数据库三级抽象物理层:最低层次的抽象,描述数据实际上是怎样存储......

    MySQL数据库连接超时(Wait_timeout)问题总结

    当应用程序和数据库建立连接时,如果超过了8个小时,应用程序不去访问数据库,数据库就会出现断掉连接的现象 。这时再次访问就会抛出异常. 一般的解决方法大多是在数据库连接字符......

    江苏计算机二级VFP上机知识点总结

    江苏省计算机二级VFP上机考试做题笔记 第一题 项目、数据库和表操作项目.PJX 数据库.DBC 表.DBF 1. 通用型 G 双击一下或按+→“编辑”→“插入对象” 备注型 M 双击一下或按......

    计算机二级考试C语言知识点总结

    计算机二级考试C语言知识点总结 (完全针对考试大纲) 概述 总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch) 2)读程序都......

    计算机二级常考知识点

    结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句 除了堆排序算法的比较次数是 1946年2月14日,人类历史上公认的第一台现代电子计算机ENIAC在美国宾夕......

    2012年3月全国计算机等级考试二级笔试试卷Visual_FoxPro数据库程序设计

    2012年3月全国计算机等级考试二级笔试试卷Visual FoxPro数据库程序设计 (考试时间90分钟,满分100分) 一、 选择题(每小题2分,共70分) 下列各题A、B、C、D四个选项中,只有一个选项是......