Mysql創(chuàng)建表以及數(shù)據(jù)庫crud語句舉例詳細講解
一. 創(chuàng)建數(shù)據(jù)表
1.下面我們直接演示數(shù)據(jù)表的創(chuàng)建語句:
- field:指定列名
- datatype:指定列名的數(shù)據(jù)類型
- character set:若不指定字符集,就與所在數(shù)據(jù)庫的字符集保持一致
- collate:校隊規(guī)則,若不指定,就與所在數(shù)據(jù)庫的字符集保持一致
-- 演示表的創(chuàng)建 CREATE TABLE lrx_t1( field1 datatype, field2 datatype, field3 datatype )CHARACTER SET 字符集 COLLATE 校隊規(guī)則 ENGINE 存儲引擎;
2.刪除數(shù)據(jù)表
drop table lrx_t1;
3.下面我們做一個練習
#創(chuàng)建表的課堂練習 -- 字段屬性 -- Id 整形 -- name 字符型 -- sex 字符型 -- brithday 日期型(date) -- entry_date 日期型 (date) -- job 字符型 -- Salary 小數(shù)型 -- resume 文本型 -- 自己一定要練習一把 CREATE TABLE `emp` ( id INT, `name` VARCHAR(32), sex CHAR(1), brithday DATE, entry_date DATETIME, job VARCHAR(32), salary DOUBLE, `resume` TEXT) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB; -- 添加一條 INSERT INTO `emp` VALUES(100, '小妖怪', '男', '2000-11-11', '2010-11-10 11:11:11', '巡山的', 3000, '大王叫我來巡山'); -- 查詢 SELECT * FROM `emp`;
二. 修改表結構
這是對表的結構進行修改,比如添加列,刪除列,修改表的名字,字符集,引擎等
- 添加列
alter table lrx_t1 add `name` varchar(32) not null default '';
- 刪除列
alter table lrx_t1 drop `name`;
- 修改表的名字
rname table lrx_t1 to liu;
- 修改列,比如修改名字的長度為60,注意,我們已經(jīng)改了表名
altre table liu modify `name` varchar(60)
- 列名·name`改為 my_name
alter table liu change `name` my_name varchar(32) not null default ' ';
- 修改表的字符集為utf8
alter table liu character set utf8;
- 顯示表的結構
desc liu;
三. 數(shù)據(jù)庫CRUD語句
3.1Insert語句(添加數(shù)據(jù))
1.基本語句
insert into table_name values (vaulue...);
2.使用細節(jié)
- 插入的數(shù)據(jù)應與字段的數(shù)據(jù)類型相同。
比如 把 ‘abc’ 添加到 int 類型會錯誤
INSERT INTOgoods
(id, goods_name, price)
VALUES(‘雷軍’, ‘小米手機’, 2000);- 數(shù)據(jù)的長度應在列的規(guī)定范圍內(nèi),例如:不能將一個長度為 80 的字符串加入到長度為 40 的列中。
INSERT INTOgoods
(id, goods_name, price)
VALUES(40, ‘vovo 手機 vovo 手機 vovo 手機 vovo 手機 vovo 手機’, 3000);- 在 values 中列出的數(shù)據(jù)位置必須與被加入的列的排列位置相對應。
INSERT INTOgoods
(id, goods_name, price) – 不對
VALUES(‘vovo 手機’,40, 2000); –- 字符和日期型數(shù)據(jù)應包含在單引號中。
INSERT INTOgoods
(id, goods_name, price)
VALUES(40, vovo 手機, 3000); – 錯誤的 vovo 手機 應該 ‘vovo 手機’- 列可以插入空值[前提是該字段允許為空],insert into table value(null)
INSERT INTOgoods
(id, goods_name, price)
VALUES(40, ‘vovo 手機’, NULL);- insert into tab_name (列名…) values (),(),() 形式添加多條記錄
INSERT INTOgoods
(id, goods_name, price)
VALUES(50, ‘三星手機’, 2300),(60, ‘海爾手機’, 1800);- 如果是給表中的所有字段添加數(shù)據(jù),可以不寫前面的字段名稱
INSERT INTOgoods
VALUES(70, ‘IBM 手機’, 5000);- 默認值的使用,當不給某個字段值時,如果有默認值就會添加默認值,否則報錯,如果某個列 沒有指定 not null ,那么當添加數(shù)據(jù)時,沒有給定值,則會默認給 null , 如果我們希望指定某個列的默認值,可以在創(chuàng)建表時指定
INSERT INTOgoods
(id, goods_name)
VALUES(80, ‘格力手機’);
SELECT * FROM goods;
INSERT INTOgoods2
(id, goods_name)
VALUES(10, ‘小米手機’);
SELECT * FROM goods2;
3.2Update語句(更新數(shù)據(jù))
1.使用update語句來修改表中的數(shù)據(jù)
2.基本使用,我們先看一個題目
-- 演示 update 語句 -- 要求: 在上面創(chuàng)建的 employee 表中修改表中的紀錄 -- 1. 將所有員工薪水修改為 5000 元。[如果沒有帶 where 條件,會修改所有的記錄,因此要小心] UPDATE employee SET salary = 5000 -- 2. 將姓名為 小妖怪 的員工薪水修改為 3000 元。 UPDATE employee SET salary = 3000 WHERE user_name = '小妖怪' -- 3. 將 老妖怪 的薪水在原有基礎上增加 1000 元 INSERT INTO employee VALUES(200, '老妖怪', '1990-11-11', '2000-11-11 10:10:10', '捶背的', 5000, '給大王捶背', 'd:\\a.jpg'); UPDATE employee SET salary = salary + 1000 WHERE user_name = '老妖怪' -- 可以修改多個列的值 UPDATE employee SET salary = salary + 1000 , job = '出主意的' WHERE user_name = '老妖怪'
3.updata使用的四個細節(jié)
- 1.UPDATE語法可以用新值更新原有表行中的各列。
- 2.SET子句指示要修改哪些列和要給予哪些值。
- 3.WHERE子句指定應更新哪些行。如沒有WHERE子句,則更新所有的行(記錄),因此老師提醒一定小心。
- 4.如果需要修改多個字段,可以通過set字段1=值1,字段2=值2…
3.3Delect語句(刪除數(shù)據(jù))
1.使用delect語句刪除表中數(shù)據(jù)
2.快速入門案例解答
-- 刪除表中名稱為'老妖怪'的記錄。 DELETE FROM employee WHERE user_name = '老妖怪'; -- 刪除表中所有記錄, 老師提醒,一定要小心 DELETE FROM employee; -- Delete 語句不能刪除某一列的值(可使用 update 設為 null 或者 '') UPDATE employee SET job = '' WHERE user_name = '老妖怪'; -- 要刪除這個表 DROP TABLE employee;
3.delect使用細節(jié)
- 如果不使用where子句,將刪除表中所有數(shù)據(jù)。
- Delete語句不能刪除某一列的值(可使用update設為null或者")
- 使用delete語句僅刪除記錄,不刪除表本身。如要刪除表,使用drop table 表名;
3.4Select語句(查找數(shù)據(jù))
查詢語句我們這里簡單講述一下單表查詢
3.4.1單表查詢
1.基本語法
- 1.Select指定查詢哪些列的數(shù)據(jù)。
- 2.column指定列名。
- 3.*號代表查詢所有列。
- 4 From指定查詢哪張表。
- 5.DISTINCT可選,指顯示結果時,是否去掉重復數(shù)據(jù)
2,下面我們演示一下案例,在演示之前,我們先創(chuàng)建一個表
CREATE TABLE student( id INT NOT NULL DEFAULT 1, NAME VARCHAR(20) NOT NULL DEFAULT '', chinese FLOAT NOT NULL DEFAULT 0.0, english FLOAT NOT NULL DEFAULT 0.0, math FLOAT NOT NULL DEFAULT 0.0 ); INSERT INTO student(id,NAME,chinese,english,math) VALUES(1,'韓順平',89,78,90); INSERT INTO student(id,NAME,chinese,english,math) VALUES(2,'張飛',67,98,56); INSERT INTO student(id,NAME,chinese,english,math) VALUES(3,'宋江',87,78,77); INSERT INTO student(id,NAME,chinese,english,math) VALUES(4,'關羽',88,98,90); INSERT INTO student(id,NAME,chinese,english,math) VALUES(5,'趙云',82,84,67); INSERT INTO student(id,NAME,chinese,english,math) VALUES(6,'歐陽鋒',55,85,45); INSERT INTO student(id,NAME,chinese,english,math) VALUES(7,'黃蓉',75,65,30); INSERT INTO student(id,NAME,chinese,english,math) VALUES(8,'韓信',45,65,99); SELECT * FROM student;
表創(chuàng)建之后,我們看一下題目要求
-- 查詢表中所有學生的信息。 SELECT * FROM student; -- 查詢表中所有學生的姓名和對應的英語成績。 SELECT `name`,english FROM student; -- 過濾表中重復數(shù)據(jù) distinct 。 SELECT DISTINCT english FROM student; -- 要查詢的記錄,每個字段都相同,才會去重 SELECT DISTINCT `name`, english FROM student;
3.使用表達式對查詢的列進行運算
4.在 select 語句中可使用 as 語句
5.在 where 子句中經(jīng)常使用的運算符
下面我們繼續(xù)根據(jù)上面創(chuàng)建的表來練習題目
-- select 語句 -- 查詢姓名為趙云的學生成績 SELECT * FROM student WHERE `name` = '趙云' -- 查詢英語成績大于 90 分的同學 SELECT * FROM student WHERE english > 90 -- 查詢總分大于 200 分的所有同學 SELECT * FROM student WHERE (chinese + english + math) > 200
6.使用 order by 子句排序查詢結果
-- 演示 order by 使用 -- 對數(shù)學成績排序后輸出【升序】。 SELECT * FROM student ORDER BY math; -- 對總分按從高到低的順序輸出 [降序] -- 使用別名排序 SELECT `name` , (chinese + english + math) AS total_score FROM student ORDER BY total_score DESC; -- 對姓韓的學生成績[總分]排序輸出(升序) where + order by SELECT `name`, (chinese + english + math) AS total_score FROM student WHERE `name` LIKE '韓%' ORDER BY total_score;
總結
到此這篇關于Mysql創(chuàng)建表以及數(shù)據(jù)庫crud語句的文章就介紹到這了,更多相關Mysql創(chuàng)建表及crud語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
mysql死鎖(dead lock)與鎖等待(lock wait)的出現(xiàn)解決
死鎖和鎖等待是數(shù)據(jù)庫運維中常見的問題,區(qū)別在于死鎖會自動解除,而鎖等待需要手動處理,本文就來介紹一下mysql死鎖(dead lock)與鎖等待(lock wait),感興趣的可以了解一下2024-09-09mysql數(shù)據(jù)庫插入速度和讀取速度的調(diào)整記錄
由于項目變態(tài)需求;需要在一個比較短時間段急劇增加數(shù)據(jù)庫記錄(兩三天內(nèi),由于0增加至4億)。在整個過程調(diào)優(yōu)過程非常艱辛2012-07-07MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 參數(shù)
這篇文章主要介紹了MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 參數(shù),需要的朋友可以參考下2015-08-08CentOS 7中升級MySQL 5.7.23的坑與解決方法
我們在安裝升級的時候會遇到一些問題,不過可能每個人遇到的問題不一樣,多找找才能解決問題喲,下面這篇文章主要給大家介紹了關于在CentOS 7中升級MySQL 5.7.23遇到的一個坑與解決方法,需要的朋友可以參考下2018-10-10mysql5.7 生成列 generated column用法實例分析
這篇文章主要介紹了mysql5.7 生成列 generated column用法,結合實例形式分析了mysql5.7 生成列 generated column基本原理、用法及操作注意事項,需要的朋友可以參考下2020-02-02