本人已有几年的SqlServer数据库开发经验,此文章只为巩固学习和总结MySQL操作,故有些地方描述不是很完整和详细。
DDL(Data Definition Language):数据定义语言,用来操作数据库、表、列、索引等数据库对象。关键字主要包括create、drop、alter等
DML(Data Manipulation Language):数据操纵语句,用于增删改查,检测数据完整性。关键字主要包括insert/delete/update/select等
DCL(Data Control Language):数据控制语句,用于定义数据库、表、字段、用户的访问权限和安全级别。主要关键字包括grant、revoke等
数据库的创建、删除、显示、引入
创建数据库:
CREATE DATABASE [IF NOT EXISTS] 数据库名;
删除数据库:
DROP DATABASE [IF EXISTS] 数据库名;
显示所有已建立的数据库名称列表:
SHOW DATABASES;
引入数据库为当前数据库:
USE 数据库名;
创建表
语法格式如下:
CREATE TABLE [IF NOT EXISTS] 表名称
(
字段名1 列类型 [属性] [索引],
...
字段名n 列类型 [属性] [索引]
)[表类型] [表字符集];
eg:
create table if not exists users(
id int(10) unsigned not null auto_increment,
username varchar(50) not null,
userpass varchar(50) not null,
telno varchar(20) not null unique,
sex enum('男','女') not null default '男',
brithday date not null default '0000-00-00',
primary key(id),
index users_username(username,userpass)
)
ENGINE=MyISAM default character set utf8 collate utf8_general_ci;
上述中设置表类型为MyISAM使用ENGINE而不是Type。最后一句的意思是:指定默认创建的表字符集(character set)为utf8,校对规则是utf8_general_ci。
表创建成功后,可以使用“show tables”命令查看,使用“describe 表名”或者“desc 表名”命令用于显示表的创建结构。
删除表
drop table [if exists] 表名;
修改表
1、为指定的数据表新增一个字段:
alter table 表名 add 字段名 <建表语句> [firstafter 列名]
语法解析:
[firstafter 列名]:在指定的列名之前或之后添加
eg:在users表的第一列之前添加name列
alter table users add name varchar(30) not null first;
在users表的userpass之后添加height列
alter table users add height double not null default '0.00' after userpass;
2、修改字段的类型或名称:
可以使用change或者modify子句,如果列名相同,则change和modify的作用相同
alter table 表名 change/modify 列表<建表语句>
eg:
修改users表中telno字段,将类型改为int,并设置默认值
alter table users modify telno int unsigned default '0';
如果要修改列名,使用change,change除了更改类型外还能更改列名,而modify不能实现修改列名这个功能。
eg:
修改users表的telno的类型,并将telno命名为phone
alter table users change telno phone int unsigned default '0';
注意:使用change,即使不更改列名,也需要在定义中包括相应的列名,即上述的“telno phone”需要写作“telno telno”。
3、重命名数据表
alter table 旧表名 rename 新表名;
4、删除表字段
alter table 表名 drop 列名;
DML语句
插入记录
1、插入单条记录:
insert into tablename(column1,column2...columnN) values(v1,v2...vN);
2、一次性插入多条记录:
insert into tablename(column1,column2,……columnN)
values
(r1_v1,r1_v2,……r1_vN),
(r2_v1,r2_v2,……r2_vN);
查询数据
1、使用LIMIT关键字,查询指定部分的数据,语法:
select ....from tablename [where..] [order by ..] limit startindex,rowcount
startindex表示起始偏移量,默认为0;rowcount表示查询的行数。
2、聚合查询
语法:
select [col1,col2,...coln] fun_name
from tablename
[where 条件语句]
[group by col1,col2,..coln
[with rollup]]
[having 分组后的条件语句]
说明:
fun_name:聚合函数
with rollup是可选语法,表明是否对分类聚合后的结果进行再汇总。eg:select wy,count(1) from user group by wy with rollup,该语句将会对最终的count(1)再进行汇总。