數據庫基礎知識(mysql)

數據庫的基礎知識

1.數據庫(Database,DB)

按照數據結構來組織、存儲和管理數據的倉庫,其本身可看作電子化的文件櫃,用戶可以對文件中的數據進行增加、刪除、修改、查找等操作

2.數據庫管理系統(DBMS)

數據庫
數據庫管理系統
	關係型數據庫:MySQL、oracle(oracale),MSSQL、Access、excel,(mysofeware)DB2(IBM);SQLLite(輕型數據庫/嵌入式)
	非關係型數據庫(NO-SQL):nongoDB、Hbase、Cassandra.......
	SQL:結構化查詢語言
數據庫應用程序

3.數據庫服務器(應用程序)

硬件---》安裝操作系統(OS:LInux,Windows)---》安裝數據庫管理系統

4.常用術語

表
記錄:行
字段/屬性:列

5.Mysql的安裝和配置

目錄結構
	bin---可執行文件
	lib---庫文件
	data---日誌文件和數據庫
	Smple DataBase---樣本數據庫
	share---共享文件
	include---頭文件
	my.ini(配置文件):
		Mysql正常安裝,my.ini存放在windows目錄下
		內容:
			[client];port:3306 ---》客戶端的端口
			[Mysql]default-character-set-gbk:默認字符集(字符編碼)
			端口、文件路徑、數據路徑、默認字符集、數據庫存儲引擎、最大連接數(max-contections-512)
			[Mysql] default-storage-engin-MyISAM:數據庫存儲引擎
				MyISAM 
				INNOBD
安裝:官網下載,安裝     默認端口:3306   用戶名:root;密碼:自定義

6.SQL(Structurd Query Language):結構化查詢語言

關係型數據庫語言
一種數據庫查詢語言和程序設計語言
增刪改查

7.sql語言組成

數據定義語言(DDL):數據庫
數據操作語言(DML):表操作
數據查詢語言(DQL):表查詢
數據控制語言(DCL):事務、存儲過程等

8.Windows下啓動Mysql服務:

驗證是否啓動:telnet -an---3306端口是否是LISTENING
使用相關命令登錄:dos命令---mysql -h hostname  -u useername -p
登錄成功出現myslq>
登錄失敗如何解決
  相關命令:help \h  幫助;     \s:查看數據庫信息;        show database:查看所有數據庫;    user test:或者\u   #切換數據庫

9.數據類型

整數類型5種:TINYINT(1個字節)、SMALLINT(2)、MEDIUMINT(3)、INT(4)、BIGINT(8)
浮點數類型和定點數類型:FLOAT(4個字節)、DOUBLE(4)、DECIMAL(M,D)(M+2)(精確,幾乎沒有誤差):高精度/定點數據類型
日期與時間類型:
	YEAR(1)、---YYYY
	DATE(4)---YYYY-MM-DD
		current_date/now()---獲取當前系統日期
	TIME(3)---
		---HH:MM:SS
		current_time/now()---輸入當前系統時間
	(最優)DATETIME(8)(到9999年)、
		---YYYY-MM-DD HH:MM:SS
		NOW---獲取當前系統時間和日期
	TIMESTAMP(時間戳1970年-2038年)
		CURRENT_TIMESTAMP/NULL/無任何輸入  ---->  x系統會輸入當前系統時間
		----同DATATIME
字符串與二進制類型
	char(最大長度)---固定長度字符串:不管存入幾位都佔最大長度
	varchar()---可變長度:存幾位佔幾位,可擴展,但位數只顯示到最大長度
	binany---固定長度二進制數據---圖片/文本(數據長度不足,數據後面用\0補齊)
	varbinany---可變長度二進制數據---圖片/文本
	text類型(大文本數據)---文章內容、評論
		tinytext
		text
		mediumtext
		longext
	BLOB(二進制類型)(二進制大數據)---圖片/PDF文檔等
		tinyblob
		blob
		mediumblob
		longblob
	ENUM(枚舉類型)(只能存儲一個枚舉字符串值)----ENUM(’值1‘,’值2‘,’值3‘。。。’值n‘):只能取一個(注意:Mysql中存入的是枚舉列舉中的順序編號,而不是列表中的值)
	SET---字符串對象,可以有零或多個值---與ENUM相同
	BIT(M)類型(二進制類型)---數據長度小於M,左邊用0補齊

10.數據表的基本操作(CRUD)

1.創建

	創建數據表:create 表名(字段名1 類型,字段名2 類型,字段名3 類型)

2.查看數據表

	1.使用show create table 表名---查看具體某一個表
	2.使用show tables;----查看所有表
	3.末尾加\G(G必須大寫);---使顯示美觀
	4.DESCRIBE/desc 表名
		NULL--該列是否可以存儲NULL值
		Key----該列是否已經編制索引
		Default---是否有默認值
		Extra---獲取給定列附加信息(備註)

3.刪除

---drop table 表名;

4.修改

	修改表名稱---alter table 舊錶名 rename (to) 新表名
	添加字段名(數據無損)---alter table 表名 add 字段名 數據類型(first/after);
	修改字段名(無損)---alter table 表名 change 舊字段名 新字段名 數據類型;(數據類型必須與原數據類型相同)
	修改字段屬性(數據類型)(數據有問題)---alter table 表名 notify 字段名 字段屬性;
	修改字段排列順序(無損)
		1.字段位於表開頭---alter table 表名 modify 字段名 字段屬性 first;
		2.字段位於表末尾---alter table 表名 modify 字段名 字段屬性 after;
		3.交換---1。字段位於表開頭---alter table 表名 notify 字段名 字段屬性 after 字段名;
	刪除字段名稱(有損)---alter table 表名 drop 字段名;
	注意:備份後再進行操作

5.表的約束

  • 創建目的:針對字段進行限制,保證數據的正確性和唯一性
  • 約束條件:PRIMARY KEY,FOREING KEY,NOT NULL,UNIQUE,DEFAULT。

5.1 主鍵約束(PRIMARY KEY)例如:身份證—它可以唯一表示表中的記錄

  • 1.單字段主鍵 格式:字段名 數據類型 PRIMARY KEY
  • 2.多字段主鍵(組合主鍵)格式:字段名 數據類型 PRIMARY KEY(字段名1,字段名2,字段名3…字段名n)
  • 注意:一個表中主鍵只有一個,且滿足了非空NOT NULL,不重複UNIQUE

5.2 非空約束 格式:字段名 數據類型 NOT NULL(一個表中可以定義多個非空約束)

5.3 唯一約束 格式:字段名 數據類型 UNIQUE 驗證是否可以爲空?可以

  • 默認約束 格式:字段名 數據類型 DEFAULT 默認值—默認爲0
  • 自動增加(AUTO_INCREMENT):字段名 字段類型 AUTO_INCREMENT—一般配合主鍵使用—約束條件:整數類型—跳數1,可以自定義

6.索引(列值排序後的結構)

6.1 作用

  • 提高表中數據查詢速度

6.2 概念

普通索引
唯一性索引
全文索引(數據量大)
單列索引
多列索引
空間索引

6.3 創建方式及語法

  • 1.創建表的時候創建:
    create table 表名 (字段名 數據類型[完整性約束條件] 字段名 數據類型[完整性約束條件] . . . 字段名 數據類型 [[uinique|fulltaxt|spatial] index|key [別名] (字段名1[(長度)] [asc|desc]]
  • 注: asc升序
  • 2.使用CREATE INDEX語句在已存在的表上創建索引
    CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名 (字段名 [(長度)] [ASC|DESC]);
  • 3.使用ALTER TABLE語句在已存在的表上穿件索引(修改)
    ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 (字段名 [(長度)] [ASC|DESC])
  • 4.刪除索引
    方法一:
    ALTER TABLE 表名 DROP INDEX 索引名(必須是空表,先刪除一下表內容delete from 表名)
    方法二:
    DROP INDEX 索引名 on 表名----查看:show create table 表名

7.表記錄操作

  • 7.1 添加數據(記錄)
  • 格式一:insert into 表名[(字段名1,字段名2,。。。)] values(值1,值2,。。。)
  • 注意:字段名可以省略不寫,但value值必須表中都寫;如果需要添加某個特定的值,在前面表名後寫上相應的字段名
  • 格式二:insert into 表名 set 字段名1=值1[,字段名2=值2,。。。字段名n=值n] 例:insert into t1 id=1,name=‘qwe’;
  • 7.2 記錄刪除
  • delete from 表名 刪除所有記錄
  • delete from 表名 where 字段名1=值1 and|or 字段名n=n值 刪除一或幾條
  • 記錄查詢
  • select * from 表名
(約束知識點)建表流程:
  • 例: 創建一個數據庫book—設計一個學生信息表(定義約束,創建2個索引,添加20條以上記錄)
  • 操作流程如下:
    • dos命令中打開數據庫bin目錄:

    • 1.登錄: D:\phpStudy\MySQL\bin>mysql -uroot -proot

    • 2.創建數據庫: mysql>create database book;

    • 3.查看數據庫: mysq>show databases;

    • 4.使用數據庫: use book;

    • 5.創建表(約束)

    • mysql> create table student;

    • id int(10) primary key auto_increment,

    • name varchar(20) not null,

    • age int(6) unique,

    • score float default 60,

    • grade int foreing);

    • 6.創建索引:mysql> create index stu_id on student (id asc);

    • mysql> create fulltext index index_name on student(name);

    • 7.查看已創建的表:mysql> show create table student\G;

    • 8.添加記錄:mysql> insert into student values(1,'aaa',18,61,1)

    • mysql> desc student;查看錶

    • mysql> insert into student(id) values(3);

    • mysql> insert into student(id,name,age,score) values(5,'ddd',24,78);

    • mysql> insert into student set id=11,name='kkk',age=42;score=66;

    • mysql> insert into student(id,grade) values(18,207);

    • 9.查看生成的表:mysql> select * from student; 輸出結果如下所示:

  • 結果:
    `±—±-----±-----±------±------+
    | id | name | age | score | grade |
    ±—±-----±-----±------±------+
    | 1 | aaa | 18 | 61 | 1 |
    | 3 | | NULL | 60 | NULL |
    | 2 | bbb | NULL | 60 | NULL |
    | 4 | ccc | 22 | 60 | NULL |
    | 5 | ddd | 24 | 78 | NULL |
    | 6 | eee | 17 | 90 | 201 |
    | 7 | fff | 12 | 56 | 202 |
    | 8 | | NULL | 60 | NULL |
    | 9 | fff | NULL | 60 | NULL |
    | 10 | ggg | 27 | 60 | NULL |
    | 11 | kkk | 42 | 60 | NULL |
    | 12 | kkk | 26 | 66 | NULL |
    | 13 | lll | 40 | 99 | 203 |
    | 14 | | NULL | 60 | 206 |
    | 15 | | 45 | 60 | NULL |
    | 67 | | NULL | 88 | NULL |
    | 17 | mmm | NULL | 60 | NULL |
    | 18 | | NULL | 60 | 207 |
    | 19 | nnn | 99 | 100 | 210 |
    | 20 | | 120 | 60 | NULL |
    | 21 | | 300 | 60 | NULL |
    ±—±-----±-----±------±------+
    21 rows in set (0.00 sec)``
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章