一、數(shù)據(jù)庫定義:
? ? ? ? 按照數(shù)據(jù)的結(jié)構(gòu)來組織驹沿、存儲、和管理數(shù)據(jù)的倉庫
? ??????數(shù)據(jù)庫=多張表+各表之間的關(guān)系
二蹈胡、常見數(shù)據(jù)庫
? ? ? ? MySQL渊季、Oracle、MongoDB罚渐、Redis却汉、SqlServer
三、數(shù)據(jù)庫和SQL是什么關(guān)系荷并?
? ??????結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL
? ??????是一種特殊目的的編程語言合砂,是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢璧坟、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)既穆;同時(shí)也是數(shù)據(jù)庫腳本文件的擴(kuò)展名。
數(shù)據(jù)庫里面放著數(shù)據(jù)雀鹃,而SQL是用來操作數(shù)據(jù)庫里數(shù)據(jù)的語言(工具)幻工。
四、SQL語句分類
? ??1. DDL-數(shù)據(jù)庫定義語言
? ? 創(chuàng)建數(shù)據(jù)庫? ?→? CREATE DATABASE 數(shù)據(jù)庫名;
? ? 刪除數(shù)據(jù)庫? ?→?drop database 數(shù)據(jù)庫名;
? ? 選擇數(shù)據(jù)庫? ?→ use 數(shù)據(jù)庫名;
? ??查看數(shù)據(jù)庫創(chuàng)建細(xì)節(jié) →?show create database 數(shù)據(jù)庫名;
? ? 創(chuàng)建一個使用gbk字符集的數(shù)據(jù)庫 →?create database 數(shù)據(jù)庫名 character set 編碼;
? ??創(chuàng)建表
? ??create table student(id int,name varchar(20),sex varchar(20),age int,salary float(6,2),birthday date);
????刪除表? drop table student;
????查看所有表? show tables;
????查看表的創(chuàng)建細(xì)節(jié)? show create table student;
????展示表結(jié)構(gòu)? desc student;
????在原有的學(xué)生基礎(chǔ)上添加address列? ? alter table student add addressvarchar(20);
????在原有的學(xué)生基礎(chǔ)上刪除address列? ? ? alter table student drop address;
????定義表的約束
????create tablestudent(id int primary key auto_increment,
????name varchar(20) unique not null, sex varchar(20),ageint,salary float(6,2),birthday date);
????刪除單條數(shù)據(jù)
????delete from student where id=1;
? ??刪除所有數(shù)據(jù)黎茎,不刪除結(jié)構(gòu)囊颅,會放到日志中,事務(wù)提交后才生效
? ??delete from student;
? ??摧毀表傅瞻,刪除表中所有數(shù)據(jù)踢代,不刪除結(jié)構(gòu),立即生效
? ??truncate table student;
? ??注意:delete from student;與truncate table student;都能刪除該表中所有數(shù)據(jù)嗅骄,
????區(qū)別:前者刪除后自增主鍵還在胳挎,后者主鍵會從1開始。
? ? 2.DML-數(shù)據(jù)庫操作語言
? ? ? ? 1溺森、插入數(shù)據(jù)
? ? ? ? 指定列插入:insert into 表名(f1,f2,...fn) values(值1,值2,...值n);
? ? ? ? 全部插入:insert into 表名 values(值1,值2,...值n);
? ? ? ? 2慕爬、修改數(shù)據(jù)
? ? ????update 表名 set field = value;
? ??????update 表名 set field = value where field = value;
? ? ????update 表名 set field =?value,field =?value where?field = value;
? ? 3.DQL-數(shù)據(jù)庫查詢語言
? ? ? ? select 字段名 from 表名 where 字段名 between 值1 and 值2;
? ? ? ? select 字段名 from 表名 where 字段名 [<,>,!=,<=,>=] 值;
? ??排序查詢
? ??????升序:select * from 表名 order by 表中的字段 asc(MySQL中默認(rèn)是升序排列,可不寫) 屏积;
? ??????降序:select * from 表名 order by 表中的字段 desc 医窿;
? ??????若要進(jìn)行同時(shí)一個升序一個降序 例如:order by 升序字段 asc,降序字段 desc 炊林;
? ??分頁查詢
? ??????limit是mysql的分頁查詢語法:select * from table limit m,n
? ??其中m是指記錄從m+1開始,姥卢,N代表取n條記錄。
? ??分組查詢
? ??????select * from 表名 group by 字段名 having 字段名>值;
? ??報(bào)表查詢
? ??????count 個數(shù)
????????sum 總數(shù)
????????avg 平均數(shù)
????????max 最大值
????????min 最小值
? ? 4.DCL-數(shù)據(jù)庫控制語言
多表設(shè)計(jì)
? ??constraint 約束
? ??foreign key就是表與表之間的某種約定的關(guān)系,由于這種關(guān)系的存在独榴,能夠讓表與表之間的數(shù)據(jù)僧叉,更加的完整,關(guān)連性更強(qiáng)
? ??foreign key語句的式例:FOREIGN KEY(Sno) REFERENCES Student(Sno)
? ??注意:表的外鍵必須是另一張表的主鍵
連表查詢
? ??交叉查詢:又叫笛卡爾積查詢棺榔,會將左表和右表的信息彪标,做一個乘積將所有信息查詢出來,會產(chǎn)生臨時(shí)表掷豺,比較占用內(nèi)存捞烟,生成的記錄數(shù)=表1 X表2
????(cross join 可以省略)
? ??select * from customer,orders;
? ??select * from customer cross join orders;
? ??內(nèi)連接:inner join on
? ??注意:join前面是左,后面是右
? ? select * from customer c inner join orders o on c.id=o.customer_id;
? ? select * from customer, orders where customer.id=orders.customer_id;
? ? 左外連接:?left join on
? ??select * from customer c left join orders o on c.id=o.customer_id;
? ??右外連接:right join on
? ??select * from customer c right join orders o on c.id=o.customer_id;