sql简单使用的方法2020-8-19

sql简单使用的方法

什么是sql?
SQL,指结构化查询语言,全称是 Structured Query Language。
SQL 让您可以访问和处理数据库。
SQL 是一种 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言。
sql能做些什么?
SQL 面向数据库执行查询
SQL 可从数据库取回数据
SQL 可在数据库中插入新的记录
SQL 可更新数据库中的数据
SQL 可从数据库删除记录
SQL 可创建新数据库
SQL 可在数据库中创建新表
SQL 可在数据库中创建存储过程
SQL 可在数据库中创建视图
SQL 可以设置表、存储过程和视图的权
在我们为你学习sql的时候我们需要学习的软件在这里插入图片描述
当然只有学习软件是远远不够的 我们还需要服务器脚本语言的支持在这里插入图片描述
1.记录、字段、数据
(1)每一行数据称为记录
(2)字段,列,用来描述数据
(3)数据,行和列交叉的位置的值
2.字段约束
(1)主键约束: primary key,值唯一,不能为空
(2)外键约束: foreign key,用来设置表与表之间的关系,关联其他表的主键
(3)检查约束: check,检查是否满足某个值,在MySQL中无效
(4)唯一约束: unique,值唯一
(5)默认约束: default,没有约束,默认值
(6)非空约束: not null,值不能为空
3.三大范式
(1)第一范式:字段不可再分(必须满足)
(2)第二范式:必须有主键
(3)第三范式:除主键外不能再有其他候选关键字
4.数据类型
(1)数值性:int、float、double
(2)字符型:char、varchar、text
char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符;varchar(30)不一定是30个字符,是根据实际大小计算得到的
5.DML和DDL
(1)DML:对表进行增删查改操作的sql语句
①insert into
②delete from
③update set
④select from
(2)DDL:操作数据和表的sql语句
创建数据库:create database 数据库名;
删除数据库:drop database 数据库名;
创建表: create table 表名(字段 字段类型 字段约束, …);
删除表: drop table 表名;

6.增加数据
(1)语法:insert into 表名(字段) values(值)
insert into user values(); 要求按顺序添加所有字段的值
insert into user() values(); 指定添加某些字段的值

7.更改数据
(1)语法: update user set 字段名称=“新值”,字段2=“新值” where 条件;
update user set username=“翁政” where id=4;
update user set passwd=“abc123!@#” where id>4 and id<8;
update user set passwd=“www” where id<3 or id>17;
update user set passwd=“baidu” where id=3 or id=8 or id=9;
update user set passwd=“apple123” where id in(5,10,13);
update user set passwd=“1111111111111” where id not in(3,6,10);
update user set passwd=“新密码” where id=7 and username=“张豪”;
Where条件可以取=、>、<、>=、<=、and、or、in、not in
8.删除数据
语法:delete from user where条件
delete from user where id=10;
delete from user where id in(3,5,7);
delete from user where id > 16;
delete from user where id=15 and username=“张豪”;

9.查询数据
(1)Select * from 表名 where条件 group by having order by
(2)Where 指定条件,多表查询时,要过滤笛卡尔积
(3)Group by 分组查询,select和from之间只能写能够代表整租组信息的数据
(4)Having 在分组的基础上在过滤数据
(5)Order by 对查询结果进行排序排序,desc、asc
(6)like:模糊查询% _
①%:匹配零个或者多个字符
②_:只能匹配一个字符
③语法:where 字段 like %
(7)limit:分页查询
①语法:where limit start, offset
②start:表示起始下标,从0开始,会取到当前的这条记录
③offset:表示偏移量,要查询多少条记录
④分页:
start = (page-1)*num
page 起始下标start 查询数量num
第一页1 0 10 (1-1)*10
第二页2 10 10 (2-1)*10
第三页3 20 10 (3-1)*10

(8)Join
①left join:以左表为基准,获取左表中所有的数据,右表没有的字段为NULL

②right join:以右表为基准,获取右表中所有的数据,左表没有的字段为NULL

③inner join:查询两张表共同的数据,交集

④union: 全连接,会合并相同的记录,如果想不合并,使用union all
10.表与表之间的关系
(1)一对一
(2)一对多
(3)多对多

#创捷一个mydate的数据库
create database mydata;
#创捷一个名为ziliao的的表
create table ziliao (
   id int,
	myname char(16),
	myaddress char(16)           
);default character set utf8;

#往表中添加数据 下面是几种方式 自己酌情考虑使用哪种办法
insert into ziliao(id,myname,myaddress)value(1,"小翁","泸州");
insert into ziliao(id,myname,myaddress)value(2,"小啊","合江");
insert into ziliao values(3,"小河","成都");
insert into ziliao (myname)values("小豪");

#更改表中的数据
update ziliao set id=4,myaddress="绵阳" where myname = "小豪";

#删除表中的数据
delete from ziliao where id=1;

delete from ziliao where id in(2,4);

#查找数据 *表示所有数据
select * from ziliao;

#as将最后显示的结果改为对应的内容
select myname as "姓名",myaddress as "地址" from ziliao;

select myname,address from ziliao where id (2,3);


create database onetoone;

select * from area a,people p
where a.aid=p.pid;
#过滤掉笛卡尔积

一分页查询和过滤的几种办法

select *
from shop360_category 
limit 0,10;
#分页查询

#start = (page-1)*num
select * 
from shop360_category
where id=1;
#将id=1的拿出来
select * 
from shop360_category
where id<10;

select * 
from shop360_category
where id>10 and id<20;

select * 
from shop360_category
where id>15980 or id<20;

select * 
from shop360_category
where id in (3,8,9);

select * 
from shop360_category
where id  between 10 and 20;
#这个拿出来的是闭区间

三模糊查询

select * from shop360_category 
where name like "电脑_";
# 模糊查询 匹配带有电脑后面有一个字符的

select * from shop360_category 
where name like "电脑__";
#匹配后面两个字符的

select * from shop360_category 
where name like "电脑%";
#匹配电脑后面带有多个字符的

select * from shop360_category 
where name like "%电脑%";
#匹配前后都带有那个字符中间是电脑的


四简单的示例

create table game(
 mid int primary key auto_increment,
 hid int,
 gid int,
 result char(10),
 gametime date
);

create table team (
 tid int primary key auto_increment,
 teamname char(10)
);

insert into team (teamname) value("AG");
insert into team (teamname) value("IG");
insert into team (teamname) value("RNG");
insert into team (teamname) value("LGD");

insert into game value(1,1,2,"1:0","2020-08-10");
insert into game value(2,1,3,"2:0","2020-08-11");
insert into game value(3,1,4,"2:1","2020-08-12");
insert into game value(4,2,3,"2:3","2020-08-13");
insert into game value(5,2,4,"2:4","2020-08-14");
insert into game value(6,3,4,"4:1","2020-08-15");
insert into game value(7,1,3,"3:1","2020-08-16");
insert into game value(8,1,3,"2:0","2020-08-17");

select g.mid,t.teamname,g.result,g.gametime
from game g
left join team t
#左连接
on g.mid = t.tid;

select g.mid,t.teamname,g.result,g.gametime
from game g
left join team t
on g.gid = t.tid;


select t1.teamname as Tone,t1.result as "结果", t2.teamname as Ttwo 
from  
 #子查询
  (select g.mid,t.teamname,g.result,g.gametime
    from game g
     left join team t
      on g.mid = t.tid) as t1
left join 
    (select g.mid,t.teamname,g.result,g.gametime
     from game g
     left join team t
     on g.gid = t.tid)as t2
on t1.mid = t2.mid;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值