mysql簡單基礎
- 2019 年 10 月 6 日
- 筆記
無論是風裡,還是在雨里,我都在這裡守候著你~
數據類型
整數:int,bit
小數:decimal,
decimal(3,1)表示一共三位數,小數佔一位。
字元串:varcahr,char
char表示固定的字元串比如char(2)需要2位,不足填充空格
varchar表示可變長字元串
text:儲存大文本,一般大於4000時使用。
日期時間:date,time,datetime
枚舉:enum,enum('男','女'),你男可以用1表示,1對應男,2就是女,這就是枚舉。
對於圖片,視屏,不儲存在資料庫中,表中值存儲文件路徑。
約束
主鍵primary key:物理上儲存的數據
非空not null:不允許為空
唯一unique:唯一鍵,不允許重複
默認default:設置默認,不輸入會自動填充默認值
外鍵foreign key: 關係鍵
以命令行的形式操作資料庫
windows+r cmd 進入終端
輸出mysql -uroot -p 連接資料庫,輸入你的mysql密碼,會出現如下,表示連接成功。

-uroot:-u表示用戶名,root是用戶名
-p:密碼
或者輸入 mysql -uroot -p123456 也會進入,123456是我mysql的密碼。
exit:退出。
quit:也是退出。
mysql的sql語句都有;
查看資料庫:show databases;
查看資料庫版本:select version();
顯示當前時間:select now();
創建一個資料庫:create database 資料庫名;
出現Query Ok, 1 row affected ,表示執行成功!
你show databases; 就會看到 我們剛剛創建的資料庫python_data。
但是還記得我們用圖形化工具時創建資料庫指定了編碼utf8嗎?
因此我們在創建資料庫時,也要指定編碼:
create databse 資料庫名 charset=utf8;
這條語句才支援我們的中文。但是你已經創建了該資料庫,我們需要刪除後從新創建。
刪除資料庫:drop databse 資料庫名;
對錶的操作
在創建一個資料庫後,我們創建表,我們在創建表前需要進入某個資料庫。
進入資料庫:user 資料庫名;
查看當前所在資料庫:select database();
查看當前資料庫中所有的表:show tables;
創建表:create table 表名(欄位1 類型,欄位2 類型);以此類推。
比如:create table table1(id int,name varchar(30));
如果我想添加一些約束,比如不能為空,主鍵約束,唯一約束等等怎麼寫?
create table table1(
id int primary key not null aotu_increment,
name varchar(30) not null
);
直接在後面接著打約束即可。
直接寫int 是可以為負的,怎麼樣不讓他有負值?以及其他的用法。
我們以創建table1為例,id(編號),name(姓名),age(年齡),hight(身高),sex(性別),
classid (班級id)。
create table table1(
id int unsigned primary key not null aotu_increment,
name varchar(30) not null,
age tinyint unsigned default 18,
hight decimal(4,1),
sex enum('男','女') defaul "保密",
classid int unsigned
);
在int後添加一個unsigned即可。

primary key:主鍵
not null:不能為空
aotu_increment:自動增長
查看錶結構:desc 表名;
添加數據
自動增長欄位不需要你填寫。
insert into 表名 values("張三",18,180.5,"男",1);
但是如果我們只對某些欄位插入數據就要這樣寫:
不想插入的數據可以不寫,一般沒有插入的默認為空,如果給了not null約束,必須插入數據。
前後是一一對應的關係。也就是可以部分插入。
insert into 表名(name,age,hight,sex,classid) values("張三",18,180.5,"男",1);
多行插入:
insert into 表名(name,age,hight,sex,classid) values("張三",18,180.5,"男",1),("李四",19,170.6,"女",2);
一下插入兩行數據。
查詢表中的數據:
*號表示查詢全部
select * from 表名;
查詢表中的某個欄位。
如果我們只想查詢name值。
select name from 表名;
查詢name和age。以,隔開。
select name,age from 表名;
給以存在的表添加一個生日欄位。
第一種方法:
刪除當前表,重新創建。
第二種方法:
修改表結構。
alter table table1 add birthday datetime;
由於datetime是精確到時分秒的,我們要將他修改成date。
修改表的數據類型:
不修改欄位名:
alter table table1 modify birthday date;
修改欄位名將birthday修改成bday:
alter table table1 chenge birthday bday date;
刪除一個欄位名:
alter table table1 drop hight;
如果該欄位有值,它的值也會沒有。
刪除表:
drop table 表名;
查看創建表的sql語句:
show create table 表名;
查看創建資料庫的sql語句:
show create database 資料庫名;
修改表中的數據:
全部修改:
update 表名 set 欄位名=要修改的值;
例如: update table1 set name = "王五";
修改其中一個:
update 表名 set 欄位名=要修改的值 where id = 要修改的id;
上面的是根據id去修改,你也可以根據name去修改,當然name可能重複,找一個唯一的,那就是id。
例如:
update table1 set age=60 where id = 1;
修改多個用,隔開:
update table1 set age=60,sex = "女" where id = 1;
查詢中的where:
取出id小於60的所有數據。
select * from where id<60;
取出name等於張三的數據。
select * from where name = "張三";
同理其他也是一樣的。
取出多個條件的(名字等於張三,年齡等於18):
select * from where name = "張三" and age=18;
取出name等於張三或者年齡為18的
select * from where name = "張三" or age=18;
給一個別名:
select name as 姓名 from table1;
輸出的表的表頭就不會是name,會顯示漢子姓名。
刪除一個表中的數據:
delete from table1 where id =1;
刪除id等於1的數據,你也可以根據name來刪除。
delete from table1
同樣清空數據表。
上面的刪除有一個問題,id為自動增長,刪除時,比如id為1,刪除後,添加數據是從2開始。破壞表結構,也就是1不見了,也不會補充上去。這是物理刪除。
所以我們如果在公司,都是假的刪除,也就是說給一個欄位,0表示刪除,1表示正常,也就是說刪除的時候實際上是修改,把他修改成0就表示刪除了。這是邏輯刪除。