SQL使用
SQL:结构化查询语言
分类
DDL:数据定义语言.
create,alter,drop...
DCL:数据控制语言
if,grant
DML:数据操纵语言
DML:数据操纵语言
insert,delete,update
DQL:数据查询语言.
DQL:数据查询语言.
Select
数据库操作
创建
* create database 数据库名 character set 字符集;
* create database 数据库名 character set 字符集 collate 校对规则;
删除
修改(名字不能修改)
查
* 查看某个:show create database 数据库名;
其他
* 查看正在使用的数据库:select database();
表操作
创建(建表之前一定先选择数据库)
create table 表名(
字段名 类型(长度) 约束,
id int(11) primary key auto_increment,
username varchar(20)
);
类型:
float/double float/double(n,m) 长度n,小数m位
char/String char/varchar(char固定长度字符串,varchar可变长度的字符串)
Date date,time,datetime,timestamp
文件类型 BLOB、TEXT TEXT指的是文本文件 BLOB二进制文件
* Oracle的文件类型:BLOB CLOB
char/String char/varchar(char固定长度字符串,varchar可变长度的字符串)
Date date,time,datetime,timestamp
文件类型 BLOB、TEXT TEXT指的是文本文件 BLOB二进制文件
* Oracle的文件类型:BLOB CLOB
java.sql.date,time,timestampdate,datetime,timestamp
如果timestamp = null ,db会把系统当前时间存入
约束:有效性,完整性
单表约束:* 主键约束:primary key auto_increment --1.可自增型2.必须是主键
* 唯一约束:unique,不null无用
* 非空约束:not null
* 非空约束:not null
多表约束:
* 外键约束:foreign key
删除
truncate 表名;DDL 整个表删除,然后新建,id自增长还原
修改表
alter table 表 rename to 新表名;
alter table 表名 character set 字符集;--修改表的字符集
alter table 表名 add 列名 类型(长度) 约束;--修改表添加列.
alter table 表名 drop 列名;--修改表删除列.
alter table 表名 change 旧列名 新列名 类型(长度) 约束;--修改表修改列名.
alter table 表名 modify 列名 类型(长度) 约束;--修改表修改列的类型长度及约束.
alter table 表名 add primary key(字段1,字段2...);--添加约束.
alter table 表名 add unique(字段1,字段2...);--添加约束.
alter table 表名 add foreign key(字段1,字段2...) references 表名(主键);--添加约束.
查看所有表:show tables;
查看表结构:desc 表名;
show create table 表名
查看
查看表结构:desc 表名;
show create table 表名
数据操作:DML
插入
* insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 插入某些列* insert into 表 values (值1,值2,值3..);--插入所有列
注意:
* 1.列名数与values后面的值的个数相等
* 2.列的顺序与插入的值得顺序一致
* 3.列名的类型与插入的值要一致.
* 4.插入值得时候不能超过最大长度.
* 5.值如果是字符串或者日期需要加’’.
删除
* truncate table 表名; -- 直接将表删除,重新建表.主键自增长还原
修改
数据操作:DQL
group by 分组字段1,2 having 条件 order by 排序字段 asc|desc
* like 使用占位符 _ 和 % : _代表一个字符 %代表任意个字符.
* select * from product where pname like '_nb%';
* in在某个范围中获得值.
* select * from price where pid in (10,20,30);
where 条件: 分组前条件,不能使用聚合函数
* > ,<,=,>=,<=,<>(不等于) ,!=* like 使用占位符 _ 和 % : _代表一个字符 %代表任意个字符.
* select * from product where pname like '_nb%';
* in在某个范围中获得值.
* select * from price where pid in (10,20,30);
排序
order by 字段名 [规则] --asc(升,默认) desc(降)
聚合函数:
* sum(),avg(),max(),min(),count(); 不计nullselect avg( price);
select round(avg( price),2);round(数值,小数个数);
分组:
*group by 字段名 having 分组后条件,可聚合函数
*与聚合函数一起使用
事务
mysql> start transaction //中如果没提交,会自动回滚
mysql> commint
mysql> rollback