Mysql库操作表操作数据操作.docx
《Mysql库操作表操作数据操作.docx》由会员分享,可在线阅读,更多相关《Mysql库操作表操作数据操作.docx(13页珍藏版)》请在冰点文库上搜索。
Mysql库操作表操作数据操作
sql:
大致分成典型:
DML(数据管理语句,数据操作),DDL(数据定义语句,数据结构的控制语句,表操作和库操作)
库操作,DDL
创建,create
create:
几乎所有的结构,都是用该语法完成
语法:
createdatabasedb_name[库选项];
示例:
(创建一个名为ginvip的数据库)
create database ginvip;
注意的问题:
1:
库选项,只有字符集,校对集的概念!
2:
每个库会对应一个数据目录
存放在当前mysql的总的数据库目录中,可参考mysql配置文件(mysql/my.ini)得到该目录
如:
刚创建名为ginvip的数据库:
3:
数据库名的问题
大小写问题:
取决于mysql服务器所在的操作系统!
(建议是,认为区分)
特殊名称:
如果要使用某些关键字,特殊字符,中文等作为数据库名,需要加上反引号。
(多字节字符还需要注意字符集的问题)
如:
`order`,`琴酒网络`。
如此便可以此等特殊字符作为数据库名!
create database `order`;
删除,drop
语法:
dropdatabasedb_name;
示例:
删除名为ginvip的数据库
drop database ginvip;
修改,alter
语法:
alterdatabasedb_name;
只能修改数据库选项!
示例:
alter database t_t charset gbk;
查询,show
查询已有的数据库名字:
语法:
showdatabases;
可以与like关键字配合使用,用于过滤多个数据库!
用法:
showdatabaseslike'%_schema';
查询以schema结尾的数据库!
有两个通配符可用:
%:
匹配任意字符的任意次数的组合
_:
匹配任意字符的一次
如果需要用通配符_来匹配_时,就要用到转义字符。
如:
showdatabaseslike't\_t';
查看某个数据库的定义:
语法:
showcreatetabletb_name;
在create与drop时,创建与删除时,有两个额外的操作:
createdatabaseifnotexistsginvip; //如果ginvip不存在则创建ginvip数据库
dropdatabaseifexistsginvip; //如果ginvip存在,则删除ginvip数据库
表操作:
包括表本身与表结构的操作!
创建:
createtable
语法:
createtabletb_name(
字段的定义
)[表选项];
其中表名:
一定先要确定数据库!
因此,一个典型的表名是由两部分组成:
所在库,表名
test.itcast //test库内itcast表
itcast.stu //itcast库内stu表
但我们可设置默认数据库,如果不指定则使用默认数据库(当前数据库)
usedb_name; 可以选择数据库!
在使用表名,但是没有指明其所在数据库时,默认数据库才会起作用!
在ginvip库内创建表两种方法:
useginvip;
createtablestu;
或者:
createtableginvip.stu;
其中字段部分:
字段才是最终的数据的载体(与变量的概念是类似的,都是基本保存数据的),mysql是强类型,字段的类型是固定的,提前定义好的!
因此,在定义字段时,至少要指定字段名和字段类型!
两种最基本的mysql数据类型(int,varchar)
表选项部分:
典型的常用的表选项有:
字符集(校对集),表引擎
示例:
在ginvip数据库内创建stu表
create table stu (id int,name varchar(255)) engine=innodb charset=utf8;
查看:
查看所有的表有哪些:
showtables; //后面也可以跟like关键字
查看具体的建表语句:
showcreatetabletb_name;
在msyql的命令行客户端,如果数据过多,不容易展示,可以使用\G作为语句结束符
如:
showcreatetablestu\G
查询表结构:
desctb_name;
修改:
修改表选项:
altertabletb_name[新选项];
altertablestuengine=myisamcharset=gbk;
修改表名:
语法:
renametable原表名to新表名;
renametablestutohero;
注意:
表名可以由库名.表名形式的
因此,可以跨库修改表名,只要在表名前增加库名即可
修改表结构,表内字段:
增加字段:
语法:
altertabletb_nameaddcolumn字段定义[字段位置];
示例:
增加一个age字段:
altertablestuaddcolumnageint;
示例:
增加一个height字段,在name字段之后插入:
altertablestuaddcolumnheightintaftername;
示例:
在最开始增加一个sn字段(id前插入):
altertablestuaddcolumnsnvarchar(10)first;
删除字段:
语法:
altertabletb_namedropcolumncolumn_name;
示例:
删除height字段:
altertablestudropcolumnheight;
修改已有字段(修改字段定义):
语法:
altertabletb_namemodifycolumncolumn_name新的定义;
示例:
将sn字段修改为int型并且将sn字段放到name字段的下面:
altertablestumodifysnintaftername;
字段改名:
语法:
altertabletb_namechangecolumn原字段名新字段名新字段定义;
注意:
不是纯粹的改名,而是在需要在修改定义的同时改名!
示例:
将sn字段放到最下面,同时修改其类型为varchar(255):
altertablestuchangecolumnsnstu_snvarchar(255)afterage;
如果只修改其表名,语法必须如下:
altertablestuchangecolumnsnstu_snvarchar(255);
删除:
语法:
droptabletb_name;
数据操作:
基本的操作:
增加,创建,插入,insert
语法:
insertintotb_name(字段列表)valuse(与字段相对的值的列表);
示例:
insertintostu(id,name)values(1,'ginvip');
insertintostu(id)values
(2);
insertintostu(name)values('-');
insertintostu(name,id)values('php',4);
以上四条语句都可以执行成功。
由此可见:
不一定要一次性插入所有字段,或者按照原始的字段顺序插入:
但是,字段与值的数量一定要匹配:
以下这条语句就执行不成功:
insertintostu(id)values(5,'php1016');
特殊的:
如果所有的值都按照字段的出现顺序都插入的话,可以省略字段列表部分:
insertintostuvalues(6,'poe');
批量插入多条数据:
insertintostuvalues
(8,'Lee'),
(9,'John'),
(10,'Ben'),
(11,'Crystal');
注意:
最后一条数据以分号结束!
注意:
数值类型,不需要加引号(可以加);而字符型都需要加引号!
删除,delete
语法:
deletefromtb_name表名where条件;
关于条件,可以省略,表示永远为真。
示例:
deletefromstuwhereid>5;
注意:
删除是不可逆的,要避免没有条件的删除!
修改,更新,update
语法:
update表名set字段=新值,字段n=新值nwhere条件;
示例:
将id为4的名字改为大写的PHP
updatestusetname='PHP'whereid=4;
查询,检索,选择,select
语法:
select字段列表from表名[where条件表达式];
字段列表可以用*表示所有字段!
示例:
select*fromstu;
slect*fromstuwhereid>0;
关于条件表达式:
默认是没有,表示永远为真!
但在实际应用中,很少出现没有条件的情况!
关于字段列表:
也就方够用就行!
如:
selectnamefromstuwhere1;