1. 更改表格
alter table table_name add column column_name datatype
说明:增加一个列(没有删除某个栏位的语法。
alter table table_name add primary key (column_name)
说明:把表的一个列名设为主键
alter table table_name drop primary key (column_name)
说明:把主键的定义删除。
alter table student modify column sno char(30);
说明:更改表的属性。
2.建立索引
create index index_name on table_name (column_name)
说明:对某个表格的栏位建立索引以增加查询时的速度。
3.表的数据嵌入
insert into table01 (field01, field02, field03, field04, field05) values
结果->(2, ‘second’, ‘another’, ‘1999-10-23’, ‘10:30:00’);
标准日期格式是"yyyy-mm-dd"。
标准时间格式是"hh:mm:ss"。
引号内要求所给的是上述的标准日期和时间格式。
日期也可以"yyyymmdd"形式,时间也可以"hhmmss"形式输入,但其值不需要再加引号。
数字值不需要加引号。这种保存与数据类型无关,这些数据类型都有格式化的专栏来包含(例如:文本,日期,时间,整数等)。
MySQL有一个很有用的命令缓冲区。它保存着你目前已经键入的SQL语句利用它,对于相同的命令,你就不必一遍又一遍地重复输入。下一步我们就来看这样的一个例子。
利用命令缓冲区(及任意的日期和时间格式)增加另一个数据
按两次键盘上的向上箭头键。回车。
在圆括号内输入新的值,并以分号结尾。
(3, ‘a third’, ‘more’, 19991024, 103004);
回车。
新值存在里面了吗?
mysql>select * from table01;
field01 field02 field03 field04 field05
1 first NULL NULL NULL
2 second another 1999-10-23 10:30:00
3 a third more 1999-10-24 10:30:04
4. 查询资料:
(1)基本查询(2)组合查询Select C1,C2 From table_name
Select distinct C1,C2 from T1 //不重复的选取
说明:把T1 的特定栏位资料全部列出来
select * from T1 where C1 = xxx [and C2 > yyy] [or C3 <> zzz]
说明:
1) '*'表示全部的栏位都列出来。
2) where 之後是接条件式,把符合条件的资料列出来。
select C1,C2 from T1 order by C2 [desc]
说明:order by 是指定以某个栏位做排序,[desc]是指从大到小排列,若没有指明,desc则是从小到大排列
(3)整合性的查询:组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的表格才能够得到结果的。
select * from table1,table2 where table1.colum1=table2.column1
Select C1,C2 from T1 where C1= @childName //按照变量childName来作为C1的值进行选取,也可以用“+ childName +”来代替
说明:
涉及到变量查询,比较喜欢用MySqlUtil.CS这个帮助类,适用它很简单,如下:
MySqlParameter[] sqlParam = new MySqlParameter[]{ new MySqlParameter("@childName",childName)}; //即将childName的值加入其中。
DataSet ds = DAL.SqlHelper.ExecuteReader(sqlConnectingStr, CommandType.Text, sqlSelectStr, sqlParam);
(4)复合性的查询select count (*) fromT1 where C1 = 17 // T1中列C1值为17的个数
SELECT d.ID,d.Name FROM T_BaseInfo d ,T_Info da WHERE d.Code=da.Code AND da.ID=a.ID and d.ID=01; //将表重新定义只能在From后面进行。
select sum(C1) from T1 //计算C1一整列的总和,可以用avg(平均)、max(最大值)、min(最小值)
select column1,avg(column2) from table_name group by column1 having avg(column2) > xxx
SELECT region, SUM(population), SUM(area) FROM T1 GROUP BY region //按地区显示总人口数和总面积.
按地区显示总人口数和总面积,而且仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region HAVING SUM(area)>1000000
Select id, A.prjno, prjname, DATE_FORMAT(updatetime,'%Y-%m-%d') as updatetime, reporter from
dataSet.prjschedule as A, dataSet.prjbasicinfo as B where A.prjno = B.prjno
//这句话的意思是:有两个表A、B,在显示时大部分内容是B中的字段,但是还需要A的一个字段,这两个表有共同的prjno字段,其中这些内容要读取到一个DataSet中去,但在DataSet中日期格式与MySql中的不符,需要在此语句中进行设定。
(5)其他查询select * from T1 where exists ( select * from T2 where conditions )
①Exists(not Exists)
INSERT INTO T1(client_id, client_name, client_type) SELECT supplier_id, supplier_name, ''advertising'' FROM T2
WHERE not exists (select * from clients where T1.client_id = T2.supplier_id); //当T1中的id不存在与T2中的id相等的值时则将从T2中选出的字段内容插入到表T1中
Create Table If Not Exists pxl_table(id int(16),name varchar(32)); //若不存在这样的pxl_table则创建(有这样两个参数的?)一个表
② IN 从T1中把C1的值在IN()中的项都取出来,C1的属性必须和()中的值属性一致。
select * from T1 where C1 in ( select C1 from T2 where conditions )
select * from T1 where C1 like 'x%'
说明:like 必须和後面的'x%' 相呼应表示以 x为开头的字串。
select * from table_name1 where column1 between xx and yy
说明:between 表示 column1 的值介於 xx 和 yy 之间。
5.表的数据更新
INSERT INTO T1(industryName) VALUES (@industryTXT) //将insustryTXT作为列industryName的值插入到表T1中
INSERT INTO T1(prjno) SELECT prjno FROM T2 //将T2中的prjno字段都插入到T1中作为T1的字段
再次注意语法。文本需要加引号但数字不要。
Update T1 Set C1 = ’ info’ Where C2 = 1;
一次更新多个数据
update table01 set field05=152901 where field04>19990101;