天天看點

Mysql資料庫,增删改查筆記(非常重要)Mysql資料庫,增删改查筆記(非常重要)新增資料:修改資料删除資料查詢資料

Mysql資料庫,增删改查筆記(非常重要)

新增資料:

INSERT

文法:

INSERT [INTO] <表名>[列名] VALUES<值清單>;

INSETR INTO 表名(列名1,列名2) VALUES(值1,值2);

如果INSETR語句中不寫列名,則預設是向表中的所有字段添加值。

(此時輸入資料數量要等同于列的數量,否則會報錯,資料庫對插入的資料是否有效進行了完整的校驗)

字元串需要以‘’或者“”“”來括起

字元會自動轉換成數字插入

INSERT INTO SELECT

INSERT [INTO] <表名>[列名] SELECT [源列名] FROM <源表名>;

INSERT INTO 表名 (列名1,列名2) SELECT 源列名1,源列名2 FROM 源表名;

1.每次插入一行資料,不可能隻插入半行或者幾列資料,是以,插入的資料是否有效将按照整行的完整性的要求來檢驗

INSERT INTO students (s_id,s_name,age) VALUES (‘小明')

2.每個資料值的資料類型、精度和小數位數必須與相應的列比對

insert into students(s_id,s_name,age) values(1001,123, 'asd');

insert into students(s_id,s_name,age) values(1001,123, '100');

insert into students(s_id,s_name,age) values(1001,123, '255');

3.如果在設計表的時候就指定了某列不允許為空,則必須插入資料;

insert into students(s_id) values(1001); 錯誤

4.具有預設值的列,可以使用DEFAULT(預設)關鍵字來代替插入的數值

常見錯報錯類型:

[Err] 1136  - Column cout doesn't match value count at row 1

INSERT語句中沒有輸入列名且列多值少 報錯 資料庫對插入的資料是否有效進行了完整性的校驗

[Err] 1265 - Data truncated for column '...' at row 1

數值類型或長度不符合列名設定

[Err] 1364 -Field 's_name' doesn't have a default value 

如果字段設定了 NOT NULL 則必須插入。或者設定DEFAULT值

修改資料

UPDATE

文法: 

UPDATE <表名> SET <列名 = 更新值> [WHERE <更新條件>]

UPDATE 表名 SET 列名1=值1,列名2=值2 .... WHERE 列名=值;

不帶where條件會導緻全量更新

叙述:

where 子句是判斷語句,用來設定條件,限制隻更新比對的行,如果 不帶where子句,則更新所有行資料。

例如:

update students set age=23,height=185 where s_name='火狐';

删除資料

DELETE

DELETE FROM <表名> [WHERE <更新條件>]

此語句删除表中的行,如果不帶where子句,則删除整個表中的記錄 但是表不被删除

DELETE FROM <表名>; 删除表裡的所有資料,表結構還在。

TRUNCATE TABLE <表名>; 删除表裡的所有資料,但不會顯示删除的資料行數,不能夠做篩選。直接進行整表删除,表結構還在。

DORP TABLE <表名>; 删除表。表結構不存在。

查詢資料

SELECT

SELECT <列名> FROM <表名> [WHERE <查詢表達式>];

1、查詢學生的學号(s_id) ,姓名(s_name)

SELECT s_id,s_name FROM students; 

2、查詢姓名為‘CMCC’的學号和性别資訊

SELECT s_id,s_sex FROM students WHERE s_name='CMCC';

3、查詢表裡的所有列 (使用*号)

方法1:SELECT * FROM students; // 用*表示所有列

方法2:SELECT s_id,s_name,age,height,sex,class_id,birthday,s_desc FROM students; // 把所有列的列舉出來

4、給列起别名:SELECT 列名1 [AS] 列别名1,列名2 [AS] 列别名2... FROM 表名;

SELECT s_name AS ‘學員姓名’,s_id AS ‘學員編号’ FROM students;

5、給表起别名: SELECT 表别名.列名1.列名2 FROM 表名 表别名;

SELECT s.s_id,s.s_name FROM students s;

補充:

MySQL中使用SQL語言幾點說明

屬于一個SQL語句,使用分号(;)結尾,否則mysql認為語句沒有輸入完。

箭頭(->)代表SQL語句沒有輸入完

取消SQL語句使用(\c)

SQL語句關鍵字和函數名不區分大小寫(Linux區分,Windows不區分)

使用函數時,函數名和後面的括号之間不能有空格

說明:

表和字段的引用方式有兩種:絕對引用和相對引用

絕對引用:資料庫名.表名(.字段名)

mysql> select school.students.s_name from school.students;

相對引用:表名.(字段名)

mysql> select students.s_name from school.students;