運算元據庫表

Starzhang發表於2019-01-23

/*

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

*/

點滴記錄,共同進步。

相關文章