数据库(1)
數據庫(Database)
存放數據的倉庫,用于管理大量甚至海量數據
DBMS:Database Management System,數據庫管理系統,用于管理數據庫,是一個獨立的程序
DBA:Database Administrator,數據庫管理員,它是一個人
?
數據可有兩種類型:關系型數據庫(RDBMS, Relationship Database Management System)、非關系型數據庫(NO-SQL)
?
主流關系型數據庫產品:
大型數據庫:Oracle(美國的一家公司,很強大的數據庫,功能非常完善,能管理T級的數據,在中國有家名為“甲骨文”的公司,其用C++開發的,用Java做的界面) 、SQL Server(微軟公司的產品,學習難度低,傻瓜式軟件,跟windows很配,也是用C++開發的)、DB2( IBM公司開發的 )等
中型數據庫:MySQL(起源是荷蘭一家公司,現在是Oracle公司旗下的產品)等
小型數據庫:Access等
微型數據庫: SQLite (開源,世界上最小的數據庫,c語言寫的,甚至只是一個庫,而不是一個程序,一般用于手機上的APP開發)
中國自主研發的數據庫:達夢
?
所有關系型數據庫數據庫產品都遵守SQL標準,即都可以通過SQL訪問它們,所以我們隨便選擇一個進行學習就行
?
主流非關系型數據庫產品:MongoDB,Redis等
?
?
SQL
Struct Query Language,結構化查詢語言,用于和DBMS交流溝通
SQL結構化查詢語言包含六個部分:
(1):數據查詢語言(DQL:Data Query Language): 其語句,也稱為“數據檢索語句”,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。 (2):數據操作語言(DML:Data Manipulation Language): 其語句包括動詞INSERT,UPDATE和DELETE。它們分別用于添加,修改和刪除表中的行。也稱為動作查詢語言。 (3):事務處理語言(TPL): 它的語句能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。 (4):數據控制語言(DCL): 它的語句通過GRANT或REVOKE獲得許可,確定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問。 (5):數據定義語言(DDL): 其語句包括動詞CREATE和DROP。在數據庫中創建新表或刪除表(CREAT TABLE 或 DROP TABLE);為表加入索引等。DDL包括許多與人數據庫目錄中獲得數據有關的保留字。它也是動作查詢的一部分。 (6):指針控制語言(CCL): 它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨行的操作
?
一個數據庫可以包含多張表(Table),數據存放在表中
表就是一個二維表格,由若干行(Row)和列(Column)構成,一行數據也稱為一條記錄(Record),一列也稱為一個字段(Field)
?
在關系型數據庫中數據都存放在表中
?
擴展
?
查看數據庫
show databases ;
登錄
mysql -h ip地址 -u root -p 然后輸入密碼登錄 # -h如果是本機登錄就不需要帶,連接別人的就帶-h接ip地址
創建用戶
create user 'azhe'@'%' identified by '602661651nizhan$';
%代表可以在所有機器上登錄
創建mydb數據庫
create database mydb default character set utf8
刪除數據庫
drop database 名稱;
刪除用戶
drop user 用戶名稱;
刪除student表
drop table student;
將mydb的所有權限都給azhe用戶
grant all on mydb.* to 'azhe'@'%';
取消權限
revoke all on mydb.* to 'azhe'@'%'
刷新權限
flush privileges;
改名,舊用戶名to新用戶名
rename user azhe to yrz
更改密碼
set password for 'azhe'@'%' = password(" 123456")
打開mydb數據庫
use mydb
建表
create table student (sno int unsigned, name varchar(20), phone char (11));
定長字符串char 變長字符串vachar
定長字符串的存取速度要快于變長字符串
在student表中增加內容,此處增加手機號
alter table student add column phone char(11);
查看表
desc student;
更改表的結構
alter table student modify sno int(6) unsigned;
往表中插入數據
insert into student values (1001, “張三”,“男”, 4.1, “1996-3-20”,“15927911307”)
insert into student (sno,phone,name) value (1002, '18527384912', "李四")
查看student表,*代表所有,也可以換成name等
select * from student;
清空student表
delete from student;
刪掉student表中指定的內容:
where只有滿足條件的才會被操作,name這里的=是比較運算符
where子句指定操作條件
delete from student where name=‘張三’;
更改張三的名字為張三豐
update student set name=“張三豐” where sno=1001;
如果相同時改多個字段,用,隔開
?
primary key 主鍵 非空 并且唯一
一般把文件的路徑存放在數據庫中,幾乎沒有人把文件直接存放在數據庫的表中
數據庫設計原則:在夠用的情況下,盡量少占用存取空間
root用戶默認不能遠程登錄,只能本機登錄
MySQL中單引號和雙引號引起來的都是字符串
SQL關鍵字不區分大小寫
?
?
大文件不能一次性讀到內存中 ,這樣會讓電腦卡死 ,只能每次讀取一點數據,操作后再讀取一點數據進行操作
轉載于:https://www.cnblogs.com/yanruizhe/p/11379625.html
總結
- 上一篇: Maven-atguigu
- 下一篇: 数据库(2)