数据库:SQL基础语法,关联查询

SQL基础语法

创建、删除库:
//创建新数据库 
CREATE DATABASE 数据库名; 
//删除数据库 
DROP DATABASE 数据库名;
增加:

1、添加列名、设置主键、设置自动增长列
primary key表示当前列为主键列,不能重复,不能为空
out_increment表示当前列为自动增长列,由DBMS分配该列的值,可以保证不重复

CREATE TABLE t_user(
    id INT PRIMARY KEY AUTO_INCREMENT, //编号 
    userName VARCHAR(20),//用户名 
    birthday DATE,//生日 
    tel CHAR(11),//电话
    //枚举类型,该列的值只能取男和女 
    sex ENUM('男','女'),
    // 性别 -- 最后一列不能加“,”
    money INT //账户余额 
);

2.添加行(新增记录)

①如果添加多条信息,中间用","分割。VALUES只用写一次,写在表头和表值之间。
②如果列名和列的值不写,则默认添加为空(null),如果数据库设计时存在默认值,则为添加默认值。

INSERT INTO t_user(表1,表2) values(值1,值2); 
​
例如: 
INSERT INTO t_user(userName,pwd,birthday,tel,sex,money) 
VALUES ('张三','123','1980-05-09','13948577789','男',2000); 
​
例如: 
INSERT INTO t_student(userName,pwd,birthday,tel,sex) 
VALUES('李四','111','1998-01-01','13112341234','男');

3.添加列(维护常用)

// t_student:表名;address:表头 
ALTER TABLE t_student ADD address VARCHAR(50);
删除:

1.删除表

// t_user:表名 
DROP TABLE t_user;

2.删除列

// t_student:表名;userAddress:列名 
ALTER TABLE t_student DROP COLUMN userAddress;

3.删除行(记录)

//如果不加where 后面的条件则全部删除
DELETE FROM t_user WHERE id=2;
修改:

1、修改列

修改列的值必须与修改后的类型相符,如果修改列的值为null,则可以改为任意类型。如果修改列的值类型为varchar,最长为20,则修改后的类型必须为char类型,长度不能低于20。

ALTER TABLE t_student CHANGE address userAddress VARCHAR(100);

2、修改值

UPDATE t_product SET 修改列名=修改后新值 WHERE id=1; 
​
//修改,将张三的密码修改为333,工资修改为2500 
UPDATE t_user SET pwd='333',money='2500' WHERE userName='张三';
查询:

1、查询表中所有数据

表示显示所有的列,也可以指定显示列的列表,中间用","分割。

SELECT * FROM t_user; 
​
// 例如(显示姓名和工资列): 
select userName,money from t_user

2、查询返回限定行

第一个参数为起始记录数,从0开始,第二个参数为显示记录数

// MySQL语法
SELECT * FROM t_student LIMIT 0,3;

3、查询空值null

null不能用=,只能用is null 或 is not null

SELECT *FROM t_student WHERE money IS NULL;

4、查询多条信息(or/in)

// 查询张三和李四的信息 
SELECT * FROM t_student WHERE userName='张三' OR userName='李四'; 
SELECT * FROM t_student WHERE userName IN('张三','李四');

5、模糊查询(_或%)

//查询姓李的二个字的员工 
SELECT * FROM t_student WHERE userName LIKE '李_'; 
​
// 查询出所有商品名包括“糕”的商品的信息 
SELECT * FROM t_product WHERE productName LIKE '%糕%';

6、查询多条件+显示部分(LIMIT)

// 查询前5条价格在100-1000的酒类商品 (MySQL语法)
SELECT * FROM t_product WHERE productType='酒类' AND price>=100 AND price<=1000 LIMIT 0,5 ;

7、查询去除重复的类名(distinct)

// 查询所有的性别,distinct 表示去除重复记录 
SELECT DISTINCT sex FROM t_student;

8、查询排序显示(ORDER BY)

//按员工工资排序,默认为升序ASC,降序需要加上DESC。 
// 工资相同,按年龄大小排序。 
SELECT * FROM t_student ORDER BY money DESC,birthday;

9、查询当前日期

select curdate() from 表名

关联查询:

**内连接:**INNER JOIN 、CROSS JOIN

img

(1)形式一

select 字段列表
from A表 inner join B表
on 关联条件
【where 其他筛选条件】

说明:如果不写关联条件,会出现一种现象:笛卡尔积
关联条件的个数 = n - 1,n是几张表关联
on只能和join一起用

(2) 形式二

select 字段列表
from A表 , B表
where 关联条件 【and 其他筛选条件】

外连接:左外连接(LEFT OUTER JOIN)

左连接:

第一种结果:A

img

select 字段列表
from A表 left join B表
on 关联条件

第二种结果:A - A∩B

img

select 字段列表
from A表 left join B表
on 关联条件
where 从表的关联字段 is null

右外连接(RIGHT OUTER JOIN)

第一种结果:B

img

select 字段列表

from A表 right join B表

on 关联条件

第二种结果:B - A∩B

img

select 字段列表

from A表 right join B表

on 关联条件

where 从表的关联字段 is null

谢谢大家阅读,如果想要知道更多java基础知识,可以戳我一起交流学习!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值