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就表示刪除了。這是邏輯刪除。