SQL語句知識點總結


DDL:數據定義語言 操作數據庫: 啟動服務:net start MySQL 登錄:  mysql -h localhost -u root -p root 創建數據庫:create database 數據庫名稱; 刪除數據庫:drop database 數據庫名稱; 常用的命令 查看所有的數據庫:show databases; 操作表: 創建表:create table 表名(字段描述,字段描述); 字段描述:字段名稱 字段類型 [約束] 修改表: 格式: alter table 表名… 修改表名: alter table 舊表名 rename to 新表名; 添加字段: alter table 表名 add [column] 字段表述 alter table user add password varchar(20); 修改字段名: alter table 表名 change 字段名稱 新字段描述; alter table user change password pwd varchar(20); 修改字段描述: alter table 表名 modify 字段名稱 字段類型[約束]; alter table user modify pwd int ; 刪除字段: alter table 表名 drop 字段名稱; alter table user drop pwd; 刪除表: drop table 表名; 常用的命令: 切換或者進入數據庫 :use 數據庫名稱; 查看當前數據庫下的所有表  :show tables; 查看表結構:desc 表名; 查看建表語句:show create table 表名; 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 DML:數據操作語言 操作對象:記錄(行) 關鍵字:insert update delete 插入: 格式:insert into values (字段值1,字段值2,,,,,,,); 注意:默認插入全部字段,必須保證values后面的內容和表結構順序保持一致 字段類型為數字可以省略引號,引號建議使用單引號; 格式二:insert into 表名(字段名,字段名,)values (字段值,字段值,); 修改: update 表名 set 字段名=字段值,字段名1=字段值1….[where 條件]; update user set username=’jerry’ where username=’jack’; 刪除: 格式: delete from 表名[where 條件] 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 DQL:數據查詢語言 操作對象:記錄 關鍵詞:select ….from 表名  where 條件  group by having  分組字段  order by排序字段 ase|desc 查看所有:select * from 表名; 查看指定字段: select 字段名,字段名from 表名; 去重操作  distinct select distinct 字段名,字段名 from 表名; 對結果進行運算,不影響數據庫的值 select 表名+10 from 表名 可以起表名  字段名 [as] 別名 如果別名有空格記得加引號; 模糊匹配 格式:字段名  Like “匹配規則”; 匹配內容  % “龍”   值為龍 “%龍”   值以龍結尾 “龍%”  值以龍開頭 “%龍%”   值包含龍 匹配內容  “__”占兩個位置 條件查詢: select * from 表名 where 字段名 =xx or 字段名=xx or 字段名=xx; select * from 表名 where 字段名in(38,68,98); DQL高級查詢——————————————————- 排序查詢:select * from 表名 order by 字段名;  asc 升序  desc 降序 select * from 表名 where 條件 order by asc;(帶條件) 聚合函數: * sum()求和       avg()平均數     max()   min()    count()計數求和; 對一列進行計算  返回值是一個  ,特點忽略null值 select sum(字段名) from 表名; select avg(字段名)  from 表名; round(值,保留小數位)四舍五入 select count(*) from 表名;

分組:使用group by  在where 后面 order by 前面 select cno,count(*) from 表名 group by con; select cno,sum(字段名) from 表名 group by cno having sum(字段名)>200; 注意: where 和having 的區別 1,where 是對分組前的數據進行過濾  having 是對分組后的數據進行過濾 2,where 后面不能使用聚合函數,having可以

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 數據數據類型: Java              mysql byte            tinyint short       smallint int             int long            bigint char/String varchar|char varchar:可變長度 char:固定長度 boolean     tinyint|int代替 float|double    float|double 注意:double(5,2):該小數長度為5,小數占兩個 最大值999.99 double

java.sql.Date      Date日期 java.sql.Time      Time 時間 java.sql.Timestame   timestamp 時間戳  若給定的時間為null會把數據庫當前時間賦值 datetime   日期+時間

java.sql.clob(長文本)    text ajva.sql.Blob(二進制)    blob

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 約束: 作用:為了保證數據的有效性和完整性 mysql中的常見約束: 主鍵約束:primary key  唯一約束:unique 非空約束:not null 外鍵約束:foreign key 主鍵約束:被主鍵約束修飾過的字段  唯一  非空 注意:一張表只能有一個主鍵,這個主鍵可以包含多個字段 方式1:在建表的時候添加約束 格式:字段名稱  字段類型  primary key 方式2:在約束區域添加約束   格式   :primary key 所有的字段都聲明完成后,就是約束區域 格式:primary Key (字段名,字段名2) 方式3;建完表后,通過修改表結構來添加約束 alter table 表名  add primary key(字段名,字段名2); 兩個主鍵:聯合主鍵,只有兩個字段都一樣才認為是一條記錄

唯一約束:被修飾過的字段唯一,對null不起作用 方式1:在建表的時候添加約束 格式:字段名稱  字段類型  unique 方式2:在約束區域添加約束   格式   :unique 方式三:建表之后:alter table 表名 add unique(字段名,字段2)添加聯合唯一 alter table 表名  add unique  (字段1);給一個添加唯一

非空約束:被修飾過的字段非空 格式 :create table nn (id int not null) ;

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 truncate  清空表 格式:truncate  表名;刪除表 ,重新創建一個新表 和delete  from  區別 : delete  屬於 DML(數據操作語言) 語句   truncate 屬於DDL(數據定義語言) delete 逐條刪除 刪除數據不會刪除表     truncate  刪除表,重新創建一個新表  id會重新開始

auto_increment  自增 要求: 被修飾的字段類型支持自增,一般為int 被修飾的字段必須是一個key  一般是primary key

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 多表操作,創建多表,尅表述表與表之間的關系 把網上商城里面用到的實體創建成表,並且將他們之間建立關系 技術分析:sql ………………… 網上商城的實體 用戶   訂單   商品   分類 常見的關系: 一對多:用戶和訂單   分類和商品 多對多:訂單和商品     學生和課程 一對一:丈夫和妻子    國家領導人和國家 ER圖可以描述實體和實體的關系 實體用矩形表示 屬性用橢圓表述 關系用菱形表示

在開發中,我們將一對多的關系,一方我們稱為一表或者主表,多方稱為多表或者從表。 為了表示一對多的關系,一般會在多表的一方,會添加一個字段,字段名自定義(建議:主表名_id)  字段類型一般和主表的主鍵類型保持一致。我們稱這個字段為外鍵。 例如:用戶和訂單 用戶表 create table user ( id int primary key auto_increment, username varchar(20) ); 訂單表 create table orders( oid int primary key auto_increment, totaprice double , user_id  int  ); ERR 為了保證數據的有效性和完整性,應該添加約束(外鍵約束) 在多表的一方,添加外鍵約束 格式: alter table 多表名  add foreign key (外鍵名稱) references 一表名(主鍵);

如果里面有垃圾數據就不能添加外鍵,因為他的目的就是維護數據的有效性和完整性。

添加了外鍵以后有如下特點: 1.主表中不能刪除從表中已經引用的數據 2.從表中不能添加主表中不存在的數據 當然也可以通過java來進行維護數據的有效性和完整性

開發中如何處理一對多? 在多表中添加一個外鍵,名稱一般為主表的名稱_id  字段類型一般和主表的主鍵的類型保持一致,為了保證數據的有效性和完整性需要在多表的外鍵上添加外鍵約約束。

、、、、、、、、、、、、、、、、、、、 多對多 商品和訂單

多對多:在開中我們一般引入一個中間表,在中間表中存放兩張表的主鍵,一般還會將這兩個主鍵設置成中間表的聯合主鍵。將多對多拆分成兩個一對多。 為了保證數據的有效性和完整性,在中間表上添加兩個外鍵約束即可, 創建商品表; create table product( id int primary key auto_increment, name varchar(20), price double ); 創建中間表: create table orderitem( oid int , pid int ); 為中間表添加外鍵約束 alter table orderitem add foreign key(oid) references orders(oid); alter table orderitem add foreign key(pid) references product(id);

在開發中處理多對多引入一張中間表,然后存放兩張表的主鍵,一般會將這個字段設置成聯合主鍵,這樣就可以將多對多的關系拆分成兩個一對多 為了保證數據的有效性和完整性 需要在中間表添加兩個外鍵約束。

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 案例3多表查詢 技術分析 內連接 外連接 子查詢 /////////////////////////////////////////////////////////////// 笛卡爾積: 多長表無條件的聯合查詢,沒有任何意義 select  a.,b. from a,b; 內連接: 格式1: 顯示的內連接:select a.,b. from a [inner] join b on ab的連接條件 格式2: 隱式的內連接:select a.,b. from a,b where ab的連接條件 例如: select user.,orders. from user,orders where user.id=orders.user_id; select user.,orders. from user join orders on user.id=order.user_id;

外連接:意思先展示a表的所有數據,根據條件關聯查詢join右邊的表,符合條件則展示出來。不符合就以null值展示。

左外連接:select a.,b. from a left [outer] join b on 連接條件 例如:查詢所有用戶的訂單詳情 select user.,orders. from user left join orders on user.id=user_id; 右外連:select a.,b. from a right [outer] join a on 連接條件 先展示join右邊表的數據,根據條件關聯查詢左邊的表的,符合條件則展示,不符合條件則以null展示。 例如:select orders.,user. from user right join orders on users.id=user_id;

子查詢:一個查詢依賴於另一個查詢 查詢用戶為張三的訂單詳情 1.先查詢張三的id select id from user where username=”張三“; 2.再查詢張三的訂單 select * from orders where user_id=1; 子查詢:兩個合二為一 select * from orders where user_id=(select id from user where username=”張三“;); 查詢訂單價格大於三百的用戶信息 1.查詢出訂單價格大於300的用戶的id select  user_id from orders where price>300; 2.再通過訂單id查詢出用戶的信息   select * from user where id in(3,3,5,,null); 整合:select * from user where id in(select  user_id from orders where price>300); 查詢出訂單價格大於300的訂單信息以相關的用戶信息。 內連接:select orders.,user. from orders,user where user.id=orders.user_id and orders.price>300;

給表其別名;表 [as] 別名

一對一: 在開發中,例如person idcard 思路:將兩個實體和二為一 思路2:在一個表上將這個表的主鍵設置成外鍵並且添加外鍵約束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM