Sql分类:

数据定义语言:(DDL):用来定义数据库对象:数据库(database),表(table),列(column)

关键字:创建(create),查看show,修改(alter),删除(drop)

数据库操作语言:(DML)用来对数据库表中的记录进行更新

关键字:插入insert,删除delete,更新update

数据库查询语言:(DQL)查询数据库中表的记录

关键字:select,from ,where

数据库的操作

1.创建一个数据库

Create database yige

create database yige character set utf8;

2.查询数据库

Show databases

3.删除数据库

Drop databases yige

4.使用数据库

use yige;

5.查看当前数据库

select database();

表的操作

1.创建表

create table user(

-> uid int(32) primary key auto_increment,

-> uname varchar(32),

-> upassword varchar(32),

-> uage int(32),

-> usex varchar(32)

-> );

auto_increment:如果插入没有设置该字段值,则从1开始自动增加值

2.查看表

show tables;

3.查看表结构

desc user;

4.删除表

Drop table user;

5.修改表名

rename talbe user to new_user;

6.修改表的编码

alter table new_user character set utf8;

7.查看表的编码

show create table new_user;

列的操作

1.添加列

alter table user add uinfo varchar(32) not null;

2.修改列的类型

alter table user modify uinfo varchar(100) null;

3.修改列的名字

alter table user change 旧列名 新列名 varchar(32) not null;

alter table user change uinfo info varchar(32) not null;

4.删除列

alter table user drop info;

数据的操作

1.插入数据

insert into new_user values(null,'yige',123456,23,'男');

insert into new_user(uid,uname,upassword,uage,usex) values(null,'一个',123456,'32','男');

如果你可以插入英文的字符串,但是不可以插入中文

Set names gbk;

2.修改数据

不带条件,会修改该列的所有的数据

update new_user set usex='女';

带条件,则会修改指定的列的数据

3.删除数据

delete from new_user where uid=5;

数据查询

1.查询所有

select * from new_user;

2.查询用户名和年龄

select uname,uage from new_user;

3.使用别名

select * from new_user as(可以省略) u;

select uname 姓名 from new_user;

4.去重

select distinct(uage) from new_user;

5.条件查询

select * from new_user where uage=23;

select * from new_user where uage<32;

select * from new_user where uage<=32 and usex='女';

6.查询姓名第二个是个的用户

select * from new_user where uname like '%个';

7.查询年龄是23和32的用户

select * from new_user where uage in(23,32);

select * from new_user where uage=23 or uage=32;

排序

select * from new_user order by uage asc;

select * from new_user order by uage desc;

聚合函数

1.求和

select sum(uage) from new_user;

2.求平均数

select avg(uage) from new_user;

3.统计

select count(*) from new_user;

分组

1.统计男和女共多少个

select usex,count(*) from new_user group by usex;

2.带有条件

select usex,uage,count(*) from new_user group by usex having uage>20;

总结:

Show:数据库的操作

Group by:分组

Order by:排序

Having:分组后带有条件只能使用having

多表操作:

外键目的:保证数据的完整性,从表创建不能添加主表中不存在的记录,主表不能删除从表中已经引用的记录

表与表之间存在的关系

1. 一对多

a. 一对多创建表原则:从表(多)创建一个字段,字段作为外键执行主表(一)的主键;外键指向主表的主键

b. 外键:

Alter table 从表 add constraint 外键名称 foreign key(外键字段) references 主表(主表主键);

从表外键的值是对主表主键的引用

从表外键类型必须与主表主键类型一致

外键是哪个分类的商品

2. 多对多

a).多对多的建表原则:需要创建三表,中间表至少需要两个字段,这两个字段分别作为外键指向各自一方的主键

3.一对一

A)外键唯一:主表的主键和从表的外键形成主外键关系,外键唯一 unique

b) 外键是主键:主表的主键和从表的主键,形成主外键关系

多表查询

1. 交叉多表查询(基本不会使用,得到两个表的乘积)

a. 语法:select * from A,B;

2. 内连接查询(使用关键字inner join 【inner可以省略】)

a. 隐式内连接:select * from A,B where 条件;

b. 显示内连接:select * from A inner join B on 条件;

3. 外连接查询(使用关键字 outer join[outer 可以省略])

a. 左外连接:select * from A left outer join B on 条件;

b. 右外连接:select * from A right outer join B on 条件;

内连接和外连接的区别

1. 左外连接;左表的全部及两个的交集(公共)

2. 右外连接:右表的全部及两个的交集(公共)

3. 内连接:查询两个表的交集(公共)

子查询

将一条select语句的结果作为另一条select语法的一部分

举例:查询服饰分类上架的商品信息

Select * from product where category id=(select cid from category where cname=’服饰’);

分页查询

使用limit关键字进行查询操作

Limit起始位置,每页显示的数目

每页显示两条数据

查询第一页:select * from product limit0,2;

计算起始位置公式:要查询的页数-1*每页要显示的数目

事务

手动事务:

1. 显示的开启一个事务:start transaction

2. 事务的提交:commit代表开启事务到事务提交中间的所有SQL都以为是有效的真正的更新数据库

3. 事物的回滚:rollback代表事务的回滚