1.創(chuàng)建數(shù)據(jù)庫開始
CREATE DATABASE 數(shù)據(jù)庫名稱 (這樣會使用mysql默認(rèn)的字符集)
2.創(chuàng)建指定字符集的數(shù)據(jù)庫
CREATE DATABASE 數(shù)據(jù)庫名稱 CHARSET=utf8/gbk/gb2312
3.修改數(shù)據(jù)庫
ALTER DATABASE 數(shù)據(jù)庫名稱 CHARSET=字符集
表的創(chuàng)建
數(shù)據(jù)庫的三大引擎Innodb畜吊、MYSIAM秉沼、MEMARY
數(shù)據(jù)庫字段:
三大類:
? ? 字符串:char假夺、varchar、longtext济蝉、mediumtext
? ? 日期:date、year、time漱逸、datetime、timestamp ...
? ? 數(shù)值:int游沿、smallint饰抒、tinyint、mediumint
約束:
not null:設(shè)置制定的列不能為null !=>空字符
default : 給指定的列設(shè)置一個默認(rèn)值,如果插入數(shù)據(jù)的時候不給
當(dāng)前列設(shè)置值诀黍,就會使用默認(rèn)值袋坑,如果設(shè)置了值,就會使用設(shè)置的值眯勾。
primary key:主鍵枣宫,不能為空、唯一
unique:唯一吃环,可以為null
foreign key:外鍵也颤,外鍵是摸一個表的主鍵,不為null,
加強表與表之間的數(shù)據(jù)lianxi(關(guān)系)
屬性:
auto_increment 自增:
可以指定步長和起始值
會話級步長:
set session auto_increment_increment = 步長
全局的步長設(shè)置:
set global auto_increment_increment = 步長
給一個表指定一個起始的自增的值
ALTER TABLE 表名 auto_increment = 起始值
一個表里面只能有一個自增郁轻,并且都是給主鍵設(shè)置的翅娶。
創(chuàng)建表:
CREATE TABLE 表名(
? ? 字段名 類型 約束 屬性 (自增)文留,
? ? 字段名 類型 not null,
? ? 字段名 類型 nti null default 默認(rèn)值,
? ? primary key(列名)/primary key(列名,列名)
? ? unique key(列名)/unique key(列名竭沫、列名)
? ? constraint FK_ID foreign key(列名) references 主表(primary key)
)engine=數(shù)據(jù)引擎 default CHARSET=utf8;
修改表
ALTER TABLE 表名 charset= ...
重命名
RENAME TABLE 舊表名 TO 新表名
修改表名
ALTER TABLE 舊表名 RENAME AS 新表名
修改表中的字段
ALTER TABLE 表名 change 字段名 新字段名 類型 約束 屬性燥翅;
不改變舊字段名的情況下修改(類型、約束等)
ALTER TABLE 表名 change modify 字段名 類型 約束 屬性
添加新的列
ALTER TABLE 表名 ADD 字段名 類型 約束 屬性
刪除某一列
ALTER TABLE 表名 drop 字段名
刪除表
DROP table 表名
刪除數(shù)據(jù)庫
DROP DATABASE 數(shù)據(jù)庫名
查看當(dāng)前選擇的數(shù)據(jù)庫
select DATABASE()
切換數(shù)據(jù)庫
use 數(shù)據(jù)庫名
增:
全列插入
insert into tablename values()
非完全插入
insert into tablename() values()
多行插入
insert into tablename() values(),()
刪:
刪除指定數(shù)據(jù)
DELETE FROM tablename where 條件
刪除全部數(shù)據(jù)
DELETE FROM tablename
改:
修改表中某一列的全部值(不要這么去做)
UPDATE tablename set 列明=值
根據(jù)條件修改數(shù)據(jù)
UPDATE tablename set 列名=值 where 條件
UPDATE tablename set 列名=值 列名=值...where 條件
查:
select * from tablename
select 列蜕提,列森书,列... from tablename
select * from tablename where 列=值
select * from tablename where 列>值
select * from tablename where 列<值
is null:
select * from tablename where 列 is null
or:
select * from tablename where 列=值 or 列!=值
in:
select * from tablename where 列 in (值,值贯溅,值...)
and
select * from tablename where 列=值 amd 列=值
not:
select * from tablename where 列 not in(值拄氯。值,值...)
select * from tablename where 列 not is null
between and
select * from tablename where 列 between 值 and 值
排序
select * from tablename order by 列
select * from tablename order by 列 desc
多個列排序
select * from tablename order by 列 desc,列
聚合函數(shù)
count(*):計算所有行
avg():計算列的平均值
sum():求和它浅,計算列的值的和
max():計算列的最大值
min():計算列的最小值
通配符
%:匹配任意字符,任意次數(shù)
_:匹配任意字符译柏,必須有且僅有一次
一般跟LiKE匹配使用
select 列,列 from tablename where 列 like '條件%'
select 列姐霍,列 from tablename where 列 like '條件_'
python re模塊:
complie
match:從開頭匹配鄙麦,如果開頭就不符合直接返回None,如果匹配到
立即返回結(jié)果镊折,單次匹配胯府,取值使用group()
search:從頭開始匹配,在整個字符串中查詢恨胚,只要又符合規(guī)則的就立即返回
單詞匹配骂因,如果沒有符合規(guī)則的就返回None
findall:在整個串中赃泡,返回所有符合規(guī)則的結(jié)果寒波,是一個列表
sub:替換
split:分割字符串,返回列表
finditer:跟findall功能一致,返回結(jié)果有區(qū)別升熊,返回的是一個可選的值
r:原始字符串
\:轉(zhuǎn)義符
表的設(shè)計:
范式:
1nf:
列不可再分
2nf:
一個表必須要有一個主鍵(可以由單個列或多個列構(gòu)成)俄烁,非主鍵的列必須完全依賴于主鍵,而不是部分依賴于主鍵
3nf:
非主鍵的列级野,必須直接依賴主鍵页屠,不能出現(xiàn)傳遞關(guān)系(非主鍵的列A,依賴與非主鍵的列B蓖柔,非主鍵的列B依賴于主鍵)
E-R模型:
E: 實體辰企,一個實體其實就是指一張表
R: 關(guān)系,表與表之間一個數(shù)據(jù)的聯(lián)系
一對一:
一對多:
多對多:
查詢語句的順序:
SELECT况鸣、列蟆豫,列、FROM懒闷、表名、WHERE、條件愤估、GROUP BY帮辟、列,列、HAVING玩焰、條件由驹、ORDER BY、列 (ASC|DESC)昔园、LIMIT start,count
修改表名:alter table t_book rename to bbb;
添加列:alter table 表名 add column 列名 varchar(30);
刪除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table bbb change nnnnn hh int;
修改列名: SQLServer:exec sp_rename't_student.name','nn','column';
修改列名: Oracle:lter table bbb rename column nnnnn to hh int;
修改列屬性: alter table t_book modify name varchar(22);
修改表: ALTER TABLE 表名 charset= ...