/*
DML:資料庫操作語言
主要對錶中的資料庫進行 增刪改
****增:插入一條記錄
insert into 表名 (列名1,列名2..) values (值1,值2..)
注意: 1.列名可以在表中選擇一列或者幾列
2.後面的值 必須和前面的列 一一對應
3.在SQL中除了int型別的資料,其他資料必須用``或者""引起來
我們推薦用單引號
4.如果要插入的資料所有欄位都有,那麼以上的
(列名1,列名2..) 可以省略
****刪:刪除一條記錄
格式: delete from 表名;//刪除表中的所有記錄
delete from 表名 where條件;
****改:修改表中的記錄資訊
update 表名 set 欄位名 = 值;//把所有記錄的該列都改了
update 表名 set 欄位名 = 值 where條件;
*/
向students 表中插入一個學生資訊(id:001 name:李四 )
INSERT INTO students (sid,NAME) VALUES (`001`,`李四`);
向students 表中插入一個學生資訊(id:002 name:王五 age:18 )
INSERT INTO students (sid,NAME,sage) VALUES (`002`,`王五`,18);
INSERT INTO students VALUES (`003`,`趙六`,28);
刪除students表中的記錄
DELETE FROM students;
刪除某一條記錄
DELETE FROM students WHERE sid=3;# 這裡條件sid=3不能寫成 sid==3,sid.equals(3);
修改students表,把sage這一列的值 改為20
UPDATE students SET sage=20;
修改students表,把王五的sage這一列的值 改為 50
UPDATE students SET sage = 50 WHERE NAME=`王五`;# sid = 2
/*
DQL:查詢資料庫中的資料
基本格式:
select [distinct] *|列名1,列名2 from 表名;# 查詢表中的所有列資料
帶有條件的查詢 用關鍵字 where
*/
基本查詢
SELECT * FROM product;
SELECT pname,price FROM product;
SELECT price FROM product;
SELECT DISTINCT price FROM product;
基本查詢練習
1.查詢所有的商品.
SELECT * FROM product;
2.查詢商品名和商品價格.
SELECT pname,price FROM product;
3.去掉價格重複值.
SELECT DISTINCT price FROM product;
4.查詢結果是表示式(運算查詢):將所有商品的價格+10元進行顯示.
SELECT price+10 FROM product;
5.別名查詢.使用的關鍵字是as(as可以省略的).
SELECT price+10 AS 打折價格 FROM product;
SELECT price+10 打折價格 FROM product;
條件查詢練習
查詢商品名稱為“花花公子”的商品所有資訊:
SELECT * FROM product WHERE pname=`花花公子`;
查詢價格為800商品
SELECT * FROM product WHERE price=800;
查詢價格不是800的所有商品
SELECT * FROM product WHERE price <> 800;
SELECT * FROM product WHERE price > 800 OR price < 800;
SELECT * FROM product WHERE NOT (price=800);
查詢商品價格大於60元的所有商品資訊
SELECT * FROM product WHERE price > 60;
SELECT * FROM product WHERE NOT (price <= 60);
查詢商品價格在200到1000之間所有商品
SELECT * FROM product WHERE price >= 200 AND price <=1000;
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;
查詢商品價格是200或800的所有商品
SELECT * FROM product WHERE price IN (200,800);
SELECT * FROM product WHERE price = 200 OR price = 800;
查詢含有`霸`字的所有商品
SELECT * FROM product WHERE pname LIKE `%霸%`;
查詢以`香`開頭的所有商品
SELECT * FROM product WHERE pname LIKE `香%`;
查詢第二個字為`想`的所有商品
SELECT * FROM product WHERE pname LIKE `_想%`;
查詢沒有分類的商品
SELECT * FROM product WHERE category_id IS NULL;
SELECT * FROM product where category_id = null;# 錯誤的 判斷空 不能用”=”
查詢有分類的商品
SELECT * FROM product WHERE category_id IS NOT NULL;
SELECT * FROM product WHERE category_id <> NULL;# 錯誤的 判斷不為空 不用”<>”
查詢所有價格大於2000的電腦商品(catetory_id是c001)
或者價格大於2000的服裝商品(catetory_id是c002)**
SELECT * FROM product WHERE (price > 2000 AND category_id = `c001`)
OR (price > 2000 AND category_id = `c002`);
SELECT * FROM product WHERE price > 2000 AND category_id IN (`c001`,`c002`);
/*
SQL語言的分類:
DDL:資料庫定義語言
他主要是對資料庫,資料庫表進行建立刪除維護等
關鍵字:create(建立),alter(修改),drop(刪除), show(查)
DCL:資料庫操縱/控制語言
控制資料庫訪問許可權
DML:資料庫操作語言
它主要是對錶中的資料進行 增刪改
關鍵字:insert(增加),delete(刪除),update(修改)等
DQL:資料庫查詢語言
它主要是對錶中的資料進行 查詢
關鍵字:select(查詢) from(從) where(條件)
*/
註釋
— 註釋
SELECT * FROM users;
/*
DDL:資料庫定義語言
主要是運算元據庫,運算元據庫表
DDL之運算元據庫:
對資料庫進行增刪改查
****增:建立一個資料庫
create database 資料庫名;//預設編號,安裝的時候您選擇的那個編號
create database 資料庫名 charset 編碼;
刪:刪除一個資料庫
drop database 資料庫名;
修:修改資料庫名字很麻煩
修改正在使用的資料庫
use 資料庫名;
查:
查詢正在使用的資料庫:
select database();
查詢所有的資料庫
show databases;
*/
增:建立一個資料庫
CREATE DATABASE db297;
CREATE DATABASE db2971 CHARSET utf8;
刪:刪除一個資料庫
DROP DATABASE db2971;
修改正在使用的資料庫
USE jjj;
查詢正在使用的資料庫
SELECT DATABASE();
查詢所有資料庫
SHOW DATABASES;
查詢某一個資料的詳細資訊
SHOW CREATE DATABASE db297;
/*
DDL之資料庫表
對資料庫表進行增刪改查
****增:建立一個表
create table 表名(
欄位名1 資料型別1(長度) [約束],
欄位名2 資料型別2(長度) [約束]
);
刪:刪除表
drop table 表名;
查:檢視錶
desc 表名; 檢視一個表的詳細資訊
show tables;檢視所有的表
改:改名字
rename table 表名 to 新表名;
*/
建立一個表,學生表(編號,姓名,年齡)
CREATE TABLE student(
sid INT PRIMARY KEY, -- 主鍵約束
sname VARCHAR(30),
sage INT
);
刪除 student表
DROP TABLE student;
檢視一個表的詳細資訊
DESC student;
檢視所有的表
SHOW TABLES;
修改表的名字
RENAME TABLE student TO students;
/*
DDL之修改表中的列
增刪改查
增:增加一個列
alter table 表名 add 列名 型別(長度) [約束]
刪:刪除一個列
alter table 表名 drop 列名;
查:檢視錶的資料結構
desc 表名;
改:修改列
可以修改的名字,型別,約束等..
修改列名:
alter table 表名 change 舊列名 新列名 型別(長度) 約束;
修改列的型別和約束
alter table 表名 modify 列名 型別(長度) 約束;
修改表的字符集
alter table 表名 character set 字符集;(一般不修改)
*/
要給students表 新增一列 “電話”
ALTER TABLE students ADD phone VARCHAR(30);
要把students表中 “電話”這一列刪除
ALTER TABLE students DROP phone;
檢視students表有多少列 分別是什麼
DESC students;
修改列名
ALTER TABLE students CHANGE sname NAME VARCHAR(30);
修改列的型別和約束
ALTER TABLE students MODIFY NAME VARCHAR(50);
/*
三個知識點:
1.介紹兩個約束
主鍵約束: primary key 被主鍵約束的列必須有唯一,而且不能為空
自動增長約束:auto_increment 被自動增長約束的列,值可以不用管
2.刪除表所有資料的兩種方式(面試題)
delete from 表名;# 刪除表的所有資料,但是自動增長值不會重置為1
truncate table 表名;# 刪除表的所有資料,並且重置自動增長值為1
truncate的底層,是先摧毀表,然後再重建表
3.亂碼問題
在DOS建立 查詢uft8編碼的資料庫資料時,會出現亂碼
解決方案:
臨時方案:
set names gbk;//臨時地把告訴資料庫 我們用gbk來查詢
永久方案:修改 my.ini的配置檔案(不建議)
*/
建立一張表,使用者(編號,使用者名稱,密碼)
CREATE TABLE users(
uid INT PRIMARY KEY AUTO_INCREMENT,# 自動增長預設是從1開始
uname VARCHAR(30),
upass VARCHAR(30)
);
插入資料
INSERT INTO users (uname,upass) VALUES (`王老`,`123321`);
INSERT INTO users (uname,upass) VALUES (`李四`,`123`);
刪除表中的所有資料
DELETE FROM users;
INSERT INTO users (uname,upass) VALUES (`王五`,`1234`);
使用truncate刪除表中的所有資料
TRUNCATE TABLE users;
INSERT INTO users (uname,upass) VALUES (`趙六`,`12345`);
/*
1.DDL:運算元據庫中物件,資料庫,表,列
***建立資料庫
create database 資料庫名;# 以預設的編碼建立資料庫
create database 資料庫名 charset 編碼名;
create database 資料庫名 character set 編碼名;
***建立表
create table 表名(
欄位1 資料型別(長度) [約束],
欄位2 資料型別(長度) [約束]
);
約束:
主鍵約束:primary key,該列的值必須唯一,並且不為空
自動增長列約束:auto_increment 該列值交給資料庫維護
2.DML:運算元據庫表中資料,對資料進行增刪改
****新增一條記錄
insert into 表名 (列名1.列名2..) values (值1,值2..);
注意:
1.列名和後面的值 必須一一對應
2.(列名1.列名2..) 這裡的列名可以寫一個或者多個
3.如果是全列名,可以省略不寫
4.如果值是數字型別的可以不加``,否則必須加上`` 或者 ""
****刪除一條記錄
delete from 表名;# 刪除表中所有資料,不會重置自動增長值
truncate table 表名;#刪除表所有資料,先把表摧毀再重建
delete from 表名 where 條件;# 這裡條件和查詢共用
****修改一條記錄
update 表名 set 欄位名=值,欄位名=值;#表中所有記錄的欄位都修改了
update 表名 set 欄位名=值,欄位名=值 where 條件;# 這裡條件和查詢共用
3.DQL:運算元據庫表中資料,對資料進行查詢
***基本查詢:
格式:
select distinct *|欄位1,欄位2 from 表名;
***條件查詢
比較條件
>,<,>=,<=,<>,=
between xx and xx (含頭行尾)
in (值1,值2)
like `_a%` 模糊查詢
is null ,is not null 判斷空或者不空
邏輯條件
與 and
或 or
非 not
*/
點滴記錄,共同進步。