主流: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;