MySQL

主流:sqlserver,mysql,Oracle、SQLite、Access、MS SQL Server

连接:mysql -u user -p      退出:QUIT 或者 Ctrl+D

查看库: show databases;  查看表:SHOW TABLES;

用户管理:

创建用户create user  '用户名' @ 'IP地址'  identified by '密码';
删除用户drop user '用户名'@'IP地址';
修改用户rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';
修改密码set password for '用户名'@'IP地址' = Password('新密码')

权限管理:

通配符%表示任意

1、查看权限:show grants for '用户'@'IP地址' 

2、授权:grant 权限 on 数据库.表 to '用户'@'IP地址'

3、取消授权:revoke 权限 on 数据库.表 from '用户'@'IP地址'

表的管理:

1、查看表select * from 表名; # 查看表所有内容

2、创建表create table 表名()ENGINE=InnoDB DEFAULT CHARSET=utf8

3、删除表drop

4、清空表delete from==truncate table

5、修改表

添加列:   alter table 表名 add 列名 类型
删除列:   alter table 表名 drop column 列名
修改列:
          alter table 表名 modify column 列名 类型;  -- 类型
          alter table 表名 change 原列名 新列名 类型; -- 列名,类型
  
添加主键:
          alter table 表名 add primary key(列名);
删除主键:
          alter table 表名 drop primary key;
          alter table 表名  modify  列名 int, drop primary key;
  
添加外键: alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除外键: alter table 表名 drop foreign key 外键名称
  
修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

6.CRUD
增:insert into tab1(name,email) values('zhangyanlin','[email protected]')
删:delete from 表 where id=1 and name='zhangyanlin' 

改:update 表 set name = 'zhangyanlin' where id>1

查:select nid,name,gender as gg from 表 where id > 1

a、条件判断where  b、通配符like '%1'  c、限制limit
d、排序asc,desc   e、分组group by  特别的:group by 必须在where之后,order by之前
7.视图view:视图是一个虚拟表,其内容由查询定义。对其中所引用的基础表来说,视图的作用类似于筛选。
8.存储过程procedure:??
9.函数function:内置函数
10.事物:事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性。
11.触发器trigger:触发器无法由用户直接调用,而知由于对表的【增/删/改】操作被动引发的。

12.索引: 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。
  • 普通索引index
  • 唯一索引unique:在索引列上增加了一层唯一约束
  • 主键索引primary key:主键索引是唯一索引的特殊类型
  • 组合索引mix
    • 避免使用select *
    • count(1)或count(列) 代替 count(*)
    • 创建表时尽量时 char 代替 varchar
    • 表的字段顺序固定长度的字段优先
    • 组合索引代替多个单列索引(经常使用多个条件查询时)
    • 尽量使用短索引
    • 使用连接(JOIN)来代替子查询(Sub-Queries)
    • 连表时注意条件类型需一致
    • 索引散列值(重复少)不适合建索引,例:性别不适合

       

    • 13.执行计划:explain + 查询SQL
    • 14.limit分页:

    • 下一页:
      
          select *from tb1  where 
           nid < (select nid from (select nid from tb1 where nid < 当前页最小值 order by nid desc limit 每页数据 *【页码-当前页】) A order by A.nid asc limit 1)  
          order by   nid desc  limit 10;
      
      
      
      

你可能感兴趣的:(MySQL)