数据库 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,鼠标三击选择当前行


 

posted @ 2023-12-22 15:14  1啊1  阅读(28)  评论(0)    收藏  举报