数据库就是数据的仓库,1、将数据保存到文件或内存;2、接收特定的命令然后对文件进行相应的操作。
对数据库的操作分为1、数据库;2、数据表;3、数据行操作
1、数据库操作
显示有哪些数据库:
SHOW DATABASES;
创建数据库:
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
进入具体某一数据库:
USE 数据库名;
2、数据表操作(对数据表的操作都带table,只有show tables为复数,因为查看的是所有有的表,所以为复数)1、创建create;2、删除drop;3、查看show;4、修改alter。创建、删除、修改;所有单数table都带上表名。
创建表:
create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `tab1` ( `nid` int(11) NOT NULL auto_increment, # not null表示不能为空,auto_increment表示自增 `name` varchar(255) DEFAULT aa, # default 表示默认值 `email` varchar(255), PRIMARY KEY (`nid`) # 把nid列设置成主键 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
查看表:
show tables; #查看数据库中有哪些表
删除表
drop table 表名
修改表(对表结构的更改)
对表中列的操作:添加列,删除列,修改列
alter table 表名 add 列名 类型 #添加 alter table 表名 drop column 列名 #删除 alter table 表名 modify column 列名 类型; #对列类型的修改 alter table 表名 change 原列名 新列名 类型; #对列名和类型的修改
对主键的操作:
alter table 表名 add primary key(列名); # 添加主键 alter table 表名 drop primary key; #删除主键 alter table 表名 modify 列名 int, drop primary key; #删除主键
对外键的操作:
alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段); # 添加外键 alter table 表名 drop foreign key 外键名称 #删除外键
对默认值的操作:修改默认值,删除默认值
ALTER TABLE 表名 ALTER 列名 SET DEFAULT 10; #修改默认值 ALTER TABLE 表名 ALTER 列名 DROP DEFAULT; #删除默认值
3、数据行(数据表内容的操作)
表内容的增删改查
(1)增
增加表内容的三种形式
insert into 表 (列名,列名...) values (值,值,...) insert into 表 (列名,列名...) values (值,值,...),(值,值,值...) insert into 表 (列名,列名...) select (列名,列名...) from 表
(2)删除表内容
delete from 表 # 删除表里全部数据 delete from 表 where nid=1 # 删除nid =1 那一行数据
(3)更改表内容
update 表 set name = 'zjs' where id=1
(4)查询表内容
一般查询
select * from 表 select * from 表 where nid > 10 select nid,name,age as num from 表 where id > 10
条件查询
select * from 表 where nid > 10 and name != 'haha'; select * from 表 where nid between 13 and 18; select * from 表 where nid in (10,20,30) select * from 表 where id not in (1,2,3) select * from 表 where nid in (select nid from 表)
通配符like
select * from 表 where name like 'aa%' # aa开头的所有(多个字符串) select * from 表 where name like 'aa_' # aa开头的所有(一个字符)
限制limit
select * from 表 limit 6; - 前6行 select * from 表 limit 3,6; - 从第3行开始的6行 select * from 表 limit 6 offset 3 - 从第3行开始的6行
查询内容后的升降序
select * from 表 order by 列 asc - 根据 “列” 从小到大排列 select * from 表 order by 列 desc - 根据 “列” 从大到小排列 select * from 表 order by 列1 desc,列2 asc - 先根据 “列1” 从大到小排列,相同则再按列2从小到大排序
查询内容后分组
select num from 表 group by num select num,nid from 表 group by num,nid select num,nid from 表 where nid > 10 group by num,nid order by nid desc select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid select num from 表 group by num having max(id) > 10
group by 必须在where之后,order by之前
其他操作:
查询数据库支持的存储引擎:
show engines;
查看表使用的引擎和其他信息:
show table status from db_name where name='table_name'; show create table table_name;
查看建表语句:
show create table table_name;
修改表的引擎:(上述内容中的修改表差不多,都是修改嘛!!)
alter table table_name engine=innodb;
关闭mysql服务:
net stop mysql
开启mysql服务
net start mysql
mysql的初始化文件my.ini
找到default-storage-engine=INNODB 改为default-storage-engine=MYISAM能够修改默认引擎。