0720-MySQL(1)
1. 數(shù)據(jù)庫(kù)是什么?
數(shù)據(jù)庫(kù)是一種存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù)
就像車(chē)庫(kù),水庫(kù),錢(qián)庫(kù)等.....存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù),就叫數(shù)據(jù)庫(kù)
目前主流的數(shù)據(jù)庫(kù)有好幾種,比如Oracle,MySQL,SQL Server等等
有的數(shù)據(jù)庫(kù)是要收費(fèi)的,不會(huì)開(kāi)源,但是這次學(xué)的MySQL是開(kāi)源的,免費(fèi)的,以及跨平臺(tái)的
# SQL Server 是微軟開(kāi)發(fā)的,他既不開(kāi)源也不跨平臺(tái),垃
這次我們學(xué)的數(shù)據(jù)庫(kù)是關(guān)系型數(shù)據(jù)庫(kù),開(kāi)源免費(fèi)跨平臺(tái),與隔壁形成鮮明對(duì)比
數(shù)據(jù)庫(kù):DB(DataBase),用來(lái)管理數(shù)據(jù)的服務(wù)軟件:DBMS(DataBase Management System)
數(shù)據(jù)庫(kù)系統(tǒng):DBS(DataBase System),帶有數(shù)據(jù)庫(kù)并整合了數(shù)據(jù)庫(kù)管理軟件的系統(tǒng)
MySQL適用于中小型規(guī)模的,主流多種編程語(yǔ)言,以及Unix,Linux,Windows等多種操作語(yǔ)言
=utf
sql語(yǔ)句:
創(chuàng)建一個(gè)名字為PythonTest01,編碼格式為utf-8的數(shù)據(jù)庫(kù)
create database PythonTest01 charset=utf8;
顯示所有數(shù)據(jù)庫(kù)
show databases;
顯示創(chuàng)建數(shù)據(jù)庫(kù)的流程(我也看不懂,也不知道有啥用)
show create database PythonTest01; --這個(gè)不用加charset=utf8,不然就報(bào)錯(cuò)
刪除數(shù)據(jù)庫(kù)
drop database PythonTest01;
--如果你不創(chuàng)建數(shù)據(jù)庫(kù),是無(wú)法直接新建表的
查詢(xún)當(dāng)前使用的數(shù)據(jù)庫(kù)
select database();
使用PythonTest01數(shù)據(jù)庫(kù)
use PythonTest01;
查看當(dāng)前數(shù)據(jù)庫(kù)所有的表
show tables;
創(chuàng)建一個(gè)新數(shù)據(jù)表 名稱(chēng)為xxxxx 有兩個(gè)字段,第一個(gè)為int類(lèi)型的id,第二個(gè)為varchar(30長(zhǎng)度)的name
create table xxxxx (id int, name varcahr(30))
查看xxxxx數(shù)據(jù)表的結(jié)構(gòu)
desc xxxxx;
怎么對(duì)新創(chuàng)建的數(shù)據(jù)表字段約束?字段 類(lèi)型 約束(不限順序)
create table yyyyy(id int primary key not null auto_increment, name varchar(30));
這東西很長(zhǎng),所以可以換行
create table zzzzz(
id int primary key not null auto_increment,
name varchar(30)
);
創(chuàng)建一個(gè)students數(shù)據(jù)表
create table students(
? ? id int unsigned primary key not null auto_increment, -- unsigned是表示無(wú)符號(hào)類(lèi)型,也就是正數(shù)
? ? name varchar(30),
? ? age tinyint unsigned default 0, --默認(rèn)為0
? ? high decimal(5,2), --小數(shù)類(lèi)型(decimal),表示一共五位,有兩位小數(shù)
? ? gender enum("男","女","武裝直升機(jī)","我不到阿") default "我不到阿", --枚舉類(lèi)型,一共四種性別,默認(rèn)我不到啊(
? ? cls_id int unsigned --最后一個(gè)記住不要加逗號(hào)
);
插入一個(gè)數(shù)據(jù)
insert into students values(0, "老登", 18, 188.88, "男", 0);
在students里面添加新的字段[字段 類(lèi)型]
alter table students add birthday datetime;
重命名字段[原名 新名 類(lèi)型與約束]
alter table students change birthday birth datetime not null
修改字段:
alter table students modify birth date not null;
刪除字段:
alter table students drop birthday;
刪除表:
drop table students;
數(shù)據(jù)的增刪改查(surd)
增[自增的那位置填null 0 或者default都表示讓他自個(gè)填]:
insert into students values(0, "fw刀", 40, 170.65,"我不到阿", 1, "2016-1-1");
以及枚舉類(lèi)型,如果填別的會(huì)報(bào)錯(cuò),但是能寫(xiě)1,2,3,4,就是寫(xiě)他的下標(biāo),只不過(guò)跟列表不一樣的是這個(gè)從1開(kāi)始
還有就是如果你只想寫(xiě)一部分,可以在values前面寫(xiě)(),里面寫(xiě)你要塞的東西,但是順序必須一樣,而且規(guī)定了不能為null也沒(méi)有默認(rèn)值的你必須寫(xiě)
而且這樣寫(xiě)后面如果寫(xiě)多個(gè)括號(hào),可以一次插入多個(gè),比如:
insert into students (name, gender) values("fw刀","我不到阿") ("虎子","男");
(實(shí)際上,全部的也可以這樣,就是前面那個(gè)括號(hào)不寫(xiě),后面寫(xiě)完還能多幾個(gè)括號(hào)多寫(xiě)
改[update 表名]:
update students set gender=1;
這句意思是把全部都改成男(
如果把指定的改的話,后面加個(gè)where,后面接條件就行,他會(huì)把所有符合條件的都改掉
所以如果你要改指定人的話,最好用id,因?yàn)槟阋膊恢勒l(shuí)會(huì)重名
MySQL的查找語(yǔ)句和py差不多,比如我從student里面找
select * from student where age < 18 and gender = 2;
這里就是說(shuō)從student里把所有age小于18的和性別為2(女)的學(xué)生拿出來(lái)
如果* 改成 name就是只拿名字,加啥給啥,*就是全部
以及在py里表達(dá)等于是==,但是這里就是=就行了
and or 都一樣用
但是not的加在哪個(gè)前面就只對(duì)哪個(gè)生效
select name from student where not age <= 18 and gender = 1
查詢(xún)的時(shí)候 name改成 name as 姓名 可以把打印出來(lái)的結(jié)果改為as后面的東西,記得加逗號(hào)
而且你要查倆的話順序也跟著你的來(lái)
這里的意思就是把所有 年齡【不】小于等于18的學(xué)生 和 性別為1(男)的學(xué)生名字拿出來(lái)
相當(dāng)于 select name from student where (not age <= 18) and gender = 1;
# 是的,這里面也是括號(hào)可以提高優(yōu)先級(jí),跟py一樣
如果你想把所有 不 年齡小于18和性別為1 的名字拿出來(lái)的話,就這樣寫(xiě): not (age <= 18 and gender = 1);
還有個(gè)刪除(忘了他罷):
delete from students; 清 空 數(shù) 據(jù) 表
真正用的時(shí)候加條件
delete from students where name="fw刀"
以及你把這個(gè)刪了之后主鍵的id不是自增長(zhǎng)的嗎,他還是會(huì)繼續(xù)沿著之前的漲,但是你可以自己指定
但是主鍵不允許重復(fù),他要是接到之前已有的了,那就必掛無(wú)疑
這個(gè)是物理刪除
一般最好邏輯刪除,數(shù)據(jù)來(lái)之不易,不要?jiǎng)h掉!
alter table students add is_delete bit default 0;
添加個(gè)新字段,bit類(lèi)型,默認(rèn)值0,名字為is_delete(bit類(lèi)型二進(jìn)制,要么0要么1)
要是要?jiǎng)h除,就改成1