日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL基本语法入门 看这里就够了

發布時間:2024/3/12 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL基本语法入门 看这里就够了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL執行順序

第一步:執行FROM

第二步:WHERE條件過濾

第三步:GROUP BY 分組

第四步:執行SELECT 投影列

第五步:HAVING條件過濾

第六步:執行ORDER BY排序

一、創建、刪除庫

-- 創建新數據庫 CREATE DATABASE 數據庫名; -- 刪除數據庫 DROP DATABASE 數據庫名;

二、增加

1、添加列名、設置主鍵、設置自動增長列

primary key表示當前列為主鍵列,不能重復,不能為空

out_increment表示當前列為自動增長列,由DBMS分配該列的值,可以保證不重復

CREATE TABLE t_user(id INT PRIMARY KEY AUTO_INCREMENT, -- 編號 userName VARCHAR(20),-- 用戶名 birthday DATE,-- 生日 tel CHAR(11),-- 電話-- 枚舉類型,該列的值只能取男和女 sex ENUM('男','女'),-- 性別 -- 最后一列不能加“,”。 money INT -- 賬戶余額 );

2.添加行(新增記錄)

①如果添加多條信息,中間用","分割。VALUES只用寫一次,寫在表頭和表值之間。

②如果列名和列的值不寫,則默認添加為空(null),如果數據庫設計時存在默認值,則為添加默認值。——2019/11/09更新,感謝評論糾正。

INSERT INTO t_user(表頭1,表頭2) values(值1,值2); 例如: INSERT INTO t_user(userName,pwd,birthday,tel,sex,money) VALUES ('張無忌','123','1980-05-09','13948577789','男',2000); 例如: INSERT INTO t_student(userName,pwd,birthday,tel,sex) VALUES('張勇','111','1998-01-01','13112341234','男');

3.添加列(維護常用)

-- t_student:表名;address:表頭。 ALTER TABLE t_student ADD address VARCHAR(50);

三、刪除

1.刪除表

-- t_user:表名 DROP TABLE t_user;

2.刪除列

-- t_student:表名;userAddress:列名 ALTER TABLE t_student DROP COLUMN userAddress;

3.刪除行(記錄)

-- 如果不加where 后面的條件則全部刪除。 DELETE FROM t_user WHERE id=2;

四、修改

1、修改列

修改列的值必須與修改后的類型相符,如果修改列的值為null,則可以改為任意類型。如果修改列的值類型為varchar,最長為20,則修改后的類型必須為char類型,長度不能低于20。

ALTER TABLE t_student CHANGE address userAddress VARCHAR(100);

2、修改值

UPDATE t_product SET 修改列名=修改后新值 WHERE id=1; -- 修改,將張無忌的密碼修改為333,工資修改為2500 UPDATE t_user SET pwd='333',money='2500' WHERE userName='張無忌';

五、查詢

1、查詢表中所有數據

?*表示顯示所有的列,也可以指定顯示列的列表,中間用","分割。

SELECT * FROM t_user; -- 例如(顯示姓名和工資列): select userName,money from t_user

2、查詢返回限定行

第一個參數為起始記錄數,從0開始,第二個參數為顯示記錄數

-- MySQL語法 SELECT * FROM t_student LIMIT 0,3;

3、查詢空值null

null不能用=,只能用is null 或 is not null

SELECT *FROM t_student WHERE money IS NULL;

4、查詢多條信息(or/in)

-- 查詢張三和李四的信息 SELECT * FROM t_student WHERE userName='張三' OR userName='李四'; SELECT * FROM t_student WHERE userName IN('張三','李四');

5、模糊查詢(_或%)

-- 查詢姓李的二個字的員工 SELECT * FROM t_student WHERE userName LIKE '李_'; -- 查詢出所有商品名包括“糕”的商品的信息 SELECT * FROM t_product WHERE productName LIKE '%糕%';

6、查詢多條件+顯示部分(LIMIT)

-- 查詢前5條價格在100-1000的酒類商品 (MySQL語法) SELECT * FROM t_product WHERE productType='酒類' AND price>=100 AND price<=1000 LIMIT 0,5 ;

7、查詢去除重復的類名(distinct)

-- 查詢所有的性別,distinct 表示去除重復記錄 SELECT DISTINCT sex FROM t_student;

8、查詢排序顯示(ORDER BY)

-- 按員工工資排序,默認為升序ASC,降序需要加上DESC。 -- 工資相同,按年齡大小排序。 SELECT * FROM t_student ORDER BY money DESC,birthday;

9、查詢當前日期

select curdate() from 表名

六、判斷語句

1、單分支條件判斷

if(條件,返回值1,返回值2)-- 例如: select s.*,if(grade>=60,'合格','不合格')appraise from t_students;

2、多分支條件判斷

(case when 條件1 then 返回值1 when 條件2 then 返回值2 else 返回值3 END) -- 例子1(選擇顯示): SELECT p.*,(CASE WHEN money<5000 THEN '低薪階層' WHEN money>=5000 AND money<=10000 THEN '中薪階層' WHEN money>10000 THEN '高薪階層' ELSE '實習生' END) grade FROM t_student p; -- 例子2(選擇添加): UPDATE t_product SET price =price+(CASE WHEN productType='藥品類' THEN 5 WHEN productType='食品類' THEN 2 WHEN productType='酒類' THEN 100 END);

七、聚合函數的運用

-- 學生成績表 CREATE TABLE t_grade( id INT PRIMARY KEY AUTO_INCREMENT,-- id 主鍵 sname VARCHAR(20),-- 學生姓名 sex ENUM('男','女'),-- 學生性別 className VARCHAR(20),-- 學生班級 grade INT -- 學生成績 );

a.統計學生的人數

-- count(*)只要是記錄都要統計。count(列名)只統計非空列。 SELECT COUNT(*) '學生總人數', COUNT(grade)'參考人數' FROM t_grade;

b.統計學生的總分、平均分、最高分、最低分

-- avg求平均分,也只統計非空列 SELECT SUM(grade) ,AVG(grade),SUM(grade)/COUNT(*), MAX(grade),MIN(grade) FROM t_grade

c.統計每個班的人數

SELECT className,COUNT(*) num FROM t_grade GROUP BY className;

d.統計每個班的總分和平均分

SELECT className,SUM(grade)'總分',SUM(grade)/COUNT(*) '平均分' FROM t_grade GROUP BY className;

八、having運用

-- 列出班級人數小于等于3個人的班級 SELECT className,COUNT(*) FROM t_grade GROUP BY className HAVING COUNT(*)<=3; -- 列出班級總分大于300分的班級 SELECT className,SUM(grade) FROM t_grade GROUP BY className HAVING SUM(grade)>300;

九、復制表

create table 新表名 select * from 原表名;

十、where與if條件連用

WHERE ?IF(條件, ?true執行條件, false執行條件 ) select * from sys_user where if(id<10,name='zhangsan',name='lisi')

?

?

總結

以上是生活随笔為你收集整理的SQL基本语法入门 看这里就够了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。