Java《SQL语言》(入门)

目录

一、基本概念

1.MySQL的启动&关闭、登录、退出

2.sql语言概念

二、SQL语言分类

三.DDL

1.操作数据库

1.1C(Create):创建create

1.2.R(Retrieve):查询show

1.3.U(Updata):修改

1.4.D(Delete):删除drop

1.5使用数据库

2.操作表

2.1.C(Create):创建create

2.2.R(Retrieve):查询show

2.3.U(Updata):修改alter

2.4.D(Delete):删除drop

2.5.复制表:

四.DML

4.1添加数据  insert  into ...values..

4.2删除数据

五.DQL

5.1基础查询

5.2条件查询:where

5.3排序查询:order  by 

5.4聚合函数

5.5分组查询

5.6分页查询:limit

5.7顺序总结

六.DCL

6.1 添加用户:

6.2 删除用户:

6.3修改用户密码:

6.5root用户忘记密码:

七、约束

分类:

7.1、非空约束:not  null

7.2、唯一约束: unique

7.3、主键约束:primary   key

7.4、外键约束:foreign   key

7.5、级联操作

八、多表查询

8.1笛卡尔积:select  *  from   表1,表2;

8.2多表查询分类:

8.3内连接查询

8.4外连接查询

8.5子查询



一、基本概念

1.MySQL的启动&关闭、登录、退出

启动&关闭:

net start mysql 

net stop mysql

登录:

mysql -u账号 -p密码  //特点:输入的密码会显示出来

mysql -u账号 -p(回车)密码 //特点:输入的密码隐藏

退出:

exit 或者quit

2.sql语言概念

概念:就是定义了操作所有有关系型数据库的规则。每一种数据库操作的方式有所不同,这种不同称为“方言”;

全名:Structured Query Language 结构化查询语言,

二、SQL语言分类

1. DDL(Data Definition Language)数据定义语言

用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等

2. DML(Data Manipulation Language)数据操作语言

用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等

3. DQL(Data Query Language)数据查询语言

用来查询数据库中表的记录(数据)。关键字:select, where 等

4.   DCL(Data Control Language)数据控制语言

用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

三.DDL

1.操作数据库

1.1C(Create):创建create

直接创建:

create database 数据库名称;

创建并判断是否为空:

create databases if not exists 数据库名

创建并判断,并指定它的编码;

create databases if not exists 数据库名 character set 

比如:CREATE DATABASE IF NOT EXISTS test CHARACTER SET utf8;

1.2.R(Retrieve):查询show

查询全部

show  databases;

指定查询

show database  数据库名;

1.3.U(Updata):修改

修改数据库的字符集

alter database 数据库名称 character set 字符集名称

1.4.D(Delete):删除drop

删除数据库

drop database 数据库名称;

判断并删除

drop database if exists 数据库名称;

1.5使用数据库

查询当前正在使用的数据库名称

SELECT DATABASE();

使用数据库(进入数据库)

use 数据库名称;

2.操作表

2.1.C(Create):创建create

创建  表  Demo1(

字段id  类型bigint  非空   自增,

字段name  类型varchar长度10  非空,

字段age  类型int  非空,

主键(id)

);

CREATE TABLE Demo1( 
    id BIGINT NOT NULL AUTO_INCREMENT, 
    name VARCHAR(10) NOT NULL, 
    age INT NOT NULL, 
    PRIMARY KEY (id) 
); 

添加一列

alter table 表名	add  列名  数据类型;

2.2.R(Retrieve):查询show

查询本数据库的数据表

show  tables;

查询表结构

describe  表名;

2.3.U(Updata):修改alter

修改表名:

alter table 表名rename to 新的表名;

修改字符集:

查看字符集:show create table 表名;
修改字符集:alter table 表名 character set 字符集名称;

修改列的名称 类型

alter table 表名  change 列名 新列名 新数据类型

只改类型

alter table 表名 modify 列名 新数据类型名

修改表中数据:

update 表名 set 列名1 = 值1,列名2 = 值2,...[where 条件];
注:如果不加任何条件则会将表中所有记录全部修改

2.4.D(Delete):删除drop

删除表:

drop table 表名;

删除列

alter table 表名  drop  列名 

删除并判断:

drop table if exists 表名;

2.5.复制表:

create table stu like student;	创建一个stu表,像student表

四.DML

4.1添加数据  insert  into ...values..

insert into 表名
    (列名1,列名2,...列名n)
    values
    (值1,"值2"...值n),
    (值1,"值2"...值n),
    (值1,"值2"...值n);
注意:
注1:类型和位置要对应
注2:若表名后不定义列名则默认给所有列添加值
注3:除了整型,其他类型的值都要用单引号引起来

4.2删除数据

DELETE FROM 表名 where 条件;
比如:DELETE FROM demo1 WHERE id = 1;

五.DQL

5.1基础查询

1.多个字段的查询
    select  列名1,列名2...from  表名;
2.查询所有字段
    select * from 表名;
3.去除重复:distinct
    select distinct  字段名 from 表名;
4.计算列
    select 字段名 + 字段名 from 表名;
    注:如果一个字段值为null,则结果为null,所以可以使用ifnull(列名,值)
5.起别名
    as 或者 空格

5.2条件查询:where

1.in
    查询学生表中id为1、2、3的内容
    select  id from  student  where  id  in  (1,2,3,4);
2.BETWEEN AND
    两者之间:查询demo1表中id在1~3之间的
    SELECT * FROM demo1 WHERE id BETWEEN 1 AND 3;    
    结果是id=2 和id=3 的结果
3.占位符:
    %:占位n个
           %刘% 表示内容含有刘的  比如  ***刘***、刘***、***刘
           %刘  表示以刘结尾的    比如  *****刘
           刘%  表示以刘开头的    比如:刘*****
    _:占位一个
           刘_  能代表刘*,但是不能代表刘**
4.like
    模糊查询
    select * from student where name like "%刘%"
    select * from student where name like "刘_"

5.3排序查询:order  by 

递增(默认) ASC
降序       DESC
如:
    递增:SELECT * FROM demo1 ORDER BY id ASC
    递减:SELECT * FROM demo1 ORDER BY id DESC

5.4聚合函数

count:计算数量个数,一般选择非空的列(主键)
    如:SELECT COUNT(id) FROM 表名;

max:计算最大值
    SELECT MAX(age) FROM 表名;

min:计算最小值
    SELECT MIN(age) FROM 表名;

sum:计算和  (注:自动将null视为0)
    SELECT SUM(age) FROM 表名;

avg:计算平均值
    SELECT AVG(age) FROM 表名;

5.5分组查询

比如:查询男生,女生的平均年龄

 查询        平均年龄              性别    来自与表demo1    根据性别分组

SELECT AVG(age) AS "平均年龄",sex AS "性别" FROM demo1 GROUP BY sex;

附加条件 :

  where

SELECT AVG(age) AS "平均年龄",sex AS "性别" FROM demo1 WHERE id > 3 GROUP BY sex;

从id=4开始查询

having

 SELECT AVG(age) AS "平均年龄",sex AS "性别" FROM demo1 GROUP BY sex HAVING COUNT(id)>3;

分组查询,分组后总数要大于3(男生只有三人,所以过滤掉了男生)

 where和having的区别

where:在分组前进行判断,不满足条件不准参与查询

having:在分组之后进行判断,不满足条件查询结果不显示

5.6分页查询:limit

select * from  表名   limit   开始值,结束值;

5.7顺序总结

select   字段列表   from    表名列表where    条件列表    group by    分组列表    having    分组之后的条件    order    排序    limit     分页限定

六.DCL

6.1 添加用户:

语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

6.2 删除用户:

 语法:DROP USER '用户名'@'主机名';

6.3修改用户密码:

方法一、UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';

方法二、SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');

6.5root用户忘记密码:

1.停止MySQL服务

管理员身份运行DOS命令窗口,输入  net  stop  mysql; 

2.使用无验证方式启动MySQL服务

mysqld  --  skip-grand - tables     

3.再打开一个新的DOS命令窗口,输入MySQL直接回车就可以登录

4.改密码  

use mysql;回车

5.UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';

6.关闭所有窗口,进入任务管理器,在进程里面找到并结束mysqld进程;

7.管理员身份启动DOS窗口,然后开始使用新的密码登录;

七、约束

概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性

分类:

  1. 非空约束:not  null
  2. 唯一约束: unique
  3. 主键约束:primary   key
  4. 外键约束:foreign   key
  5. 级联操作

7.1、非空约束:not  null

创建时添加

直接在列后边添加
    如:create  table   student   {name   varchar(20)   not   nuull}

删除约束

重新定义该列
alter  table  表名   modify   列名   类型   ;
    如:alter  table   student  modify    stuname    varchar(20);

创建后添加

重新定义并modify
    如:alter  table  student  modify  stuname   varchar(20)   unique

7.2、唯一约束: unique

特点:可以有一个为null,也就是null也不能重复

创建时添加

直接在列后面添加
    如:create  table  student  {name   varchar(20)  unique}

删除约束

drop index 列名;
    如:alter  table   student   drop  index   stuname;

创建后添加

重新定义并modify
    alter  table  student  modify  stuid  int    primary  key;

联合主键

create  table   aaa(tid   int , uid  int  ,  primary  key (tid,uid) );

7.3、主键约束:primary   key

特点:它包含了非空且唯一,且一张表只能有一个主键

创建时添加

列名  列类型   primary   key;

    如:create   table  student{stuid    int   primary   key};

删除约束

drop  primary   key;
    
    如;alter  table   student   drop   primary  key;
注:因为一张表只能有一个主键,所以删除是只需要提供表名即可

创建后添加

重新定义并modify

    如:alter  table  student  modify  stuid  int    primary  key;

联合主键

create  table   aaa(tid   int , uid  int  ,  primary  key (tid,uid) );

7.4、外键约束:foreign   key

注意:外键可以为null,但不能为关联表不存在的值

公式:

CONSTRAINT外键列    constraint  外键名称    foreign   key(外键列名)   references   主表名称(主表列名)

创建时添加

create table 表名( ……CONSTRAINT外键列 constraint 外键名称 foreign key(外键列名 references 主表名称(主表列名)));

删除约束

ALTER TABLE 添加外键的表DROP FOREIGN KEY 外键名;

创建后添加

ALTER TABLE 表名ADD CONSTRAINT外键列 constraint 外键名称 foreign key(外键列名) references 主表名称(主表列名)

7.5、级联操作

什么是级联操作:

在有外键约束时,修改表1的主键列值,表2的外键列也会自动修改

公式:ON UPDATE CASCADE  

添加外键设置级联更新

ALTER TABLE 表名ADD CONSTRAINT外键列 constraint 外键名称 foreign key(外键列名) references 主表名称(主表列名)ON UPDATE CASCADE  ;

级联删除

ON DELETE CASCADE  

八、多表查询

8.1笛卡尔积:select  *  from   表1,表2;

笛卡尔积结果:

笛卡尔积是多表查询中发生的一种现象,他会出现多张表数据的组合,如A有两条数据,B有三条数据,笛卡尔积就会出现3*2条数据;

8.2多表查询分类:

  • 内连接查询
    • 隐式内连接
    • 显示内连接
  • 外连接查询
    • 左外连
    • 右外连接
  • 子查询

8.3内连接查询

隐式内连接

使用where条件,where后边跟两个表的主键列,或其他
    
如:
    select  student.name,teacher.name  from  student,teacher  where  student.sid = teacher.tid;

显示内连接

语法:

select *  from  表1  inner  join  表2   on   条件   表1.主键列  =  表2 . 主键列;

8.4外连接查询

左外连

语法:

select  *  from 表1  left  join  表2  on  条件;

查询时两个表如果有一个位置为空的话就会排除掉,左连接将会不排除左边的内容,只排除右边的空值内容

右外连接

语法:

select  *  from 表1  right  join  表2  on  条件;

8.5子查询

概念:

子查询就是一个select里面还有一个select查询语句,那么这个嵌套的select就是子查询

子查询的不同情况

1.查询结果是单行单列

一般使用运算符  > 、>=、< 、<= 、=  

2.查询结果是多行单列

一般使用运算符in

如:
    select *   from  student   where  tid    in   (select   tid   from  teacher  where   name  =  '张三'or   name = ‘李四’);

3.查询结果是多行多列

一般将子查询当成虚拟表放在from后

select  *  from  student,(子查询)  where……;

今天到此结束,明天事务

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值