備注:(大神勿噴!M背А9嶝浴)
- mysql 數(shù)據(jù)庫命令不區(qū)分大小寫,但是在Mac 終端中焙贷,如果想使用補(bǔ)全命令必須使用大寫撵割。
- 默認(rèn)創(chuàng)建的數(shù)據(jù)庫默認(rèn)不支持中文字符,如果我們需要它支持中文字符辙芍,則將它的編碼設(shè)置為utf8格式,使用alter 來修改啡彬。
- 數(shù)據(jù)庫語句用分號結(jié)束,如果沒有輸入分號會有個-> 等待你繼續(xù)輸入的符號沸手。
1.數(shù)據(jù)庫管理
1.1 create 創(chuàng)建數(shù)據(jù)庫
create database testDB;
1.2 show 查看所有數(shù)據(jù)庫
show databases;
1.3 alter 修改數(shù)據(jù)庫
alter 命令修改數(shù)據(jù)庫編碼:
ALTER DATABASE testDB CHARACTER SET UTF8;
1.4 use 使用數(shù)據(jù)庫
要創(chuàng)建和修改表的時候 要先進(jìn)入對應(yīng)的數(shù)據(jù)庫中
use testDB;
1.5 查看當(dāng)前使用的數(shù)據(jù)庫
select database();
1.6 drop 刪除數(shù)據(jù)庫
drop database testDB;
2. 表管理
2.1 create 創(chuàng)建表
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 查看表結(jié)構(gòu)
desc T_PEOPLE;
2.4 alter 修改表結(jié)構(gòu)(增外遇、刪、改)
默認(rèn)創(chuàng)建的表不支持中文字符契吉,所以需將表編碼設(shè)置為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 利用已有數(shù)據(jù)創(chuàng)建新表
create table newTable select * from T_PEOPLE;
3. 數(shù)據(jù)的操作及管理
3.1 增加數(shù)據(jù)(增)
insert into T_PEOPLE VALUES (null, ‘Anny‘, 22, ‘1992-05-22‘);
3.2 刪除數(shù)據(jù)(刪)
delete from T_PEOPLE where name = ‘Lisa‘;
3 修改數(shù)據(jù)(改)
update T_PEOPLE set name=‘Calvin‘ where name = ‘Garvey‘;
3.4 查詢數(shù)據(jù)(查)
select * from PEOPLE;
格式:select * from <表名>跳仿,星 代表所有字段。
查詢數(shù)據(jù)時也可指定顯示的(列)字段:
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
限制返回紀(jì)錄的最大數(shù) offset指定偏移記錄
select *from tb2 orderby id desc limit 1 offset 1 ;
limit 和offset 一起用時候可以用逗號代替offset 例如 limit 2,1 等于limit 1 offset 2;
- 數(shù)學(xué)函數(shù)
select id ,upper(name),length(name) from tb2 limit 10;
select id ,upper(name),length(name) from tb2 where length(name) <5 limit 10;
- 聚合函數(shù)
是從一組紀(jì)錄中計算聚合值 包括sum(), avg(), count(), min(), max()
select count(*)from tb2 where length(name) >3;
select avg(length(name))from tb2 ;
不僅可以對from 進(jìn)行計算 也可以對where子句進(jìn)行計算
- 聚合的主要部分是分組
group by 和select 區(qū)別 前者接收where子句的輸出捐晶,并將其分割成共享某個字段上同等值的小組 后者接收所有的組
例如獲取每個type_id 組的數(shù)量
select type_id ,count(*) from food group by type_id;
結(jié)果示例 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 去掉重復(fù)
select distinct name from tb2
- 符號表示
<> 不等于
>''大于零的意思
isnull 不為null值
- 指數(shù)或者小數(shù)點(diǎn) 用real 類型
- 十六進(jìn)制存儲為blob 類型
- sqlite 不支持 TRUNCATE
- using 使用
select t_author.id, t_peoples.name from t_author left join t_peoples using(id);