SQL 是用于访问和处理数据库的标准的计算机语言。
Insert into插入
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
insert into table_name values(value1,value2,..)
第二种形式需要指定列名及被插入的值:
insert into table_name (column1,column2,..) values(value1,value2,..);
update更新
update table_name set column1=value1,column2=value2,.. where 条件;
如果没有where语句,所有值都会被更改
delete删除
delete from table_name where 条件;
删除所有值,但表结构不变
delete from table_name;
或
delete * from table_name;
create table 建表
create table 表名 (
column_name1 data_type(size),
city varchar(225)
);
SQL约束
not null 非空约束
unique 要求每行必须有唯一值
primary key 主键约束,要求非空且唯一
foreign key 保证一个表中数据匹配另一个表中值的参照完整性
default 规定没有给列赋值时的默认值
create table Persons(
ID int not null
lastName varchar(225) not null,
FirstName varchar(225) not null,
age int
)
添加约束
alter table Persons modify Age int not null
删除约束
alter table Persons modify Age int null
SQL主键约束
主键约束:唯一非空值
alter table 表名 add primary key (列名)
alter table 表名 drop primary key
check 约束
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。
创建:
alter table 表名 add check (列名>0)
alter table 表名 add constraint 列1 check (列2 > 0 and 列2 = '')
撤销:
alter table 表名 drop check 列名
default约束
设置默认值
创建时加约束:
create table 表名
(列名 varchar default 'sande')
创建后加约束:
alter table 表名 alter 列名 set default 'sande'
索引
创建索引,以便更加快速高效地查询数据。
#创建简单索引,允许重复
create index 索引名 on 表名(列名)
#创建唯一索引,不允许重复
create unique index 索引名 on 表名(列名)
#删除索引
alter table 表名 drop index 索引名
#删除表
drop table 表名
#删除数据库
drop database 数据库名
#删除表中数据,不删除表结构
truncate table 表名
自增字段:auto-increment
create table 表名:
(id int not null auto-increment)
默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。
要让 AUTO_INCREMENT 序列以其他的值起始,请使用下面的 SQL 语法:
alter table 表名 auto-increment = 100
视图(views)
创建
create view 视图名 as
select 列名
from 表名
where 条件
删除
drop view 视图名
日期(Date)
select now(),curdate(),curtime()
#结果2008-11-11 12:45:34 与 2008-11-11 与12:45:34
函数
mysql 中没有first()与last()函数,用的order by +limit 1
having 与where:
WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据
exists运算符
EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
例子:查找总访问量(count 字段)大于 200 的网站是否存在。
select w.name,w.ur1
from websites w
where exists (select count from FROM access_log WHERE Websites.id = access_log.site_id AND count > 200);
也可以与not一起用
ucase()函数
UCASE() 函数把字段的值转换为大写
LCASE() 函数把字段的值转换为小写 lcase(列名)
select ucase(列名) from 表名;
mid()函数
MID() 函数用于从文本字段中提取字符
select mid(列名,start[,length]) from 表名;
DATE_FORMAT(Now(),‘%Y-%m-%d’)