數(shù)據(jù)庫(kù)基礎(chǔ)
存儲(chǔ)數(shù)據(jù)用文件就可以了,為什么還要弄個(gè)數(shù)據(jù)庫(kù)? 文件保存數(shù)據(jù)有以下幾個(gè)缺點(diǎn):
? ? ? ? ?1、文件的安全性問(wèn)題 2、文件不利于數(shù)據(jù)查詢和管理 3、文件不利于存儲(chǔ)海量數(shù)據(jù) 4、文件在程序中控制不方便
數(shù)據(jù)庫(kù)存儲(chǔ)介質(zhì): 磁盤 內(nèi)存
為了解決上述問(wèn)題,專家們?cè)O(shè)計(jì)出更加利于管理數(shù)據(jù)的東西——數(shù)據(jù)庫(kù),它能更有效的管理數(shù)據(jù)。數(shù)據(jù)庫(kù)的水平是衡量一個(gè)程序員水平的重要指標(biāo)。
基本使用
連接數(shù)據(jù)庫(kù)
????????mysql (-h 127.0.0.1 -P 3306) -u root -p
注意:
????????如果沒有寫 -h 127.0.0.1 默認(rèn)是連接本地
????????如果沒有寫 -P 3306 默認(rèn)是連接3306端口號(hào)
創(chuàng)建數(shù)據(jù)庫(kù)
????????create database helloworld;
使用數(shù)據(jù)庫(kù)
????????use helloworld;
創(chuàng)建數(shù)據(jù)庫(kù)表
create table student(
????????id int,
????????name varchar(32),
????????gender varchar(2)
);
表中插入數(shù)據(jù)
insert into student (id, name, gender) values (1, '張三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
查詢表中的數(shù)據(jù)
select * from student;
SQL分類
DDL【data definition language】 數(shù)據(jù)定義語(yǔ)言,用來(lái)維護(hù)存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)
????????代表指令: create, drop, alter
DML【data manipulation language】 數(shù)據(jù)操縱語(yǔ)言,用來(lái)對(duì)數(shù)據(jù)進(jìn)行操作
????????代表指令: insert,delete,update
????????DML中又單獨(dú)分了一個(gè)DQL,數(shù)據(jù)查詢語(yǔ)言,代表指令: select
DCL【Data Control Language】 數(shù)據(jù)控制語(yǔ)言,主要負(fù)責(zé)權(quán)限管理和事務(wù)
????????代表指令: grant,revoke,commit
數(shù)據(jù)庫(kù)操作
創(chuàng)建數(shù)據(jù)庫(kù)
? ? ? ? 語(yǔ)法
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
????????create_specification:
????????????????[DEFAULT] CHARACTER SET charset_name
????????????????[DEFAULT] COLLATE collation_name
????????大寫的表示關(guān)鍵字
????????[] 是可選項(xiàng)
????????CHARACTER SET: 指定數(shù)據(jù)庫(kù)采用的字符集
????????COLLATE: 指定數(shù)據(jù)庫(kù)字符集的校驗(yàn)規(guī)則
說(shuō)明:當(dāng)我們創(chuàng)建數(shù)據(jù)庫(kù)沒有指定字符集和校驗(yàn)規(guī)則時(shí),系統(tǒng)使用默認(rèn)字符集:utf8,校驗(yàn)規(guī)則是:utf8_ general_ ci。
示例:
創(chuàng)建一個(gè)使用utf字符集,并帶校對(duì)規(guī)則的 db3 數(shù)據(jù)庫(kù)。
create database db3 charset=utf8 collate utf8_general_ci;
字符集和校驗(yàn)規(guī)則
查看系統(tǒng)默認(rèn)字符集以及校驗(yàn)規(guī)則
show variables like 'character_set_database';
show variables like 'collation_database';
查看數(shù)據(jù)庫(kù)支持的字符集
show charset;
ps:字符集主要是控制用什么語(yǔ)言。比如utf8就可以使用中文。
查看數(shù)據(jù)庫(kù)支持的字符集校驗(yàn)規(guī)則
show collation;
ps:字符集的校驗(yàn)規(guī)則,指的是字符集比較大小的時(shí)候依據(jù)的準(zhǔn)則,比如我們比較a和B的大小,如果不考慮大小寫,那么a<B,如果考慮大小寫,則a>B,也就是說(shuō),同一字符集,不同的比較規(guī)則,對(duì)某列數(shù)據(jù)的排序結(jié)果也就會(huì)產(chǎn)生不同。
操縱數(shù)據(jù)庫(kù)
查看數(shù)據(jù)庫(kù)
show databases;
顯示創(chuàng)建語(yǔ)句
show create database 數(shù)據(jù)庫(kù)名;
示例:
ps:
????????MySQL 建議我們關(guān)鍵字使用大寫,但是不是必須的。
????????數(shù)據(jù)庫(kù)名字的反引號(hào)``,是為了防止使用的數(shù)據(jù)庫(kù)名剛好是關(guān)鍵字
????????/*!40100 default.... */ 這個(gè)不是注釋,表示當(dāng)前mysql版本大于4.01版本,就執(zhí)行這句話
修改數(shù)據(jù)庫(kù)
語(yǔ)法:
ALTER DATABASE db_name [alter_spacification [,alter_spacification]...]
alter_spacification:
????????[DEFAULT] CHARACTER SET charset_name
????????[DEFAULT] COLLATE collation_name
說(shuō)明: 對(duì)數(shù)據(jù)庫(kù)的修改主要指的是修改數(shù)據(jù)庫(kù)的字符集,校驗(yàn)規(guī)則
刪除數(shù)據(jù)庫(kù)
DROP DATABASE [IF EXISTS] db_ name;
數(shù)據(jù)庫(kù)備份和還原
備份數(shù)據(jù)庫(kù)
語(yǔ)法:
# mysqldump -P3306 -u root -p 密碼 -B 數(shù)據(jù)庫(kù)名 > 數(shù)據(jù)庫(kù)備份存儲(chǔ)的文件路徑
同時(shí)備份多個(gè)數(shù)據(jù)庫(kù)
# mysqldump -u root -p -B 數(shù)據(jù)庫(kù)名1 數(shù)據(jù)庫(kù)名2 ... > 數(shù)據(jù)庫(kù)存放路徑
如果備份一個(gè)數(shù)據(jù)庫(kù)時(shí),沒有帶上-B參數(shù), 在恢復(fù)數(shù)據(jù)庫(kù)時(shí),需要先創(chuàng)建空數(shù)據(jù)庫(kù),然后使用數(shù)據(jù)庫(kù),再使用 source來(lái)還原。
示例:將mytest庫(kù)備份到文件(退出連接)
# mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql
ps:這時(shí),可以打開看看 mytest.sql 文件里的內(nèi)容,其實(shí)把我們整個(gè)創(chuàng)建數(shù)據(jù)庫(kù),建表,導(dǎo)入數(shù)據(jù)的語(yǔ)句都裝載這個(gè)文件中。
備份表
# mysqldump -u root -p 數(shù)據(jù)庫(kù)名 表名1 表名2 > D:/mytest.sql
還原數(shù)據(jù)庫(kù)
mysql> source D:/mysql-5.7.22/mytest.sql;
查看連接情況
show processlist
可以告訴我們當(dāng)前有哪些用戶連接到我們的MySQL,如果查出某個(gè)用戶不是你正常登陸的,很有可能你的數(shù)據(jù)庫(kù)被 人入侵了。以后大家發(fā)現(xiàn)自己數(shù)據(jù)庫(kù)比較慢時(shí),可以用這個(gè)指令來(lái)查看數(shù)據(jù)庫(kù)連接情況。
表操作
創(chuàng)建表
語(yǔ)法
CREATE TABLE table_name (
????????field1 datatype,
????????field2 datatype,
????????field3 datatype
) character set 字符集 collate 校驗(yàn)規(guī)則 engine 存儲(chǔ)引擎;
說(shuō)明:
????????field 表示列名
????????datatype 表示列的類型
????????character set 字符集,如果沒有指定字符集,則以所在數(shù)據(jù)庫(kù)的字符集為準(zhǔn)
????????collate 校驗(yàn)規(guī)則,如果沒有指定校驗(yàn)規(guī)則,則以所在數(shù)據(jù)庫(kù)的校驗(yàn)規(guī)則為準(zhǔn)
查看表結(jié)構(gòu)
desc 表名;
修改表
//添加字段
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);
//修改字段
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);
//刪除字段
ALTER TABLE tablename DROP (column);
//修改表名
alter table users rename to tablename;
刪除表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
示例文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-696733.html
drop table t1;文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-696733.html
到了這里,關(guān)于MySQL數(shù)據(jù)庫(kù)和表的操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!