JAVA 4.1.1SQL语句

数据库相关SQL

一、数据库操作

  1. 查看所有数据库
    格式:show databases ;
  2. 创建数据库
    格式:create database 数据库名 character set 字符集(utf8/gbk);
    举例:
    create database db1;#创建db1数据库:
    create databese db2 character set utf8;#创建db2数据库,字符集为 utf8;
    create databese db3 character set gbk;#创建db3数据库,字符集为gbk;
  3. 查看数据库详情
    格式:show create database 数据库名;查看数据库
    show create database db1;#查看数据库db1的信息,包括字符集等信息;
  4. 删除数据库
    格式:drop database 数据库名;
    举例:
    drop database db1;#删除数据库db1;
  5. 使用数据库
    格式:use database 数据库名;
    举例:
    use database db1;#使用数据库db1,之后操作表的数据都是在此数据库下操作。

二、数据库中的表操作

  1. 创建表(创建表之前请先使用use指定数据库)
    格式:create table 表明(字段1名 类型,字段2名 类型…)charset=utf8/gbk;
    举例:
    create table t1(name varchar(13),age int) charset=utf-8;#创建表t1,字段名为:name,age;
    –根据已有的表格创建新表:
    举例:
    create table t1_new like t2_old;
    创建 备份数据的device
    use master;
    exec sp_addumpdevice ‘disk’,testBack’,‘c:\mssql\mynwind_1.dat’;
    –开始备份
    backup database pubs to testBack;

  2. 删除表
    删除新表:drop table t1;

  3. 字段;
    显示表字段:desc t1;
    删除字段:alter table t1 drop col_name;
    修改字段:alter table t1 change col_name_old col_name_new varchar(13);

  4. 列:
    alter table t1 add column col type;
    举例:在t1表中增加一列name,类型varchar(13);
    alter tbale t1 add name varchar(13);//默认在最后,可使用first或者after col_name改变位置

  5. 主键:
    新建字段设置:(not null–非空,primary key(col)–添加主键,auto_increment–自增,唯一约束:unique)
    修改主键:alter table t1 add primary key(col_name);
    删除主键:alter tbale t1 drop primary key(col_name);
    自增 :create table t1 (id int auto_increment);
    唯一约束:create table t1 (id int unique);

  6. 索引:
    创建索引:create

  7. 数据库中的增删查改:
    增:insert into table t1(col_1,col_2) values(val_1,val_2);
    删:delete from t1 where id=1;//注:没有条件将删除整个表;
    改:update t1 set id=1 where name=“val”;
    查:
    a).简单查询:select * from t1;
    b.)排序查询:select * from t1 order by id,name desc;//默认升序,desc倒序;
    c.)计数:select count(*) from t1;
    d.)求和、平均、最大、最小:select sum(col)、avg(col)、max、min、from t1 ;

三、sql进阶

  1. 导入sql 语句:
    source /home/emp.sql//注:运行后出现乱码是因为控制台的编码方式不一致,需要设置:set names gbk;

  2. 判断是否null:
    is not null或者is null;
    select * from t1 where id is null;

  3. 关系运算符:
    > < >= <= = !=
    select * from t1 where id>100

  4. 逻辑运算符:
    and 和or
    select * from t1 where id is null and name=“test”;

  5. 关键字:
    a).between在什么之间:
    select * from t1 where id between between 1000 and 2000;
    b).in包含:
    select * from t1 where id(10,20,30);
    c). like模糊查询:
    以x开头’x%’;以x结尾’%x’;包含x’%x%’;第二个字符是x’_x%’;
    select *from t1 where name like ‘孙%’;
    d). group by 分组查询:
    select * from t1 group by id;//查询的结果根据id列的值进行分组查询;
    d.)having where后面智能写普通的字段条件,having 结合分组查询,在having后面接聚合函数
    查询每个部门工资sal大于平均工资的部门empno:
    select empno,avg(sal) from t1 group by empno having sal>avg(sal);
    关键字总结:
    select 字段信息;
    from 表名;
    where 条件;
    group by 字段;
    having 聚合条件;
    order by (desc倒叙)排序查询;
    limit 跳过几条,查询几条;

  6. 分页查询:
    分页查询公式显示第几页公式:limit((页数-1)*第几条数据,第几条数据)
    –如:显示第3页第5条数据:
    select * from t1 limit 6,5;
    查询工资在1000到5000之间的第4页的第3条数据
    select sal from t1 where sal between 1000 and 5000 limit 9,3;

  7. 数值查询:
    在查询结果中查询数据的结果值;如:
    select sal3,name from t1 ;//即查询的结果是 工资列sal从数据库中的数据3进行显示;

四、sql高级查询

  1. 子查询(嵌套查询):在一条sql语句中,出现表达式的位置又写另一条sql数据
    举例:查询工资(sal)高于1号部门(deptno=1)平均工资的员工信息
    select * from t1 where sal>(select avg(sal) from emp where deptno=1);
  2. 关联查询(等值连接,内连接,外连接):
    a).等值连接:格式(select 字段信息 from A,B where 关联关系 and 其它条件)
    举例:emp dept两个表分别存着部门员工的不同信息,关联列deptno
    select * from emp e ,dept d where e.deptno=d.deptno and sal>2000;
    b).内连接:格式(select 字段信息 from A jion B on 关联关系 where 其它条件: )
    举例:emp dept两个表分别存着部门员工的不同信息,关联列deptno
    select * from emp e jion dept d on where e.deptno=d.deptno;//等值连接和内连接查询结果一样,建议使用内连接;
    c).外连接:格式(select 字段信息 from A left/right join B on 关联关系 where 其它条件)
    举例:emp dept两个表分别存着部门员工的不同信息,关联列deptno
    select e.ename,d.* from emp e left join dept d on d.deptno=e,deptno;
    总结:如果查询的是两张表的交集数据,则使用等值连接,或者内连接(推荐);
    如果查询的是一张表的全部和另一张表的交集数据,则使用外连接;

到此结束!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值