备注:(大神勿喷!!!)
- mysql 数据库命令不区分大小写,但是在Mac 终端中,如果想使用补全命令必须使用大写。
- 默认创建的数据库默认不支持中文字符,如果我们需要它支持中文字符,则将它的编码设置为utf8格式,使用alter 来修改。
- 数据库语句用分号结束,如果没有输入分号会有个-> 等待你继续输入的符号。
1.数据库管理
1.1 create 创建数据库
create database testDB;
1.2 show 查看所有数据库
show databases;
1.3 alter 修改数据库
alter 命令修改数据库编码:
ALTER DATABASE testDB CHARACTER SET UTF8;
1.4 use 使用数据库
要创建和修改表的时候 要先进入对应的数据库中
use testDB;
1.5 查看当前使用的数据库
select database();
1.6 drop 删除数据库
drop database testDB;
2. 表管理
2.1 create 创建表
create table T_PEOPLE (
-> ID int AUTO_INCREMENT PRIMARY KEY,
-> NAME varchar(20) not null,
-> AGE int not null,
-> BIRTHDAY datetime);
2.2 show 显示表
show tables;
2.3 desc 查看表结构
desc T_PEOPLE;
2.4 alter 修改表结构(增、删、改)
默认创建的表不支持中文字符,所以需将表编码设置为utf8:
ALTER TABLE T_PEOPLE CONVERT TO CHARACTER SET UTF8;
2.4.1 insert 在表中添加列(字段)
alter table T_PEOPLE add star BOOL;
2.4.2 alter 修改表(列)字段
alter table T_PEOPLE DROP column star;
2.4.3 删除表(列)字段
alter table T_PEOPLE DROP column star;
2.4.4 rename 重命名表名
RENAME TABLE PEOPLE TO NEW_PEOPLE;
2.5 create 利用已有数据创建新表
create table newTable select * from T_PEOPLE;
3. 数据的操作及管理
3.1 增加数据(增)
insert into T_PEOPLE VALUES (null, ‘Anny‘, 22, ‘1992-05-22‘);
3.2 删除数据(删)
delete from T_PEOPLE where name = ‘Lisa‘;
3 修改数据(改)
update T_PEOPLE set name=‘Calvin‘ where name = ‘Garvey‘;
3.4 查询数据(查)
select * from PEOPLE;
格式:select * from <表名>,星 代表所有字段。
查询数据时也可指定显示的(列)字段:
select NAME, AGE, BIRTHDAY from T_PEOPLE;
4 一些简单的例子
- 建表
create table if not exists t_b2 (id integer primary key autoincrement ,name text NOT NULL DEFAULT ' ' collate nocase,phone text not null default '请输入',email text not null default ' 'collate nocase,unique(name,phone) ) ;
- like
查询以j 开头的 名字 like ‘j%’
% 是贪婪匹配 可以匹配该字符本身之外的所有字符 可以和not 配合使用否定一些模式
select *from tb2 where name like '%ch%' and name not like ‘%en’ ;
- limit
限制返回纪录的最大数 offset指定偏移记录
select *from tb2 orderby id desc limit 1 offset 1 ;
limit 和offset 一起用时候可以用逗号代替offset 例如 limit 2,1 等于limit 1 offset 2;
- 数学函数
select id ,upper(name),length(name) from tb2 limit 10;
select id ,upper(name),length(name) from tb2 where length(name) <5 limit 10;
- 聚合函数
是从一组纪录中计算聚合值 包括sum(), avg(), count(), min(), max()
select count(*)from tb2 where length(name) >3;
select avg(length(name))from tb2 ;
不仅可以对from 进行计算 也可以对where子句进行计算
- 聚合的主要部分是分组
group by 和select 区别 前者接收where子句的输出,并将其分割成共享某个字段上同等值的小组 后者接收所有的组
例如获取每个type_id 组的数量
select type_id ,count(*) from food group by type_id;
结果示例 type_id count(*)
1 22
group by 可以配合having 来过滤约束作用
select type_id ,count(*) from food group by type_id having count(*) < 20 ;
计算count 的时候最好加入聚合语句 (group by)
- distinct 去掉重复
select distinct name from tb2
- 符号表示
<> 不等于
>''大于零的意思
isnull 不为null值
- 指数或者小数点 用real 类型
- 十六进制存储为blob 类型
- sqlite 不支持 TRUNCATE
- using 使用
select t_author.id, t_peoples.name from t_author left join t_peoples using(id);