排序:ORDER BY field1, [field2...] [ASC [DESC]]

分组:GROUP BY field [with rollup] {根据某个字段有哪几种类型分出来,可配合函数作统计不同分组数量,with rollup所有分组计算总数量}

连接:
INNER JOIN 内库接 交集 select 列名1,列名2... from 表1 inner join 表2 on 表1.列?=表2.列?
LEFT JOIN(左连接)左交集select 列名1,列名2... from 表1 left join 表2 on 表1.列?=表2.列?
RIGHT JOIN(右连接)右交集select 列名1,列名2... from 表1 right join 表2 on 表1.列?=表2.列?

正则表达式:select.... WHERE 列名 REGEXP 'XXX';

NULL值处理:is null or is not null

事务:
MYSQL的事务处理主要有两种方法。
1、用begin,rollback,commit来实现
begin 开始一个事务
rollback 事务回滚
commit 事务确认
2、直接用set来改变mysql的自动提交模式
MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
来实现事务的处理。
但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!
个人推荐使用第一种方法!
MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!(切记!)

也可用UNIDAC的控件实现
UniQuery.Connection通过StartTransaction, Commit, Rollback等方法来控制本地事务,判断一个事务是否开启用InTransaction。

------------------------------------------------------------------------------------------------------------------------------------
数据库操作:
create database 数据库名 character set gbk; {设置数据库的字符集}
drop database 数据库名
对表的操作

创建表:create table student( stu_id int unsigned not null,s_name char(10) not null )

// {default'-', 默认值 int unsigned 无符号int,not null 不为空,auto_increment 自动增加索引值,primary key设置为主键,可在建表时加上或另外设置}

删除表:drop table 表名;

删除表中所有数据:delete from student

给表改名字:alter table 旧表名 rename 新表名;

添加列:alter table 表名 add 列名 列数据类型 [after 插入位置]or[first];

给表的列改数据类型: ALTER TABLE 表名 MODIFY 列名 数据类型

给列数据类型修改默认值:ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;{不用加等号}

删除列数据默认值:ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;

给列改名:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型

删除列:alter table 表名 drop 列名称;

显示表的结构:show create table 表名;

自增序列添加主键(先添加主键再添加自增序列):

给列添加主键 Alter table student add primary key(s_id);

给列添加序列 Alter table 表名 change 列名 列名 int(10) not null auto_increment;

设置自增序列当前值:alter table 表名 AUTO_INCREMENT=??;

查询当前自增列的值:SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name='student';

删除主键(如有自增长序列,先删自增长再删除主键)
删除自增长 Alter table 表名 change 列名 列名 数据类型
删除主键 Alter table 表名 drop primary key

添加索引 create INDEX indexName ON 表名 (列名(length));
创表时指定: create table 表名(列名 INT NOT NULL,列名 varchar(16)not null ,
INDEX [indexName](列名(length)));
修改表的结构时添加:alter 表名 add INDEX[indexName] on (username(length))
删除索引:DROP INDEX [indexName] on 表名

创建索引(也可在建表时加索引):
建表时创建例:CREATE TABLE 表名(ID INT NOT NULL,username VARCHAR(16) NOT NULL,INDEX [indexName] (username(length)) );
ALTER TABLE
ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。

ALTER TABLE table_name ADD INDEX index_name (column_list)

组合索引:ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);{最左前缀usernname,city,age usernname,city usernname 包含}

ALTER TABLE table_name ADD UNIQUE (column_list)
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

ALTER TABLE table_name ADD PRIMARY KEY (column_list)
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:

 

删除索引:
DROP INDEX index_name ON talbe_name

ALTER TABLE table_name DROP INDEX index_name

ALTER TABLE table_name DROP PRIMARY KEY


临时表:create temporary table student_temp(....)
删除临时表DROP TABLE 表名;{与数据库断开连接也会自动销毁临时表}

复制表:(也可show crete table 表名 获取信息建新表)
1.只复制表结构到新表
CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2 或者
CREATE TABLE 新表 LIKE 旧表

2.复制表结构及数据到新表
CREATE TABLE 新表 SELECT * FROM 旧表

3.复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表 SELECT * FROM 旧表

4.复制旧表的数据到新表(假设两个表结构不一样)
INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表

 


对数据的操作

增:insert course values(null,'游泳 ') 或insert course(x1,x2) values(y1,y2) {可以只插入对应的列的值}
INSERT IGNORE INTO与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,
就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。
INSERT IGNORE INTO当插入数据时,在设置了记录的唯一性后,如果插入重复数据,将不返回错误,只以警告形式返回。
而REPLACE INTO into如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。

删:delete from course where id=3

改:update course set cName='羽毛球' where id=4

查:select * from 表名

posted on 2016-09-02 18:40  冰火(BH)  阅读(258)  评论(0编辑  收藏  举报