SQL快速入門

關系化數據庫
保存關系模式數據的容器
關系模式是對業務對象實體,屬性以及關系的抽象,提煉需求的名詞是建立實體關系模型常用的方法。要了解E-R實體關系圖的繪制。
常用關系數據庫
Microsoft SQL Server;微軟公司產品,中等規模數據庫,運行在window平臺,一般結合.net開發平臺使用
Oracle;甲骨文公司產品,大型商業數據庫,可以運行在任何操作系統上,經常與java一起使用。
MySQL;最初是一個開源免費的數據庫產品,中小型數據庫,輕便,互聯網行業主流數據庫
SQLITE;嵌入式數據庫,安卓內部主要數據庫。

數據庫的連接與組成
連接網絡上的數據庫
mysql -h ip -P port -u root -p 回車 輸入密碼
show databases; 查看所有數據庫
安裝mysql后會自帶兩個數據庫mysql,test
mysql存放一些數據庫的核心數據,用戶權限密碼等
test用來測試的數據庫
在一個服務器上,可以使用多個數據庫database,一個數據庫內部創建對個數據表table
在數據庫中存在多個用戶,每個用后都有相應的操作權限,默認有個root用戶,是超級管理員具有所有權限
table表的一行稱為一條記錄,一般對應著java程序中的一個對象

SQL語言
結構化查詢語言
特性
1,非過程性語言,每一條SQL語句獨立執行沒有先后的依賴關系
2,官方提供的數據庫標準語言,任何數據庫都必須支持SQL語言語法
3,SQL是用來存取關系型數據庫的語言,具有查詢,操縱,定義和控制關系型數據的四方面功能。
為加強SQL的語言能力,各廠商增強了過程性語言的特征,提供SQL語言的擴展

SQL語言分類
DDL;數據定義語言,用來定義數據庫的對象,如數據表,視圖,索引
DML;數據操縱語言,在數據庫表中更新,增加和刪除記錄,如update,insert,delete
DCL;數據控制語言,用戶設置用戶權限和控制事務語句,如grant,revoke,if else,while,begin transaction
DQL;數據查詢語言,數據查詢語言,如select

SQL語句的使用
創建數據庫
CREAT DATABASE[IF NOT EXISTS] db_name;
character set 編碼表 collate比較方式;//為數據庫指定字符集合比較方式,如果不指定使用默認的編碼集和比較方式
查看數據庫
show creat database db_name;查看當前數據庫編碼集
select database();查看當前使用的數據庫
刪除數據庫
drop database db_name;
修改數據庫編碼
alter database db_name character set 編碼表
切換數據庫
use db_name;如果想要對數據庫進行操作,需要切換到指定的數據庫

創建數據表
create table table_name(列名 類型(長度),列名 類型(長度))character set編碼表
如果沒有指定編碼表會使用數據庫默認的
如 create table user(
id int,
name varchar(40),
password varchar(40),
birthday date
);
java數據類型與數據庫數據類型的對應關系,除了字符串類型必須要指定長度之外其他的都可以使用默認長度
字符串 VARCHAR,CHAR對應string,前者是長度可變經常使用,后者是長度固定的性能好些
大數據類型 BLOB,TEXT;前者主要存些字節文件,后者存儲字符文件
數值型 TINYINT,SMALLINT,INT,BIGINT,FLOAT,DOUBLE分別對應byte,short,int,long,float,double
邏輯型 BIT
日期型 DATE,TIME,DATETIME,TIMESTAMP
創建表明之后可以通過desc 表名查看表結構

單表的約束
定義主鍵約束;主鍵約束唯一標識一條記錄,主鍵不能為空不能重復,主鍵如果為數字類型一般設置主鍵自動增長auto_increment
primary key
唯一約束;該字段內容不允許重復
unique
定義非空約束;值不能為空
not null
如 create table employee(
id int primary key not null auto_increment,
name varchar(40) unique not null
gender varchar(10) not null,
entry_date date not null,
birthday date not null,
job varchar(20) not null,
resume longtext not null
salary double not null,
);

數據表修改
alter table使用該語句增加,修改或刪除列的語法
alter table 表名 add 列名 類型(長度) 約束;//增加
alter table 表名 modify 列名 類型(長度) 約束;//修改
alter table 表名 drop 列名 //刪除
修改已有數據表一列的名稱
alter table 表明 change 舊列名 新列名 類型(長度) 約束
修改表名 rename table 舊表名 to 新表名
修改表的字符集 alter table 表名 charater set utf8;要注意表的編碼集與數據庫的編輯不是同一個
show tables 查看當前數據庫中的所有表
alter primary修改主鍵

數據庫CRUD語句
Insert語句
Insert into 表名(列名,列名。。。) values(值,值,。。。)
要注意列與值的相互對應。
Insert into employee(id,name,gender,entry_date,birthday,job,resume,salary) values(null,'zs','mall','2012-10-10','1990-01-10','hr',3000,'he is a man');
值中除了數字不用加單引號之外,其他所有值都要加單引號
在插入數據時,如果有些列存在默認值或者可以為null,插入可以省略這些列,只需要關注不能為空的列就好
另外在插入數據的時候,也可以省略所有列名,但是必須按照表的順序插入所有列的值
要注意SQL的編碼問題。

Update語句
update 表名 set 列名=值,列名=值 where 條件語句
注意如果沒有寫where語句限制條件,則會將該列的所有數據都進行更改
update employee set salary=5000;//這句話把所有員工的新水都改為5000
update emploee set salary=5000 where name='zs';將zs的薪水改為5000,要注意此處算是SQL語句的餓一個bug條件比較時可能不區分大小寫,如果ZS的薪水存在也會更改,需要再name前加入關鍵字binary使比較更精確
update employee set salary=5000 where binary name='zs';
update employee set salary=salary+1000 where binary name='zs';在原先的擠出上增加


Delete語句
delete from 表名 where 條件語句
刪除不能刪除某一列的值,只能刪除一行記錄,如果不增加where條件語句會將表中的所有記錄刪除,但是不會刪除表,
表的刪除使用drop語句
另外truncate 表名 語句也可以刪除所有表記錄,但是不可恢復,
truncate語句原理是將表刪除,然后重新建張表,不可恢復數據,而delete語句可以刪除一行記錄,也可以刪除整個表的所有記錄,他的原理是將所有行的記錄刪除,并不會將表刪除,在一個事務中是可以回滾rollback恢復的。刪除整表時truncate語句性能好些,不會占用資源。

select語句
select *|指定列名 from 表名
select * from employee 查看表中所有的數據
select gendet from employee 查看表中的gender列數據
select distinct gender from employee 查看表中的gender列數據,不顯示重復,distinct關鍵字就是去重的。

該使用什么語句應該根據具體的需求,插入語句insert 刪除語句delete 都是對整行的操作 update,select是對列的操作,update可以對整列也可以加入限制條件對列的一部分操作,select只能對整列進行操作。

查詢時進行運算
select 列名運算表達式 from 表名
select 列名 as 列別名 from 表名
select name,english+10 from scores;英語成績列都加十分
select name,english +math+chinese as 總分 from scores;注意as可以省略,該語句的作用是查詢并求總分,總分顯示列english +math+chinese更改為別名總分

查詢時進行過濾查詢
使用where語句進行過濾查詢
select english+math+chinese as 總分 where name='zs'查詢zs的總分
select * from scores where english >80;查詢英語分數大于80的記錄

select語句中常用的運算符
> < <= >= = <>不等于
between...and...
select * from scores where chinese between 70 and 80;注意先寫小的后寫大的
in()在幾個固定值中取值。
select * from scorse where chinese in(70,80,90);查詢語文成績是70和80,90中的記錄
like 模糊查詢結合%通配符和_通配符使用,%代表任意長度字符串,_表示單個字符
select * from scores where name like '老%'查詢名字以老開頭的所有記錄
select * from scores where name like '老_'查詢名字以老開頭的兩字名字額所有記錄
is null ,is not null ,注意不可以寫=null,因為null本身就是一個值,代表1/2;0是false 1是true;
當and與or同時使用時,and的優先級大于or

查詢時進行排序order by語句
select * from 表名 where 條件語句 order by 列名 asc|dsc,列名asc|dsc
asc是升序,dsc是降序

分組函數---結合查詢分組進行數據統計
count(*)返回查詢結果記錄的條數
select count(*) from scores where math>90;返回數據成績大于90的記錄共有多少條
sum(列名)對一列的數據求和
select sum(match) from scores ;求數學總成績
select sum(match),sum(chinese) from scores 求語文數學各科的成績總和
select sum(match+chinese) from scores 求語文數學的總成績
avg對列數據求平均值
select avg(math) from scores 求數學的平均值,對于null值是不參與運算的
select avg(math+chinese) from scores 求總分的平均分,同樣有過有一條記錄有個null值他的其他成績也補參與運算
max,min對一列數據求最值。

分組
分組的目的是為了統計,分組的前提是有重復數據,按照重復數據進行分組歸類
如對不同部門按照部門分組,不同班級按照班級分組。
group by語句,要注意where是不能與group by同時使用的
having關鍵字,添加分組查詢的條件
select product,sum(price) from oders group by product having sum(price)>100

數據庫數據的備份和恢復
備份數據庫 mysqldump -u 用戶名 -p 數據庫名>備份文件名.sql
數據庫恢復
首先創建一個空的數據庫然后 mysql -u 用戶名 p 數據庫名 < 文件名.sql 在cmd中使用

外建約束的使用
多表設計
1,建立多張表
2,通過外建約束建立表之間的從屬關系表,
alter table employee add foreign key(dept_id) references dept(id);對員工表添加外建約束,將部門id列與部門表的id列相關聯。
添加了外建約束后,不能隨便取值,取值是引用表存在主鍵值,也不能隨便刪除值。

?

轉載于:https://www.cnblogs.com/ss561/p/4620858.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258652.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258652.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258652.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Faster RCNN minibatch.py解讀

minibatch.py 的功能是&#xff1a; Compute minibatch blobs for training a Fast R-CNN network. 與roidb不同的是&#xff0c; minibatch中存儲的并不是完整的整張圖像圖像&#xff0c;而是從圖像經過轉換后得到的四維blob以及從圖像中截取的proposals&#xff0c;以及與之對…

oracle精簡版_使用Entity Framework Core訪問數據庫(Oracle篇)

前言哇。。看看時間 真的很久很久沒寫博客了 將近一年了。最近一直在忙各種家中事務和公司的新框架 終于抽出時間來更新一波了。本篇主要講一下關于Entity Framework Core訪問oracle數據庫的采坑。。強調一下&#xff0c;本篇文章發布之前 關于Entity Framework Core訪問oracl…

interrupt、interrupted 、isInterrupted 區別

interrupt&#xff1a;調用方法&#xff0c;是線程處于中斷狀態&#xff0c;但是這個方法只是讓線程設置為中斷狀態&#xff0c;并不會真正的停止線程。支持線程中斷的方法就是在堅持線程中斷狀態&#xff0c;一旦線程中斷狀態被設置為中斷&#xff0c;就會拋出異常。interrupt…

java String部分源碼解析

String類型的成員變量 /** String的屬性值 */ private final char value[];/** The offset is the first index of the storage that is used. *//**數組被使用的開始位置**/private final int offset;/** The count is the number of characters in the String. *//**String中…

python在材料模擬中的應用_基于Python的ABAQUS二次開發及在板料快速沖壓成形模擬中的應用...

2009doi:1013969/j1issn1100722012120091041013基于Python的ABAQUS二次開發及在板料快速沖壓成形模擬中的應用(北京航空航天大學飛行器制造工程系,北京100191)吳向東劉志剛萬敏王文平黃霖摘要:采用Python腳本語言對ABAQUS的前處理模塊進行二次開發,討論了Python腳本在ABAQUS二次…

Doxygen簡介

&#xff08;轉自&#xff1a;http://www.cnblogs.com/liuliunumberone/archive/2012/04/10/2441391.html&#xff09; 一&#xff0e;什么是Doxygen? Doxygen 是一個程序的文件產生工具&#xff0c;可將程序中的特定批注轉換成為說明文件。通常我們在寫程序時&#xff0c;或多…

javascript之閉包理解以及應用場景

1 function fn(){2 var a 0;3 return function (){4 return a;5 } 6 }如上所示&#xff0c;上面第一個return返回的就是一個閉包&#xff0c;那么本質上說閉包就是一個函數。那么返回這個函數有什么用呢&#xff1f;那是因為這個函數可以調用到它外部的a…

faster rcnn學習之rpn、fast rcnn數據準備說明

在上文《 faster-rcnn系列學習之準備數據》,我們已經介紹了imdb與roidb的一些情況&#xff0c;下面我們準備再繼續說一下rpn階段和fast rcnn階段的數據準備整個處理流程。 由于這兩個階段的數據準備有些重合&#xff0c;所以放在一起說明。 我們并行地從train_rpn與train_fas…

sql server規范

常見的字段類型選擇 1.字符類型建議采用varchar/nvarchar數據類型2.金額貨幣建議采用money數據類型3.科學計數建議采用numeric數據類型4.自增長標識建議采用bigint數據類型 (數據量一大&#xff0c;用int類型就裝不下&#xff0c;那以后改造就麻煩了)5.時間類型建議采用為dat…

關于標準庫中的ptr_fun/binary_function/bind1st/bind2nd

http://www.cnblogs.com/shootingstars/archive/2008/11/14/860042.html 以前使用bind1st以及bind2nd很少&#xff0c;后來發現這兩個函數還挺好玩的&#xff0c;于是關心上了。在C Primer對于bind函數的描述如下&#xff1a;“綁定器binder通過把二元函數對象的一個實參綁定到…

CSS偽類

一、首字母的顏色字體寫法 p:first-letter 二、文本的特殊樣式設置 first-line css偽類可與css類配合使用 偽元素只能用于塊級元素 轉載于:https://www.cnblogs.com/boyblog/p/4623374.html

php 結構體_【開發規范】PHP編碼開發規范下篇:PSR-2編碼風格規范

之前的一篇文章是對PSR-1的基本介紹接下來是PSR-2 編碼風格規范&#xff0c;它是 PSR-1 基本代碼規范的繼承與擴展。PSR-1 和PSR-2是PHP開發中基本的編碼規范&#xff0c;大家其實都可以參考學習下&#xff0c;雖然說每個開發者都有自己熟悉的一套開發規范&#xff0c;但是我覺…

faster rcnn學習之rpn訓練全過程

上篇我們講解了rpn與fast rcnn的數據準備階段&#xff0c;接下來我們講解rpn的整個訓練過程。最后 講解rpn訓練完畢后rpn的生成。 我們順著stage1_rpn_train.pt的內容講解。 name: "VGG_CNN_M_1024" layer {name: input-datatype: Pythontop: datatop: im_infotop: …

BitMapData知識 轉

Bitmap和BitmapData 2010.5.25 smartblack整理 一、flash.display.Bitmap類及其兩個子類 1、繼承自DisplayObject&#xff0c;和InteractiveObject平級&#xff0c;所以無法調度鼠標事件&#xff0c;可以使用額外的包裝容器(Sprite)來實現偵聽。 2、只支持GIF、JPEG、PNG格式&a…

Android學習之高德地圖的通用功能開發步驟(二)

周一又來了&#xff0c;我就接著上次的開發步驟&#xff08;一&#xff09;來吧&#xff0c;繼續把高德地圖的相關簡單功能分享一下 上次寫到了第六步&#xff0c;接著寫第七步吧。 第七步&#xff1a;定位 地圖選點 路徑規劃 實時導航 以下是我的這個功能NaviMapActivity的…

Oracle中分區表中表空間屬性

Oracle中的分區表是Oracle中的一個很好的特性&#xff0c;可以把大表劃分成多個小表&#xff0c;從而提高對于該大表的SQL執行效率&#xff0c;而各個分區對應用又是透明的。分區表中的每個分區有獨立的存儲特性&#xff0c;包括表空間、PCT_FREE等。那分區表中的各分區表空間之…

期刊論文格式模板 電子版_期刊論文的框架結構

最近看到很火的一句話&#xff0c;若不是生活所迫&#xff0c;誰愿意把自己弄得一身才華。是否像極了正想埋頭苦寫卻毫無頭緒的你&#xff1f;發表期刊論文的用途 &#xff1a;1: 學校或者單位評獎&#xff0c;評優&#xff0c;推免等2&#xff1a;申領學位證(如畢業硬性要求&a…

faster rcnn學習之rpn 的生成

接著上一節《 faster rcnn學習之rpn訓練全過程》&#xff0c;假定我們已經訓好了rpn網絡&#xff0c;下面我們看看如何利用訓練好的rpn網絡生成proposal. 其網絡為rpn_test.pt # Enter your network definition here. # Use ShiftEnter to update the visualization. name: &q…

初學java之常用組件

1 2 import javax.swing.*;3 4 import java.awt.*;5 class Win extends JFrame6 {7 JTextField mytext; // 設置一個文本區8 JButton mybutton;9 JCheckBox mycheckBox[]; 10 JRadioButton myradio[]; 11 ButtonGroup group; //為一…

anaconda 安裝在c盤_最省心的Python版本和第三方庫管理——初探Anaconda

打算把公眾號和知乎專欄的文章搬運一點過來。 歷史文章可以去關注我的公眾號&#xff1a;不二小段&#xff0c;或者知乎&#xff1a;段小草。也歡迎來看我的視頻學Python↓↓↓跟不二學Python這篇文章可以作為Python入門的第一站可以結合這期視頻來看&#xff0c;基本上是這期視…