mysql數據庫(一):建表與新增數據


一. 學習目標

  • 理解什么是數據庫,什么是表

  • 怎樣創建數據庫和表(create)

  • 怎樣往表里插入數據(insert)

  • 怎樣修改表里的數據(update)

  • 怎樣刪除數據庫,表以及數據(delete)

二. 理解數據庫和表

1. 什么是數據庫

倉庫—存儲貨物的房子

數據庫—存儲數據的房子

 

思考:

1. 淘寶上面的展示的所有商品信息是從哪里取的?

2. 發表一個商品信息數據又是保存到了哪里?

3. 我們等了qq后查看qq的聊天記錄信息,這些數據又是從哪里取的?

2. 什么是表

如果倉庫里面堆滿了裝衣服的麻袋,那一個個麻袋就可以看做是一個表

3. 數據庫與表的關系

三. 創建數據庫和表

1. 創建數據庫

創建數據庫和表都需要用到數據庫腳本語言:sql,全稱是:Structured Query Language,結構化查詢語言

創建數據庫的sql語法:create database 數據庫名稱;

 

示例:create database ningmeng;

2. 創建表

思考:如何把下面excel的數據保存到數據庫表里面

建表語法:

create table <表名> (

<字段名1> <類型1>,

<字段名2> <類型2>,

...

<字段名n> <類型n>

) DEFAULT CHARSET=utf8;

后面加上這一串信息,是為了表數據支持中文,否則當存入中文的時候可能會出現亂碼

 

所以,我們的創建student表的語句是:

create table student(
id int(12) not null PRIMARY key,
name varchar(12),
sex varchar(12),
class_id varchar(12),
school_id varchar(12),
address varchar(12),
create_date datetime,
update_date datetime
)DEFAULT CHARSET=utf8;

解釋:

create:創建

table:表

每一個字段之所以要聲明類型,是因為每一個數據都是有類型的,要么是數字,要么是字符串語句,要么是時間。一個字段聲明了類型后則這個字段就只能存放相應類型的數據

varchar:表示此數據類型為字符串語句

datetime:表示此數據類型為時間類型,最終保存的數據格式為:yyyy-mm-dd HH:mm:ss

not null:表示此字段的值不能為空

3. 表字段:主鍵

表明主鍵的語法:<字段名> <類型1> primary key;

主鍵是什么?它有什么特征

 

1). 它是數據庫表的一個字段

2). 主鍵是非必須的,也就是說一個表可以不聲明主鍵字段

3). 一旦聲明了某個字段為主鍵,則該字段的值不能重復

4). 一個表只能有一個主鍵

5). 聲明主鍵的時候可以只用一個字段作為主鍵,也可以將多個字段當做主鍵,后者叫聯合主鍵

 

注意:什么樣的字段適合做主鍵?

能夠唯一的標識表中的一行數據

 

思考:學生表哪些字段可以唯一標識一條數據?

學號

4. 字段類型

每種字段都有自己的類型,比如整數型、字符型、時間類型、日期類型、浮點型等。下面介紹常用的數據類型

 

整型:

int(n):n位長度的整數

字符串型:一般表示姓名地址或者長字符串(非數字類的值)

char(n):n個字符,最多255個字符,固定長度

varchar(n):可變長度,最多65535個字符,可變長度

比較:varchar可以節約空間,但char操作起來更快一點

時間和日期

date:日期,格式(yyyy-mm-dd,例如:2016-08-22)

time:時間,格式(hh:mm:ss,例如:18:40:37)

datetime:日期時間,格式(yyyy-mm-dd hh:mm:ss,例如:2016-08-22 18:41:27)

浮點型

float(m, d):m代表總位數,d小數位,如999.9999聲明類型為:float(7, 4)

double(m, d):m總位數,d小數位

5. 總結

1). 創建表的時候,聲明字段的時候,字段之間以什么符號分隔?符號用中文的可以嗎?

英文狀態下的逗號,不可以

2). 建表聲明字段的時候,最后一個字段后面需不需要逗號?

不需要

3). 主鍵的特征是什么?

唯一性

4). 如果表需要支持中文數據存儲和顯示,需要怎么做?

在末尾加上DEFAULT CHARSET=utf8;

6. 課后作業

創建學校表

表名:school

字段:id(編號)、name(學校名稱)、address(學校地址)、phone(學校電話)、create_date(創建時間)、update_date(更新時間)

字段類型:

  id          int(11)

  name        varchar(10)

  address       varchar(100)

  phone        varchar(20)

  create_date     datetime

  update_time      datetime

主鍵:id

create table school(
id int(11) not null PRIMARY key,
name varchar(10),
address varchar(100),
phone varchar(20),
create_time datetime,
update_time datetime
)DEFAULT CHARSET=utf8;

四. 數據庫操作—插入數據(INSERT)

1. 插入一條數據,且只對一部分字段賦值

語法:insert into <表名>(字段A, 字段B, 字段C) values(值A, 值B, 值C);

示例: insert into grade(id, name) values(1, '高一年級');

 

2. 插入一條數據,對所有字段都賦值

語法:insert into <表名> values(值A, 值B, 值C..., 值F);

示例:insert into grade values(1, '高一年級', SYSDATE(), SYSDATE());

 

總結:

需要注意的是,如果插入數據時,只對部分字段進行初始化,則需要聲明要插入的字段

在mysql中,字符串的數據是用英文的''括起來的

 

創建一個grade表

create table grade(
id int not null PRIMARY key,
name varchar(10),
create_date datetime,
update_date datetime
)DEFAULT CHARSET=utf8;

然后向其中插入一條數據,對一部分字段賦值

insert into grade(id, name) values(1, '高一年級');

插入一條數據,對所有字段賦值

insert into grade values(2, '高一年級', SYSDATE(), SYSDATE());

3. 一次插入多條數據

語法:insert into <表名> values(值1, 值2...), (值1, 值2...)......;

示例:一次性往年級表里面插入三條數據

insert into grade values(3, '高三年級', SYSDATE(), SYSDATE()), (4, '高四年級', SYSDATE(), SYSDATE()), (5, '高五年級', SYSDATE(), SYSDATE());

 

一次性插入多條數據

insert into grade values(3, '高三年級', SYSDATE(), SYSDATE()), (4, '高四年級', SYSDATE(), SYSDATE()), (5, '高五年級', SYSDATE(), SYSDATE());

五. 數據庫—修改數據(UPDATE)

1. 修改一個表里的所有數據

語法:update 表名 set 字段名=新值;

示例:將學生表里所有學生的住址改為"深圳寶安西鄉"

update student set address='深圳寶安西鄉';

 

2. 修改一個表里滿足某一條件的那一部分數據

語法:update 表名 set 字段名=新值 where 表達式

示例:將學生表里名字為華華的家庭住址改為"北京海淀區"

update student set address='北京海淀區' where name='華華';

 

總結:

如果要更新一個表里滿足某個條件的數據,同樣需要用到關鍵字"where"來進行過濾找出那一部分數據,然后針對這一部分數據做更新操作

 

新創建一個student表

create table student(
id int not null PRIMARY key,
name varchar(10),
sex varchar(10),
class_id int,
address varchar(100),
create_date datetime,
update_date datetime
)DEFAULT CHARSET=utf8;

向表中插入兩條數據

insert into student values(1601001,'檸檬','',1601,'深圳市南山區家和苑小區',SYSDATE(),SYSDATE());
insert into student values(1601002,'華華','',1601,'深圳市南山區家和苑小區',SYSDATE(),SYSDATE());

將student表里所有學生的住址改為"深圳寶安西鄉"

update student set address='深圳寶安西鄉';

將學生表里名字為華華的家庭住址改為"北京海淀區"

update student set address='北京海淀區' where name='華華';

六. 數據庫—刪庫刪表(DROP)

1. 刪除數據庫

語法:drop database 數據庫名稱;

示例:刪除數據庫 xiaozhai

drop database xiaozhai;

 

2. 刪除數據表

語法:drop table 表名;

示例:刪除school表

drop table school;

 

總結:

1. drop database test_database; 會把數據庫test_database刪掉,因此庫里所有的表和數據都一並刪除

2. drop table test_table; 會把test_table表刪掉,因此表的數據也刪掉了

3. drop作為一種刪除命令,它不僅會刪數據結構(庫/表),而且會刪數據。簡單點講:drop 刪結構且刪數據

4. 這兩個命令要慎用

七. 數據庫—刪數據(DELETE)

1. 刪掉表里的所有數據

語法:delete from 表名;

示例:刪除學生表里的所有數據

delete from student;  刪除一個表里的所有數據

 

2. 刪除一個表里的滿足某個條件的數據

語法:delete from 表名 where 條件;

示例:刪除學生表里名字為"華華"的數據

delete from student where name='華華';

 

總結:

1. 如果要刪除某個表里滿足某個條件的數據,需要用到關鍵字"where"來進行過濾找出那一部分數據

2. delete也是一種刪除命令,但是與drop命令不同的是,delete只會刪除表數據,不會刪表和庫。簡單點講:delete刪數據不刪結構

 

刪除學生表里名字為"華華"的數據

delete from student where name='華華';

八. 常見問題注意

1. 建表的時候每一個字段的后面用什么符號分隔?最后一個字段后面需要分隔符嗎?

逗號,不需要

2. 插入數據時,只初始化部分字段與初始化所有字段時sql的不同點體現在哪里?

初始化所有字段,不需要寫字段名

3. 賦值時,對於varchar類型的字段,賦的值必須用什么符號括起來?

英文狀態下的單引號''

4. 字段聲明了長度,賦值的時候應該注意什么?

插入數據的長度必須小於等於聲明的長度

5. 聲明為主鍵的值可以重復嗎?

不可以

6. 不插入必填字段(not null字段),插入語句能否執行成功?

不能執行成功的

7. 插入一條數據和多條數據的語法區別是?多條數據時,中間以什么符號做分隔?

插入多條數據,多個括號括起來,以逗號做風格

8. 如果表需要支持中文數據存儲和顯示,需要怎么做?

設置DEFAULT CHARSER=utf8;

九. 課后作業

一. 按照下面給出的表結構創建下面幾個表

二. 用課堂上學習的insert語句向各個表里插入正常的非垃圾數據

注意事項:

1. 成績表里成績是分數(0~100分)

2. 學生的性別和姓名都是中文

要求:至少每個表里都要有10條數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM