成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java編程基礎(chǔ)31——MySql數(shù)據(jù)庫(kù)

atinosun / 3482人閱讀

摘要:一關(guān)系型數(shù)據(jù)庫(kù)概述數(shù)據(jù)庫(kù)定義和特點(diǎn)關(guān)系型數(shù)據(jù)庫(kù)是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。與實(shí)體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。支持大型的數(shù)據(jù)庫(kù)。

一.關(guān)系型數(shù)據(jù)庫(kù)概述 1.數(shù)據(jù)庫(kù)定義和特點(diǎn)

關(guān)系型數(shù)據(jù)庫(kù):是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

RDBMS即關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System)的特點(diǎn):
1.數(shù)據(jù)以表格的形式出現(xiàn)
2.每行為各種記錄名稱
3.每列為記錄名稱所對(duì)應(yīng)的數(shù)據(jù)域
4.許多的行和列組成一張表單
5.若干的表單組成database

2.RDBMS 術(shù)語(yǔ)

數(shù)據(jù)庫(kù): 數(shù)據(jù)庫(kù)是一些關(guān)聯(lián)表的集合。

數(shù)據(jù)表: 表是數(shù)據(jù)的矩陣。在一個(gè)數(shù)據(jù)庫(kù)中的表看起來(lái)像一個(gè)簡(jiǎn)單的電子表格。

列: 一列(數(shù)據(jù)元素) 包含了相同的數(shù)據(jù), 例如郵政編碼的數(shù)據(jù)。

行:一行(=元組,或記錄)是一組相關(guān)的數(shù)據(jù),例如一條用戶訂閱的數(shù)據(jù)。

冗余:存儲(chǔ)兩倍數(shù)據(jù),冗余降低了性能,但提高了數(shù)據(jù)的安全性。

主鍵:主鍵是唯一的。一個(gè)數(shù)據(jù)表中只能包含一個(gè)主鍵。你可以使用主鍵來(lái)查詢數(shù)據(jù)。

外鍵:外鍵用于關(guān)聯(lián)兩個(gè)表。

復(fù)合鍵:復(fù)合鍵(組合鍵)將多個(gè)列作為一個(gè)索引鍵,一般用于復(fù)合索引。

索引:使用索引可快速訪問(wèn)數(shù)據(jù)庫(kù)表中的特定信息。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。類似于書(shū)籍的目錄。

參照完整性: 參照的完整性要求關(guān)系中不允許引用不存在的實(shí)體。與實(shí)體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。

3.MySQL數(shù)據(jù)庫(kù) 概念

MySQL 是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典 MySQL AB 公司開(kāi)發(fā),目前屬于 Oracle 公司。MySQL 是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。

特點(diǎn)

MySQL 是開(kāi)源的,所以你不需要支付額外的費(fèi)用。

MySQL 支持大型的數(shù)據(jù)庫(kù)??梢蕴幚?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)。

MySQL 使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語(yǔ)言形式。

MySQL 可以運(yùn)行于多個(gè)系統(tǒng)上,并且支持多種語(yǔ)言。這些編程語(yǔ)言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

MySQL 對(duì)PHP有很好的支持,PHP是目前最流行的Web開(kāi)發(fā)語(yǔ)言。

MySQL 支持大型數(shù)據(jù)庫(kù),支持5000萬(wàn)條記錄的數(shù)據(jù)倉(cāng)庫(kù),32位系統(tǒng)表文件最大可支持4GB,64位系統(tǒng)支持最大的表文件為8TB。

MySQL 是可以定制的,采用了GPL協(xié)議,你可以修改源碼來(lái)開(kāi)發(fā)自己的 MySQL 系統(tǒng)。

安裝

a.解壓后在該文件夾下創(chuàng)建 my.ini 配置文件,編輯 my.ini 配置以下基本信息:

[mysql]
# 設(shè)置mysql客戶端默認(rèn)字符集
default-character-set=utf8
 
[mysqld]
# 設(shè)置3307端口
port = 3307
# 設(shè)置mysql的安裝目錄
basedir=E:MySQLmysql-8.0.12

# 設(shè)置mysql數(shù)據(jù)庫(kù)的數(shù)據(jù)的存放目錄
datadir=E:MySQLsqldata
# 允許最大連接數(shù)
max_connections=20
# 服務(wù)端使用的字符集默認(rèn)為8比特編碼的latin1字符集
character-set-server=utf8
# 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎
default-storage-engine=INNODB
# 默認(rèn)使用“mysql_native_password”插件認(rèn)證
default_authentication_plugin=mysql_native_password
[mysql]
# 設(shè)置mysql客戶端默認(rèn)字符集
default-character-set=utf8
[client]
# 設(shè)置mysql客戶端連接服務(wù)端時(shí)默認(rèn)使用的端口
port=3307
default-character-set=utf8

b:初始化數(shù)據(jù)庫(kù):使用管理員打開(kāi)cmd,在 bin 目錄下執(zhí)行命令:mysqld --initialize --console

c:安裝服務(wù):mysqld --install [服務(wù)名]

d:?jiǎn)?dòng)服務(wù):net start mysql,net stop mysql停止服務(wù),通過(guò)命令sc delete MySQL/mysqld -remove卸載 MySQL 服務(wù)

e:登陸數(shù)據(jù)庫(kù):mysql -u root -p 輸入上面初始化生成的密碼。

f:更改密碼:ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "新密碼";

二.MYSQL的SQL語(yǔ)言

SQL:Structure Query Language結(jié)構(gòu)化查詢語(yǔ)言

DDL:數(shù)據(jù)定義語(yǔ)言,定義數(shù)據(jù)庫(kù)、數(shù)據(jù)表它們的結(jié)構(gòu):create(創(chuàng)建) drop(刪除) alter(修改)

DML:數(shù)據(jù)操作語(yǔ)言,主要是用來(lái)操作數(shù)據(jù)insert(插入) update(修改) delete(刪除)

DCL:數(shù)據(jù)控制語(yǔ)言,定義訪問(wèn)權(quán)限,取消訪問(wèn)權(quán)限,安全設(shè)置grant

DQL:數(shù)據(jù)查詢語(yǔ)言,select(查詢) from字句 where字句

三.數(shù)據(jù)庫(kù)CRUD的操作
 --1.首先要登陸數(shù)據(jù)庫(kù)服務(wù)器
    mysql -uroot -p123456
--2.數(shù)據(jù)庫(kù)的創(chuàng)建 : 
    create database 數(shù)據(jù)庫(kù)的名 character set 字符集  collate 校對(duì)規(guī)則
    create database demodb character set utf8 collate utf8_bin;
--3.數(shù)據(jù)庫(kù)的查詢:  
    show databases;
    select database();    //正在使用的
    show create database 數(shù)據(jù)庫(kù)的名字;
--4.數(shù)據(jù)庫(kù)的修改: 
    alter database 數(shù)據(jù)庫(kù) character set 字符集(utf8);
--5.數(shù)據(jù)庫(kù)的刪除: 
    drop database 數(shù)據(jù)庫(kù)名
--6.切換數(shù)據(jù)庫(kù) :
    use 數(shù)據(jù)庫(kù)的名字;
四.表的操作 1.創(chuàng)建表
create table 表名(
    列名 列的類型(長(zhǎng)度) 約束,
    sid int primary key auto_increment,  
    sname varchar(30),
    sex int,
    age int
);

--列的類型:
    int
    char(固定長(zhǎng)度)/varchar(可變長(zhǎng)度),長(zhǎng)度代表的是字符的個(gè)數(shù)
    double
    date:YYYY-MM-DD
    time:hh:mm:ss    默認(rèn)值是null
    timestamp:YYYY-MM-DD hh:mm:ss默認(rèn)使用當(dāng)前時(shí)間   
    text:主要是存放文本
    blob:存放的是二進(jìn)制
                
--列的約束:
    主鍵約束:primary key
    唯一約束:unique
    非空約束:not null  
    自動(dòng)增長(zhǎng): auto_increment
2.查看表
--查看所有的表
    show tables;
--查看表的定義
    show create table 表名;
--查看表結(jié)構(gòu)
    desc 表名;
3.修改表
--修改表名和字符集
    rename table 舊表名 to 新表名;
    alter table 表名 character set gbk;
--修改列
    添加列: alter table 表名 add 列名 列的類型 列的約束(not null);
    刪除列: alter table 表名 drop chengji;
    改類型: alter table 表名 modify 列名 新的類型 新的約束(not null);
    改列名: alter table 表名 change 舊列名 新列名 varchar(2);
4.刪除表
drop table allidea;
五.表中數(shù)據(jù)的CRUD的操作 1.增刪改數(shù)據(jù)
--1.插入數(shù)據(jù)
    insert into 表名(列名1,列名2,列名3) values(值1,值2,值3),(值1,值2,值3); //全插入時(shí)列名可以省略
    --中文亂碼問(wèn)題
        暫停mysql服務(wù),在mysql安裝路徑中找到my.ini配置文件,將57行改成gbk,重啟mysql.
--2.刪除記錄
    delete from 表名 where 條件;
    delete from demodb where sid = 5;
    --delete和truncate 刪除數(shù)據(jù)有什么差別
        delete: DML一條一條刪除表中的數(shù)據(jù),適合數(shù)據(jù)少,高效
        truncate:DDL 先刪除表再重建表,適合數(shù)據(jù)比較多
--查看表中的數(shù)據(jù)
    select * from allidea;
--3.更新表記錄
    update 表名 set 列名1=列的值1,列名2=列的值2 where 條件;
    update student set sname="李四" where sid=5;
4.查詢記錄

select:選擇顯示哪些列的內(nèi)容

--商品分類(欄目)
1.分類的id  
2.分類名稱  
3.分類描述    

create table category(  ????
    cid int primary key auto_increment,  ????
    cname varchar(12),  ????
    cdesc varchar(31)
);    
insert into category values(null,"手機(jī)數(shù)碼","中國(guó)制造");  
insert into category values(null,"皮鞋箱包","意大利");  
insert into category values(null,"服裝內(nèi)衣","中國(guó)制造");  
insert into category values(null,"煙酒食品","中國(guó)制造"); 

--所有商品(貨品)
1.商品ID
2.商品名稱
3.商品價(jià)格
4.生產(chǎn)日期
5.商品分類ID

--商品和商品分類:所屬關(guān)系
create table product(
    pid int primary key auto_increment,
    pname varchar(10),
    price double,
    pdate timestamp,
    cno int
);

insert into product values(null,"小米手機(jī)",998,null,1);
insert into product values(null,"華為手機(jī)",2888,null,1);
insert into product values(null,"貴人鳥(niǎo)",399,null,2);
insert into product values(null,"杰克瓊斯",500,null,3);
insert into product values(null,"海瀾之家",500,null,3);
insert into product values(null,"茅臺(tái)酒",388,null,4);
insert into product values(null,"西鳳酒",128,null,4);
insert into product values(null,"餅干",5,null,4);

--查詢所有的商品
    select * from product;
    
--查詢商品名稱和商品價(jià)格
    select pname,price from product;
    
--別名查詢. as的關(guān)鍵字,as 關(guān)鍵字是可以省略
    --表別名(主要是用在多表查詢);
        select p.pname,p.price from product as p;
    --列別名;
        select pname 名稱,price 價(jià)格 from product;
        
--去掉重復(fù)的值 distinct
    select distinct price from product;
    
--select運(yùn)算查詢(僅僅在查詢結(jié)果上做了運(yùn)算)
    select *,price*0.5 折后價(jià)格 from product;
    
--where關(guān)鍵字
    --關(guān)系運(yùn)算符:> >= < <= != <>(標(biāo)準(zhǔn)sql語(yǔ)法)
    --判斷某一列是否為空: is null,is not null
    --邏輯運(yùn)算: and , or , not
    --between ... and ...在某一區(qū)間
    --like:模糊查詢
        _ :代表的是一個(gè)字符
        % :代表的是多個(gè)字符
    --in 在某個(gè)范圍中獲得值     
    --查詢商品價(jià)格>60的所有商品信息
        select * from product where price > 60;
    
    --查詢商品價(jià)格在10到100之間
        select * from product where price > 10 and price < 100;
        between...add...
        select * from product where price between 10 and 100;
    --查詢商品價(jià)格小于 100 或者商品價(jià)格大于 999
        select * from product where price < 100 or price > 999;
        
    --查詢出名字中帶有 米 的商品
        select * from product where pname like "%米%";
    
    --查詢第二個(gè)名字是熊的所有商品
        select * from product where pname like "_便%";
    
    --查詢商品分類ID在1,4,5里面所有的商品
        select * from product where cno in (1,4);
        
--排序查詢: order by 關(guān)鍵字
    asc : ascend 升序(默認(rèn)的排序方式)
    desc : descend 降序
    --1.查詢所有商品,按照價(jià)格進(jìn)行排序
        select * from product order by price;
    --2.查詢所有商品,按照價(jià)格進(jìn)行降序
        select * from product order by price desc;
    --3.查詢名稱有 小 的商品,按照價(jià)格降序排序
        select * from product where pname like "%面%" order by price desc;
        
--聚合函數(shù): select 函數(shù)(列名) from 表名;
    sum() : 求和
    avg() : 求平均值
    count() : 統(tǒng)計(jì)數(shù)量
    max() : 最大值
    min() : 最小值
    --1.獲得所有商品價(jià)格的總和
        select sum(price) from product;
        
    --2.獲得所有商品的個(gè)數(shù)
        select count(*) from product;
        
    --注意:where條件后面不能接聚合函數(shù)
    --查出商品價(jià)格 大于 平均價(jià)格 的所有商品
        select * from product where price > (select avg(price) from product);
--分組: group by
    --having 分組之后條件過(guò)濾關(guān)鍵字,可以接聚合函數(shù),出現(xiàn)在分組之后
    --1.根據(jù)cno字段分組,分組后統(tǒng)計(jì)商品的個(gè)數(shù)
        select cno,count(*)
        from product group by cno;
    --2.根據(jù)con分組,分組統(tǒng)計(jì)每組商品的平均價(jià)格,并且商品平均價(jià)格 > 60
        select cno,avg(price)
        from product group by cno
        having avg(price) > 60;
        
--編寫(xiě)順序
    select .. from .. where .. group by .. having .. order by
    
--執(zhí)行順序
    from .. where .. group by .. having .. select .. order by
    

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71741.html

相關(guān)文章

  • 《 Kotlin + Spring Boot : 下一代 Java 服務(wù)端開(kāi)發(fā) 》

    摘要:下一代服務(wù)端開(kāi)發(fā)下一代服務(wù)端開(kāi)發(fā)第部門(mén)快速開(kāi)始第章快速開(kāi)始環(huán)境準(zhǔn)備,,快速上手實(shí)現(xiàn)一個(gè)第章企業(yè)級(jí)服務(wù)開(kāi)發(fā)從到語(yǔ)言的缺點(diǎn)發(fā)展歷程的缺點(diǎn)為什么是產(chǎn)生的背景解決了哪些問(wèn)題為什么是的發(fā)展歷程容器的配置地獄是什么從到下一代企業(yè)級(jí)服務(wù)開(kāi)發(fā)在移動(dòng)開(kāi)發(fā)領(lǐng)域 《 Kotlin + Spring Boot : 下一代 Java 服務(wù)端開(kāi)發(fā) 》 Kotlin + Spring Boot : 下一代 Java...

    springDevBird 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<