SQL基础

概述:

DDL (数据定义语句)

数据定义语言 - Data Definition Language
用来定义数据库的对象,如数据表、视图、索引等
DML (数据操纵语句)
数据处理语言 - Data Manipulation Language
在数据库表中更新,增加和删除记录
如 update, insert, delete --- 增删改
DCL (数据控制语句)
数据控制语言 – Data Control Language
指用于设置用户权限和控制事务语句
如grant,revoke,if…else,while,begin transaction
DQL (数据查询语句)
数据查询语言 – Data Query Language
select

基本语句:

显示数据库语句:SHOW DATABASES
查看当前数据库:SELECT DATABASE();
显示数据库创建语句:SHOW CREATE DATABASE db_name
数据库删除语句:DROP DATABASE [IF EXISTS] db_name
修改数据库:ALTER DATABASE [IF NOT EXISTS] db_name   
[alter_specification [, alter_specification] ...]
alter_specification:   
[DEFAULT] CHARACTER SET charset_name  | [DEFAULT] COLLATE collation_name
创建表:注意----创建表前,要先使用use db语句使用库。
CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype
)character set 字符集 collate 校对规则
field:指定列名 datatype:指定列类型

定义单表字段的约束(保证数据的有效性和完整性)
定义主键约束---- primary key:不允许为空,不允许重复
删除主键:alter table tablename drop primary key ;
主键自动增长 :auto_increment
定义唯一约束---- unique
例如:name varchar(20) unique
定义非空约束not null
例如:salary double not null

查看表结构:
desc tablename;
修改表:
添加列:add
alter table 表名 add 列名 列的类型 列的约束
修改列:modify
alter table 表名 modify 列名 列的类型 列的约束
修改列名:change
alter table 表名 change 旧列名 列的类型
删除列:drop
alter table 表名 drop 列名
修改表名:rename
rename table 表名 to 新表名
修改表的字符集:
alter table 表名 character set 字符集编码
删除表:drop table 表名

数据库基本语句:

插入:insert into tablename(列名1,列名2,列名3......) values(值1,值2,值3......);
批量插入:insert into tablename(列名1,列名2,列名3......) values(值1,值2,值3......),(值4,值5,值6......),(值7,值8,值9......)......;
在values中列出的数据位置必须与被加入的列的排列位置相对应。
字符和日期型数据应包含在单引号中。
插入空值:不指定或insert into table value(null)

查看:select * from tablename;

删除:delete、truncate
区别:delete--将表中数据一条条删除掉(DML)
truncate--先删除表再重建表(DDL)
表中数据较大时用truncate
delete from table where 条件;如无条件,会将表中数据一条条删除掉;

更新:update table set 列名1=值1,列名2=值2,... where 条件(无条件全部更新)

基本函数:

1、去重:distinct
例:select * distinct |{column1, column2. column3..} FROM table;
2、别名 as(可省略)
例1:SELECT 列名 as 别名1 from 表名;SELECT 列名 别名1 from 表名;
例2:SELECT 表名1.列名1,表名1.列名2,... from 表名 表名1;
3、运算查询:
select *,列名*1.5 from table;(*、/、+、-、%.....)
4、关系运算符:<、>、=、<> !=、>=、<=、between、in()、is null
select * from table where 列=条件
select * from table where 列 is null
5、逻辑运算符:and、or、not
select * from table where 列1=条件1 and 列2=条件3...
select * from table where 列1=条件1 or 列2=条件3...
select * from table where 列1(条件1,条件2,条件3...) and/or 列2=条件2;
6、模糊查询:like _ 、 like %
select * from table where 列 like '_条件%';
7、升序(asc) 降序 (desc)order by
select * from table where 列 like '_条件%' oeder by 列名 acs(默认)/desc;
8、聚合函数
sum:select sum(列名) from table ;
avg:select avg(列名) from table ;
count:select count(*) from table ;
select * from 表名 where 条件 > (select avg(列名) from table);
9、分组:group by
例1:select 列名1,count(*) from table group by 列名1;
例2: select 列名1,avg(列名2) from table group by 列名1;
having
select 列名1,avg(列名2) from table group by 列名1 having avg(列名2)>条件;
where后不可以接聚合函数,出现在分组之前;having后可以接分组函数出现在分组之后;
编写顺序:select ... from ... where ... group by ... having ...;
执行顺序:from ... where ... group by ... having ...select ...

多表操作:

外键约束:foreign key---指向另一张表的主键
添加表外键:alter table 表1 add foreign key(列名) references 表2 (列名);
建库原则:一个项目/应用建一个数据库
建表原则:一对一、一对多、多对多
一对多:在多的一方添加外键指向一的主键
多对多:多建一张中间表,将多对多的关系拆分为一对多的关系,这张中间表至少有两个外键。
一对一:1、合并为一张表
2、当作一对多的情况,在任意一张表添加唯一外键指向另一张表。
3、将两张表的主键连接,让两张表的主键相等。
实际用途:个人信息、拆表
主键约束:唯一、不能为空
唯一约束:唯一、可为空,不可做为其他表外键

多表查询:
笛卡尔积:两张表的乘积
select * from 表1 a,表2 b where a.列c=b.列c;
内连接:交集
隐式:select * from 表1 a,表2 b where a.列c=b.列c;
显式: select * from 表1 a inner jion 表2 b on a.列c=b.列c;
左连接:查询左表所有数据,右表若无数据由null代替 包含左边的数据
select * from 表1 a left outer jion 表2 b on a.列c=b.列c;
右连接:查询右表所有数据,左表若无数据由null代替 包含右边的数据
select * from 表1 a right outer jion 表2 b on a.列c=b.列c;
分页查询:limit
select * from table limit 0,10;

转载于:https://www.cnblogs.com/Covef/p/10955341.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值