对表的增删改操作:
创建表:
create table student (
id int primary key auto_increment,
name varchar(10) character set utf8 not null,
sex char(2) default ‘M’,
constraint fk_student_score foreign key(id) references score(id)
) engine=InnoDB;
primary key:指定表的主键;
如果是指定单个主键,可直接在该字段后声明;
如果是指定多个主键,只能采用primary key (X,Y)的形式;
定义外键:
constraintfk_T2_T1foreign key(t2_id) references T1(t1_id); //将T1表中的t1_id字段设置成为T2表的外键;
增加外键
alter tableT2orderitemds add constraintfk_T2_T1foreign key(id) references T1(id); //将T1表中的t1_id字段设置成为T2表的外键;
auto_increment :让Mysql自动对该列增量;每个表只允许有一个auto_increment列,且必须被索引(以最大的数去递增),从而可将该列当作主键;
注:select last_insert_id():该语句可获得最后一个auto_increment的值;
default:为字段设置默认值;
character set …:指定编码格式,通常是为了让其能识别中文;
engine =…:指定mysql引擎;
常用的引擎类型:
InnoDB:可靠地事物处理引擎,但不支持全文检索;
MyISAM:性能极高的引擎,支持全文检索,但不支持事务处理;
MEMORY:功能同于MyISAM,但由于数据库在内存里,速度很快;适用于临时表;
注:新版Mysql默认引擎是InnoDB;
更新表:使用alter table语句
增加列:
alter tableTadd Tname varchar(20); //为T表增加一个名为Tname的列
删除列:一次只能删除一列;
alter tableTdrop columnTname; ///删除T表中名为Tname的列
删除表:使用Drop table语句
例:drop table T;
重命名表:使用rename table语句
例:rename table T1 to t1, T2 to t2, T3 to t3;
对表中数据的查询操作:
SQL语句格式:
select
from
where
group by
having
order by
limit
去重:distinct
例:select distinct * from T
数据分组:group by , having , rollup
group by :进行分组; 如果分组中具有null值,则null将作为一个分组返回;
having :过滤分组; 它支持所有where中的操作符;
注:可以使用rollup关键字来显示出分组前所有的数据;例:group by prod_id with rollup;
除聚集计算语句外,select语句中使用的每个选择列或表达式列,都必须在group by子句中给出;
排序:order by
select * from XXX order byXXX (desc(降序)/asc(升序))
限制检索行数:limit,limit offset
例: select * from XXX limit 0,2 (从第0行开始,取2行)
等价于 select * from xxx limit 1 offset 2(从第2行开始取1行)
起别名:
可以为表或列起别名;
有两种形式:
(1)table1 t1
(2)table1 as t1
where语句中注意的问题:
注:and比or的优先级高
‘<>’ 等价于 ‘!=’f
between A and B:包括边界
is null
in :指定条件范围 取值时用","分隔,相当于or的作用,但比or操作符执行的更快;并且可以包含select语句;
not
like: %:任意字符(null除外) _:单个字符
注:用通配符过滤:花费时间较长,避免过度使用;可以考虑用正则表达式;
mysql支持部分正则表达式,可以匹配基本的字符和字符串;
形如: select * from products where prod_name regexp ‘XXXX’
例:检索到prod_name包含文本1000的所有行;
select * from products where prod_name regexp ‘1000’
mysql的预定义字符集:
[:digit:]---任意的数字(同[0-9])
[:lower:]---任意小写字母(同[a-z])
[:upper:]---任意大写字母(同[A-Z])
[:alpha:]---任意字符(同[a-zA-Z])
[:alnum:]---任意数字和字母(同[a-zA-Z0-9])
[:blank:]---空格和制表符(同[\\t])
[:space:]---任意的空白字符,包括空格;(同[\\f\\n\\r\\t\\v])
例:-- 表示检索出现连在一起的任意4位数字和小写字母的所有