1、操作数据库
显示数据库:show databases
连接数据库:use <数据库名>
连接当前的数据库:select database();
显示当前的数据库版本:SELECT VERSION();
显示当前时间:select now(); 显示结果是 2009-09-15 22:35:32
创建数据库:create database <数据库名>
删除数据库:drop database <数据库名>
2、操作数据表 table
创建新表:
create table MyClass(
id int(4) not null primary key auto_increment,
name char(20) not null,
sex int(4) not null default '0',
degree double(16,2));
删除表:drop table MyClass;
删除表中的数据:delete from 表名 where 表达式
修改表中的数据:update 表名 set 字段=新值,… where 条件
1、 limit 用法;
在mysql中 分页的话一般用limit 关键字,用法有两种,一种是只有一个参数另外是有两个参数的,具体如下:
A limit n,m 表示是从第n行记录开始 取m条行数据
B limit n 表示 表示取n条记录
切记 :行是从0开始检索的。
实例讲解:
select * from u_user_tab where userid =1 order by userid limit 10 取前10条数据
select * from u_user_tan where userid =1 order by userid limit 2,10 从第三行开始取10条数据
2、 复制表
复制表的前提是:保证两张表的结构是一样的,不然不会复制成功
1、 复制不同数据表的数据(无论是否有主键,都要写上)
Insert into new_tab Select * from u_user_tab where userid =1
2、 复制同一张表中的数据
•有主键
Insert into 表名(字段1,字段2,…) Select字段1,字段2,… from 表名 where 1=1
•无主键
Insert into 表名 select * from 表名where 条件
3、 删除表
Drop table 表名 or Drop table 表名 if exist 如果不存在会发出一个note警告
4、 删除表中的数据
A delete from 表名 效率低 可从日志恢复 删除方式是按行一条一条删除
B truncate table 表名 效率高 不可恢复 删除方式是 只保留表结构 重新创建这个表
5.查询重复数据
select loginname,count(*) as count from u_user_tab group by loginname having count>1;
6、join on 使用
小编今天告诉你们一个原则 越简单越好 只要是能满足公司的业务需求即可 大可不必去追求 用复杂的sql语句去实现业务逻辑 因为 你写的代码只有别人都能看懂才能证明你是大师,不然只有你自己能看懂的sql语句岂不是起到副作用
默认使用 join on 是 省略了 inner ,所以使用它之后会选择出符合条件的数据 ,不符合的被过滤掉;
如果使用
这里 在使用mysql 时 如果你不会使用类似join on 的函数时 不要担心 因为这些都是后来mysql 封装进去的函数,所以我们只需掌握 mysql最原生的sql 语句即可,
SELECT 表 b LEFT JOIN 表 a on 条件
返回的是 不管条件是否成立 都会返回表 b 中的所有数据
SELECT 表 b right JOIN 表 a on 条件
返回的是 不管条件是否成立 都会返回表 a 中的所有数据
达不到 过滤的效果 如果想达到过滤的效果 就只能用
SELECT 表 b JOIN 表 a on 条件
返回 符合条件的 表b 的数据
select 字段 from 表明 where 条件
selecl (distinct) 字段,count(1) as count from 表 where 条件 (group by 字段 having count > 1)
修改自增起始值:
alter table product_category AUTO_INCREMENT=200;
表product_category的主键已200开始