mysql 表属性操作随笔

语句 set names utf8;用于设定数据库编码,让中文可以正常显示。

创建数据库:

 CREATE   DATABASE   `database` 
                           CHARACTER   SET   'utf8' 
                           COLLATE   'utf8_general_ci '; 

创建表:

CREATE   TABLE   `database_user`   ( 
                          `ID`   varchar(40)   NOT   NULL   default   ' ', 
                          `UserID`   varchar(40)   NOT   NULL   default   ' ', 
                                )   ENGINE=InnoDB   DEFAULT   CHARSET=utf8; 

创建表:

CREATE TABLE `csyzz` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `age1` char(10) DEFAULT NULL,
  `time` datetime DEFAULT NULL,
  `author` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

修改表名

alter table test rename test1;

–添加表列

alter table test add  column name varchar(10); 

–删除表列

alter table test drop  column name; 
或
alter table family drop age

修改表列名age为age1;

alter table ceshishuju change  column age age1 varchar(30);

–修改表列类型

alter table test modify address char(10) 
或
alter table test change address address  char(40)

修改表中列类型的语法:
alter table 表名 modify 列名 新类型 新参数;

alter table family modify age varchar 

如果想增加一列,并位于表的最前面,用first
alter table 表名 add 列名称 列类型 列参数 first;

alter table m1 add pid int not null first;

添加数据

insert into Info values('p009','张三',1,'n001','2016-8-30 12:9:8') ; 

给特定的列添加数据

insert into Info (code,name) values('p010','李四');

自增长列的处理

insert into family values('','p001','数据','T001','数据',1);

insert into 表名 values(值)

删除数据
删除所有数据

delete from family

删除特定的数据

delete from Info where code='p001'

delete from 表名 where 条件

修改数据
修改所有数据

update Info set name='徐业鹏' 

修改特定数据

update Info set name='吕永乐' where code='p002' 

修改多列

update Info set name='吕永乐',sex=1 where code='p003'

update 表名 set 要修改的内容 where 条件

读取数据
(1)简单读取,查询所有列(*) 所有行(没有加条件)

select * from Info

(2)读取特定列

select code,name from Info

(3)条件查询

select * from Info where code='p003'

(4)多条件查询

select * from Info where code='p003' or nation='n002' #或的关系
select * from Info where sex=0 and nation='n002' #与的关系

(5)关键字查询(模糊查询)
查所有包含奥迪的汽车

select * from car where name like '%奥迪%'; #百分号%代表任意多个字符

查以’皇冠’开头的所有汽车

select * from car where name like '皇冠%';

查询汽车名称中第二个字符是’马’的

select * from car where name like '_马%'; #下划线_代表任意一个字符

(6)排序查询

select * from car order by powers #默认升序排列
select * from car order by powers desc #升序asc 降序 desc

先按brand升序排,再按照price降序排

select * from car order by brand,price desc

范围查询
select * from car where price>40 and price<60 --查询价格在40-60之间的

select * from car where price between 40 and 60   --between...and...

离散查询 查询离散值,例如查询汽车价格是30、40、50、60等整数的

select * from car where price=30 or price=40 or price=50 or price=60;
select * from car where price in(30,40,50,60)
select * from car where price not in(30,40,50,60)   --价格除30,40,50,60以外的数的

聚合函数(统计查询)

select count(*) from car    --查询这张表里面有多少数据。count方法可以用来求条数
select count(code) from car #取所有的数据条数。code为主键,内容不为空,可以用code查询。
select sum(price) from car #求价格总和
select avg(price) from car #求价格的平均值
select max(price) from car #求最大值
select min(price) from car #求最小值

数据查询原理:数据库在查询数据的时候会每一条数据都会查一遍,查询的时候如果条件成立,会返回数据true,如果不成立,会返回false。如果返回的是true,就会选取这条数据,如果返回的是false,就pass掉这条数据。例如,如果select * from car where 1=1,输出的会是表格的所有数据,因为1=1恒满足条件。

分页查询 每一页有很多数据,可以查看下一页的数据。

select * from car limit 0,10 #分页查询,跳过几条数据(0)  取几条(10)

规定一个每页显示的条数:m
当前页数:n

select * from car limit (n-1)*m,m  取第n页显示的m条数据

去重查询

select distinct brand from car     --distinct表示去重,前面代码表示对brand列去重查询

去重查询适合查1列,查2列就不适合用了。

分组查询
查询汽车表中,每个系列下汽车的数量。按照brand分组。

select brand,count(*) from car group by brand

分组之后,只能查询该列或聚合函数

取该系列价格平均值大于40的系列代号

select brand from car group by brand having avg(price)>40

取该系列油耗最大值大于8的系列代号
select brand from car group by brand having max(oil)>8

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

mysql  表属性操作随笔