MySQL学习笔记 1.0

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)基本查询

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则是从小到大排列

(2)组合查询

组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的表格才能够得到结果的。

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);

(3)整合性的查询:

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中的不符,需要在此语句中进行设定。


(4)复合性的查询

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 )

(5)其他查询

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章