MySQL学习笔记1(增删查改)
生活随笔
收集整理的這篇文章主要介紹了
MySQL学习笔记1(增删查改)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建表:
/*創建數據庫create database 數據庫名; */ CREATE DATABASE mybase; /*使用數據庫use 數據庫名 */ USE mybase;/*創建數據表的格式create table 表名(列名1 數據類型 約束,列名2 數據類型 約束,列名3 數據類型 約束);創建用戶表,用戶編號,姓名,用戶的地址將編號列,設置為主鍵約束,保證列的數據唯一性,非空性primary key AUTO_INCREMENT這一句意思是讓主鍵列數據,實現自動增長 */CREATE TABLE users (uid INT PRIMARY KEY AUTO_INCREMENT ,uname VARCHAR(20),uaddress VARCHAR(200));/*
表的操作,不常用
show tables 顯示所有數據表 desc users 查看表中結構 drop table users 刪除數據表 */
?
修改表結構:
CREATE TABLE users (uid INT PRIMARY KEY AUTO_INCREMENT,uname VARCHAR(20),uaddress VARCHAR(200));/*添加列,添加字段alter table 表名 add 列名 數據類型 約束*/ALTER TABLE users ADD tel INT ;/*修改列, 在原有的列上修改修改列名,數據類型約束 alter table 表名 modify 列名 數據類型 約束*/ALTER TABLE users MODIFY tel VARCHAR(50);/*修改列名alter table 表名 change 舊列名 新列名 數據類型 約束*/ALTER TABLE users CHANGE tel newtel DOUBLE;/*刪除列alter table 表名 drop 列名 */ALTER TABLE users DROP newtel;/*修改表名rename table 表名 to 新名 */RENAME TABLE users TO newusers?
向數據表中添加數據:
CREATE TABLE product(-- 主鍵列,自動增長id INT PRIMARY KEY AUTO_INCREMENT,-- 商品名字,可變字符,非空pname VARCHAR(100) NOT NULL,-- 商品的價格,doubleprice DOUBLE );/*向數據表中添加數據 insert格式:insert into 表名(列名1,列名2,列名3) values (值1,值2,值3)注意:對應問題和類型問題 */INSERT INTO product (id,pname,price) VALUES (1,'電腦',6666.66); INSERT INTO product (id,pname,price) VALUES (2,'手機',1888.88);/*添加數據格式,不考慮主鍵格式:insert into 表名 (列名) values (值) */ INSERT INTO product (pname,price) VALUES('洗衣機',800);/*添加數據格式,所有值全給出格式:insert into 表名 values (全列值) */ INSERT INTO product VALUES (4,'微波爐',300.25);/*添加數據格式,批量寫入格式:insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3) */ INSERT INTO product (pname,price) VALUES ('智能機器人',25999.22), ('彩色電視',1250.36), ('沙發',5899.02)?
修改表中數據:
/*對數據進行更新操作數據在原有的基礎上修改格式:update 表名 set 列1=值1,列2=值2 where 條件where 條件: 數據中的唯一性 */-- 修改 UPDATE product SET price = 15999 WHERE id=2-- 修改 UPDATE product SET pname='黑白電視機', price=100 WHERE id = 6/*修改條件的寫法id=6 等于,不要寫雙等于id<>6 不等于id<=6 與或非 && || !&&要寫成 and||要寫成 or ! 要寫成 notid in (1,3,4,5,6) 包含 */ UPDATE product SET price = 2000 WHERE id = 1 OR id = 7;/*刪除表中的數據格式:delete from 表名 where 條件drop table 表名 刪除整個數據表還有一個truncate方法也是刪除,區別在于刪除后重建新表,自增重新開始,而delete方法不影響自增 */ -- 刪除 DELETE FROM product WHERE id=8;?特別注意一個問題,我在安裝的時候設置的默認編碼是utf8,但是windows默認的是gbk,
如果打開命令行會發現出現亂碼問題,解決辦法:在控制臺中如果想顯示正常的漢字,加入這一行:
SET NAMES gbk;?
?
查詢表中的數據:
?
CREATE TABLE zhangwu (id INT PRIMARY KEY AUTO_INCREMENT, -- 賬務IDzname VARCHAR(200), -- 賬務名稱zmoney DOUBLE -- 金額 ); INSERT INTO zhangwu(id,zname,zmoney) VALUES (1,'吃飯支出',247); INSERT INTO zhangwu(id,zname,zmoney) VALUES (2,'工資收入',12345); INSERT INTO zhangwu(id,zname,zmoney) VALUES (3,'服裝支出',1000); INSERT INTO zhangwu(id,zname,zmoney) VALUES (4,'吃飯支出',325); INSERT INTO zhangwu(id,zname,zmoney) VALUES (5,'股票收入',8000); INSERT INTO zhangwu(id,zname,zmoney) VALUES (6,'打麻將支出',8000); INSERT INTO zhangwu(id,zname,zmoney) VALUES (7,NULL,5000);/*查詢指定列的數據格式:select 列名1,列名2 from 表名 */ SELECT zname,zmoney FROM zhangwu;/*查詢所有列的數據格式:select * from 表名 */ SELECT * FROM zhangwu;/*查詢去掉重復記錄DISTINCT 關鍵字 跟隨列名 */ SELECT DISTINCT zname FROM zhangwu/*查詢重新命名列as 關鍵字 */ SELECT zname AS 'name' FROM zhangwu /*查詢數據中,直接進行數學計算列對數字進行計算 */ SELECT zname,zmoney+1000 AS'sum' FROM zhangwu-- 查詢所有的吃飯支出 SELECT * FROM zhangwu WHERE zname='吃飯支出'-- 查詢金額大于1000 SELECT * FROM zhangwu WHERE zmoney>1000-- 查詢金額在2000到5000之間 SELECT * FROM zhangwu WHERE zmoney >= 2000 AND zmoney <= 5000 -- 改造成between and 方式 SELECT * FROM zhangwu WHERE zmoney BETWEEN 2000 AND 5000-- 查詢金額是 1000,3500,5000 其中一個 SELECT * FROM zhangwu WHERE zmoney = 1000 OR zmoney=3500 OR zmoney=5000 -- 改造成in方式 SELECT * FROM zhangwu WHERE zmoney IN (1000,3500,5000)-- like 模糊查詢 配合通配符 -- 查詢所有的支出(含有這兩個字即可查出) SELECT * FROM zhangwu WHERE zname LIKE '%支出%'-- 查詢賬務名字,五個字符的 SELECT * FROM zhangwu WHERE zname LIKE'_____'-- 查詢賬務名,不為空的 SELECT * FROM zhangwu WHERE zname IS NOT NULLSELECT * FROM zhangwu WHERE NOT ( zname IS NULL)?
排序查詢:
/*查詢,對結果集進行排序升序,降序,對指定列排序order by 列名 [desc][asc]desc 降序asc 升序排列,可以不寫 */ -- 查詢賬務表,價格進行升序 SELECT * FROM zhangwu ORDER BY zmoney ASC-- 查詢賬務表,價格進行降序 SELECT * FROM zhangwu ORDER BY zmoney DESC-- 查詢賬務表,查詢所有的支出,對金額降序排列 -- 先過濾條件 where 查詢的結果再排序 SELECT * FROM zhangwu WHERE zname LIKE'%支出%' ORDER BY zmoney DESC?
聚合函數:
/*使用聚合函數查詢計算 */-- count 求和,對表中的數據的個數求和 count(列名) -- 查詢統計賬務表中,一共有多少條數據 SELECT COUNT(*)AS'count' FROM zhangwu-- sum求和,對一列中數據進行求和計算 sum(列名) -- 對賬務表查詢,對所有的金額求和計算 SELECT SUM(zmoney) FROM zhangwu -- 求和,統計所有支出的總金額 SELECT SUM(zname) FROM zhangwu WHERE zname LIKE'%收入%'INSERT INTO zhangwu (zname) VALUES ('彩票收入')-- max 函數,對某列數據,獲取最大值 SELECT MAX(zmoney) FROM zhangwu-- avg 函數,計算一個列所有數據的平均數 SELECT AVG(zmoney)FROM zhangwu?
分組查詢:
?
/*查詢所有的數據吃飯支出 共計多少工資收入 共計多少服裝支出 共計多少股票收入 共計多少打麻將支出 共計多少錢分組查詢: group by 被分組的列名必須跟隨聚合函數select 查詢的時候,被分組的列,要出現在select 選擇列的后面 */SELECT SUM(zmoney),zname FROM zhangwu GROUP BY zname-- 對zname內容進行分組查詢求和,但是只要支出 SELECT SUM(zmoney)AS 'getsum',zname FROM zhangwu WHERE zname LIKE'%支出%' GROUP BY zname ORDER BY getsum DESC-- 對zname內容進行分組查詢求和,但是只要支出, 顯示金額大于5000 -- 結果集是分組查詢后,再次進行篩選,不能使用where, 分組后再次過濾,關鍵字 having SELECT SUM(zmoney)AS 'getsum',zname FROM zhangwu WHERE zname LIKE'%支出%' GROUP BY zname HAVING getsum>5000?
轉載于:https://www.cnblogs.com/xuyiqing/p/8322197.html
總結
以上是生活随笔為你收集整理的MySQL学习笔记1(增删查改)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu中获取文件名称并生成txt文
- 下一篇: PostgreSQL 9.6 keepa