數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今五十年前,隨着信息技術和市場的發展,特別是二十世紀九十年代之後,數據管理再也不僅僅是存儲和管理數據,而轉變成用戶所須要的各類數據管理的方式。數據庫有不少種類型,從最簡單的存儲有各類數據的表格到可以進行海量數據存儲的大型數據庫系統都在各個方面獲得了普遍的應用。數據庫
數據庫常見產品服務器
美國Microsoft公司推出的一種關係型數據庫系統。SQLServer是一個可擴展的、高性能的、爲分佈式客戶機/服務器計算所設計的數據庫管理系統,實現了與WindowsNT的有機結合,提供了基於事務的企業級信息管理系統方案。數據結構
其主要特色以下:分佈式
(1)高性能設計,可充分利用WindowsNT的優點。ide
(2)系統管理先進,支持Windows圖形化管理工具,支持本地和遠程的系統管理和配置。函數
(3)強壯的事務處理功能,採用各類方法保證數據的完整性。工具
(4)支持對稱多處理器結構、存儲過程、ODBC,並具備自主的SQL語言。 SQLServer以其內置的數據複製功能、強大的管理工具、與Internet的緊密集成和開放的系統結構爲廣大的用戶、開發人員和系統集成商提供了一個出衆的數據庫平臺。性能
設置密碼優化
開啓SA用戶。spa
點擊屬性,啓用遠程鏈接。
重啓服務,使其生效。
命令:services.msc
TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING
1433端口是開啓的。當咱們關閉服務後,端口也將關閉。
數據查詢語言DQL
DQL:(Data Query Language) SELECT 數據查詢語言
數據操縱語言DML
如insert,delete,update,select(插入、刪除、修改、檢索)
數據定義語言DDL
如drop,alter,truncate等都是DDL
數據控制語言DCL
DCL(Data Control Language)是數據庫控制語言。是用來設置或更改數據庫用戶或角色權限的語句,包括(grant,deny,revoke等)語句。在默認狀態下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人員纔有權力執行DCL
新建數據庫
限制增加:
數據庫的文件後綴
ydxx.mdf
日誌文件後綴
ydxx _log.ldf
bit:bit數據類型表明0,1或NULL,就是表示true,false.佔用1byte.
int:以4個字節來存儲正負數.可存儲範圍爲:-2^31至2^31-1.
smallint:以2個字節來存儲正負數.存儲範圍爲:-2^15至2^15-1
tinyint: 是最小的整數類型,僅用1字節,範圍:0至此^8-1
numeric:表示的數字能夠達到38位,存儲數據時所用的字節數目會隨着使用權用位數的多少變化.
decimal:和numeric差很少
float:用8個字節來存儲數據.最多可爲53位.範圍爲:-1.79E+308至1.79E+308.
real:位數爲24,用4個字節,數字範圍:-3.04E+38至3.04E+38
datatime:表示時間範圍能夠表示從1753/1/1至9999/12/31,時間能夠表示到3.33/1000秒.使用8個字節.
smalldatetime:表示時間範圍能夠表示從1900/1/1至2079/12/31.使用4個字節.
char:長度是設定的,最短爲1字節,最長爲8000個字節.不足的長度會用空白補上.
varchar:長度也是設定的,最短爲1字節,最長爲8000個字節,尾部的空白會去掉.
text:長寬也是設定的,最長能夠存放2G的數據.
nchar:長度是設定的,最短爲1字節,最長爲4000個字節.不足的長度會用空白補上.儲存一個字符須要2個字節.
nvarchar:長度是設定的,最短爲1字節,最長爲4000個字節.尾部的空白會去掉.儲存一個字符須要2個字節.
ntext:長度是設定的,最短爲1字節,最長爲2G.尾部的空白會去掉,儲存一個字符須要2個字節.
money:記錄金額範圍爲:-92233720368577.5808至92233720368577.5807.須要8 個字節.
smallmoney:記錄金額範圍爲:-214748.3648至214748.36487.須要4個字節.
timestamp:該數據類型在每個表中是惟一的!當表中的一個記錄更改時,該記錄的timestamp字段會自動更新.
uniqueidentifier:用於識別數據庫裏面許多個表的惟一一個記錄.
binary:固定長度的二進制碼字符串字段,最短爲1,最長爲8000.
varbinary:與binary差別爲數據尾部是00時,varbinary會將其去掉
image:爲可變長度的二進制碼字符串,最長2G.
主鍵
在相續創建數據庫
分離數據庫表,表名:bj(班級的意思)
完善表單
第一種:單行
select * from bj --select * from bj |
第二種:多行
select * from bj /*select * from bj*/ |
查詢全部:
Select * from 表名
select * from bj |
查詢指定列
select 列名,列名 from 表名
select name,sex,age from bj |
條件查詢 where字句
SELECT 列名 FROM 表名 where 條件
select*from bj where name='羊大仙' |
查年齡大於10歲的全部記錄
select * from bj where age>10 |
查詢全部人的數量(count 聚合函數)
select COUNT(*) from bj |
範圍查詢(between)
select*from bj where id between 2 and 8 |
查詢全部不等於23歲的記錄
select * from bj where age<> 23 |
1,百分號表明全部,但不包括空
select * from bj where address like'%' |
2,匹配中間
select*from bj where phone like '%22%' |
3.查詢姓名中包含姓羊的
select * from bj where name like'%羊%' |
4,查詢電話號碼中包含「9 」的
select * from bj where phone like'%9%' |
,5匹配開頭(匹配電話號碼前包含「1」的)
select*from bj where phone like '1%' |
6.匹配結尾(匹配電話號碼後結尾包含「4」的)
select*from bj where phone like '%4' |
7,匹配開頭和結尾(開頭爲「1」,結尾爲「4」的)
select*from bj where phone like '1%4' |
8,匹配單個字符(匹配一個後面爲33的一個數)。
select*from bj where phone like '_33%' |
9,匹配多個字符
select*from bj where phone like '_[a-z-1-9]7%' |
1
10,不匹配
select*from bj where phone like '_![8][!7]%' |
1,查詢非null
select*from bj where phone is not null |
2.查詢null值
select*from bj where address is null |
1,AND查詢
SELECT*FROM bj where name='羊大仙' and sex='男' |
2,OR查詢
SELECT*FROM bj where name='羊大仙' or sex='女' |
3,OR進行查詢
select * from bj where id=5 or id=7 or id=1 |
3,IN查詢
select * from bj where id=5 or id=7 or id in(1,3,5,7) |
4,NOT IN 查詢
select * from bj where id not in(1,3,5,7) |
1,查詢前兩行
SELECT TOP 3 * FROM BJ |
2附加語句
2.1:查詢前三行ID大於6 且ID不等於7不等於8的值
SELECT TOP 3 * FROM BJ where id>6 and id<>7 and id<>8 |
2.2:查詢前三行ID大於6 且ID不等於7不等於8的值(優化版)
SELECT TOP 3 * FROM BJ where id>6 and id not in(7,8) |
順序語句
1,ACS(默認、正序)
SELECT * FROM BJ order by id ASC select * from bj order by age,id |
2,DESC(倒敘)
SELECT * FROM BJ order by id DESC |
3,按照年齡從小到大查詢
select * from bj order by age asc |
4,按照年齡從大到小查詢
select * from bj order by age desc |
5.1,查詢表的列(正確)
select * from bj order by 7 select * from bj order by 1,2,3,4,5,6,7 |
5.2,查詢表的列(錯誤)只有7列
select * from bj order by 8 select * from bj order by 1,2,3,4,5,6,7,8 |
DISTINCT 去除重複數據
select distinct age from bj order by 1 |
在數據庫中,選擇數據庫關係圖,右鍵 ,新建數據庫關係圖。而後進行選表
INSERT INTO bj (列1, 列2,...) VALUES (值1, 值2,....)
第一種:完整寫法
insert into bj (id,name,sex,age,greadname,phone,address) values('14','阿花','女','20','九年級','1878664624834','重慶市南岸區南坪協信城') |
第二種:簡單寫法
(寫法以下,可是id要是自動增加的狀況是使用有效,id不是自動增加的話不能執行,本人id不是自動增加,全部沒法執行,僅供參考參考)
insert into student values ('小芳','女','18','初中','137694743','北京市昌平區回龍觀'); |
更改列名顯示名稱(加as)
select COUNT(name) as'姓名' from bj where name='羊大仙' |
delete from bj where id=16 |
經過模糊查詢刪除姓胖的
delete from bj where name like '胖%' |
語句執行前
語句執行後
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
將name爲‘羊大仙’的修改成‘胖子’
update bj set name='胖子' where name='羊大仙' |
執行語句前
執行語句後
or
把胖妹的的地址改爲'羊大仙的家裏'
update bj set address='羊大仙的家裏' where name='胖妹' |
語句執行前
語句執行後
把性別爲男的年級所有改爲學前班
update bj set sex='男' where greadname='學前班' |
執行語句前
執行語句後
首先創建好兩個數據庫
第一個
第二個
開始創建主外鍵
在右鍵數據庫關係圖》新建數據庫關係圖》選本身創建的哪啊兩個表》添加》在自命名保存
查看數據庫:yyyyy
查看數據庫:ydxx
在數據庫yyyyy中添加數據
查看(應該以前添加過數據有刪除,因此這裏的id從24開始增加的)
開始在ydxx表中插入外鍵關聯
插入成功
查看
插入沒有的id值
執行命令
結束。。。。。
更改列查詢
select id as '學好',name as '姓名', age as '年齡',sex as '性別',gradeid as '年齡',address as '地址',phone as '電話' from ydxx |
第 一種:兩表聯查
select ydxx.id as '學號',name as '姓名', age as '年齡','年齡',address as '地址',phone as '聯繫方式',yyyyy.gradename as '班級' from ydxx , yyyyy |
子查詢是一個嵌套在 SELECT、INSERT、UPDATE 或 DELETE 語句或其餘子查詢中的查詢。任何容許使用表達式的地方均可以使用子查詢。在此示例中,子查詢用做 SELECT 語句中名爲 MaxUnitPrice 的列表達式。
select ydxx.id as '學號',name as '姓名', age as '年齡',sex as '性別', address as '地址',phone as '聯繫方式', (select gradename from yyyyy where yyyyy.id=ydxx.gradeid) from ydxx |
查詢阿宗在那個班級
select yyyyy.gradename from yyyyy where id = (select gradeid from ydxx where name = '阿宗') |
查詢二年級的全部學生
select name,age,sex,gradeid from ydxx where ydxx.gradeid=(select id from yyyyy where gradename='二年級') |
查詢二年級的全部學生
select ydxx.name,ydxx.sex, ydxx.age from ydxx where ydxx.gradeid =(select id from yyyyy where gradename like '二年級') |
嵌套子查詢
select name,sex,(select (select 1+5)+2) as '分數' from ydxx |
SQL Top
SQL Like
SQL In
SQL Join
SQL Inner Join
SQL Union
聚合函數
聚合對一組值執行計算,並返回單個值。除了 COUNT 之外,聚合函數都會忽略空值。聚合函數常常與 SELECT 語句的 GROUP BY 子句一塊兒使用
聚合函數在什麼地方纔能使用
一、SELECT 語句的選擇列表(子查詢或外部查詢)。
二、COMPUTE 或 COMPUTE BY 子句。
三、HAVING 子句
經常使用函數
SQL avg(平均)
SQL count(總數)
SQL first()
SQL last()
SQL max(最大)
SQL min(最小)
SQL sum(綜合)
SQL Group By
SQL Having
SQL ucase()
SQL lcase()
SQL mid()
SQL len()
SQL round()
SQL now()
SQL format()
1.一、查詢全部班級總數,全部班級學生
select count(*) as '學生總數' from ydxx select COUNT(*) as '班級總數'from yyyyy |
2.一、查詢班級裏最大的年齡
SELECT MAX(ydxx.age)as '最大年齡' from ydxx |
3.1 查詢班級裏最小的年齡
SELECT MIN(ydxx.AGE)AS '最小年齡' FROM YDXX |
3.二、同時查詢最大的年齡和最小的年齡
select MAX(ydxx.age) as '最大年齡',MIN(ydxx.age) as '最小年齡' from ydxx |
4.一、查詢平均年年
select AVG(ydxx.age) as '平均年齡' from ydxx |
4.二、查詢大於平均年年齡的學員
select name,age,sex,gradeid from ydxx where ydxx.age>(select AVG(ydxx.age) as '平均年齡' from ydxx) |
5.一、查詢全部學員年齡的總和
select sum(ydxx.age) as '全部學員年齡的總和' from ydxx |
後帶更新。。。。