数据库 sql命令
关系型数据库 mysql oracle收费 sqlserver..
非关系型数据库 hbase mangodb redis
常见字段类型:整型 tinyint int,字符串型 char(n) 固定长度最多255 varchar(n) 可变最多65535,日期时间 ,浮点型 float(m,d) double(m,d) decimal(m,d)
tips
sql弱语法不区分大小写 关键字转义` `
sql报错 sql syntax语法错误找near,在附近有错误
主键不能重复 primary key auto_increment主键自增长
unique唯一约束 not null非空约束
数据库命令
数据库操作
连接数据库 mysql -uroot -p password -h;
创建数据库 create database 库名;
删除数据库 drop database 库名;
显示数据库 show databases;
进入数据库 use 数据库名;
执行sql source update.sql;
表操作
显示数据库有哪些表 show tables;
创建表 creat table 表名 (id int primary key auto_increment, `name` varchar(100), mobilephone char(11) not null, address varchar(200))default charset=utf8;
重命名表 alter table 旧表名 to 新表名;
删除表 drop table 表名;
修改字段名 alter table 表名 modify 字段名 新字段名 数据类型;
修改字段数据类型 alter table 表名 modify 字段名 新数据类型;
增加字段 alter table 表名 add 字段名 数据类型 约束条件 放在哪(first 或者after哪个);
删除字段 alter table 表名 drop 字段名;
查看建表语句 show creat table 表名;
查看表结构 desc 表名;
describle 表名;
增加命令insert
insert into 表名(列1,列2)values(' ',' ');
insert into 表名 set 列1=值1 列2=值2;
insert into 表名_bak select * from 表名; #备份表
删除命令delete
DELETE FROM 表名 WHERE 条件;
DELETE FROM 表名 WHERE 列名 IN (值1, 值2, ...);要删除学生表中学号为1001、1002、1003的学生记录,可以使用以下SQL语句:
t WHERE id IN (1001, 1002, 1003);
修改命令update
update 表名 set 列名1='XX' where 列名2='XX';
update 表名 set 列名1='xx' is null;
查询命令select
select * from 表名; select 列1,列2 from 表名; select 字段名 from 表名 where ('字段名'='XX'); --查找表某一行 select * from 表名 where 多条件 and/or
#limit子句 select 字段名 from 表名 limit5; --显示前五行数据 select 字段名 from 表名 limit3,4; --从第三行开始 返回四行数据
#去重 distinct关键字 select distinct sex from 表名; --过滤重复值
#模糊查询 like语法 select * from 表名 where field1 like '%values1%' ;
#排序 order by子句 select * from table order by field1,field2[desc];
#聚合查询
select count as totalcount from table1;
select sum(field1) as sumvalue from table1;
select avg(field1) as avgvalue from table1;
select max(field1) as maxvalue from table1;
select min(field1) as maxvalue from table1;
#分组聚合 group by子句
select 类别, sum(数量) as 数量之和 from A group by 类别;
select 类别, sum(数量) as 数量之和 from A group by 类别 order by sum(数量) desc;
select sex,group_concat(name) from student group by sex; #GROUP_CONCAT() 函数会显示每个分组所有的字段值
#having条件过滤 where
select 类别, sum(数量) as 数量之和 from A group by 类别 having sum(数量) > 18;
select 类别, sum(数量) as 数量之和 from A where 名称 !='白菜' group by 类别 having sum(数量) > 18;
#联合查询
内联接inner join 仅显示两个表中匹配行,即两表中都有才显示
方法一 select 列名 from 表1 ,表2 where 连接条件;
方法二 select 列名 from 表1 inner join 表2 on (表1.列名 = 表2.列名);
外连接
左外连接 select 列名 from 表1 left join 表2 on 连接条件
右外连接 select 列名 from 表1 right join 表2 on 连接条件
UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同SELECT * FROM A UNION SELECT * from B;
#子查询
select lastname ,firstname from employees where officecode IN (select officecode from offices where country = 'USA');
外部查询 内部查询
IN NOT IN 比较运算符(= > < <>或!=) EXISTS NOT EXISTS
修改密码
>use mysql; >update user set password = PASSWORD('新密码') where user = '用户名'; >flush priviledges; #更新权限 >quit;
备份
mysqldump -u -p database_name > dump_file.sql
Navicat常用快捷键
1,Ctrl+q就会弹出一个sql输入窗口
2,Ctrl+r就执行sql了
3,按f6会弹出一个命令窗口
4,Ctrl+/ 注释
5,Ctrl +Shift+/ 解除注释
6,Ctrl+R 运行选中的SQL语句
7,Ctrl+Shift+R 只运行选中的sql语句
8,Ctrl+L 删除选中行内容
9,Ctrl+D 表的数据显示显示页面切换到表的结构设计页面,但是在查询页面写sql时是复制当前行并粘贴到下一行
10,Ctrl+N 打开一个新的查询窗口
11,Ctrl+W 关闭当前查询窗口
12,鼠标三击选择当前行