mysql的库和表相关操作
一、數據庫介紹
1、數據庫的由來
我們之前所學,數據要想永久保存,都是保存于文件中,毫無疑問,一個文件僅僅只能存在于某一臺機器上,這樣就帶來了許多問題:
(1)程序所有的組件就不可能運行在一臺機器上
(2)數據安全問題
(3)并發問題
總結:我們在編寫任何程序之前,都需要事先寫好基于網絡操作一臺主機上文件的程序(socket服務端與客戶端程序),于是有人將此類程序寫成一個專門的處理軟件,這就是mysql等數據庫管理軟件的由來,mysql不僅僅解決的是數據共享的問題,還有查詢效率,安全性等一系列問題,總之,把程序員從數據管理中解脫出來,專注于自己的程序邏輯的編寫。
2、數據庫說明
數據庫服務器 -:運行數據庫管理軟件
數據庫管理軟件:管理 - 數據庫
數據庫:即文件夾,用來組織文件 / 表
表:即文件,用來存放多行內容 / 多條記錄
3、mysql介紹
MySQL是一個關系型數據庫管理系統
(1)分兩大類:
關系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql語句通用
非關系型:mongodb,redis,memcache
(2)可以簡單的理解為:
? ? 關系型數據庫需要有表結構
? ? 非關系型數據庫是key-value存儲的,沒有表結構
二、操作
1、mysql數據庫環境準備
環境:window7_X86_64
版本:mysql-5.6.38-winx64.zip
下載地址:https://dev.mysql.com/downloads/mysql/
文件路徑:E:\mysql-5.6.38-winx64
添加到環境變量:計算機---->屬性---->高級系統設置---->環境變量---->系統變量---->path---->E:\mysql-5.6.38-winx64\bin\;
2、登錄和設置密碼
| 1 2 3 4 5 | C:\Users\Administrator>?mysqld?--install C:\Users\Administrator>?net?start?MySQL???????????????????#啟動mysql數據庫 C:\Users\Administrator>?mysql?????????????????????????#默認用戶不用密碼可以直接登錄 mysql>?select?user();???????????????????????????????#查看當前登錄用戶,顯示的是ODBC用戶 C:\Users\Administrator>?mysqladmin?-uroot?-p?password?"123"?????#設置root賬號的密碼是123 |
3、重置密碼
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | C:\Users\Administrator>?net?stop?MySQL C:\Users\Administrator>?mysqld?--skip-grant-tables 新打開一個終端操作: C:\Users\Administrator>?mysql?-uroot?-p mysql?>?update?mysql.user?set?password=password("")?where?user='root'?and?host="localhost"; mysql?>?flush?privileges; mysql>?exit; C:\Users\Administrator>tasklist?|findstr?mysql?????????????#查看mysql服務的進程號 mysqld.exe?????????6316?Console??????????1????454,544?K C:\Users\Administrator>taskkill?/F?/PID?6316???????????????#結束mysql服務 C:\Users\Administrator>net?start?MySQL??????????????????#啟動mysql服務 C:\Users\Administrator>?mysql?-uroot?-p??????????????????#登錄不需要密碼了 |
4、同一字符編碼
#mysql5.5以上的配置文件配置
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
mysql> show variables like '%char%'; ? ? ? ? ? ? ? ? ? ? ? ? ? #查看字符編碼
5、SQL語言介紹
SQL語言主要用于存取數據、查詢數據、更新數據和管理關系數據庫系統,SQL語言由IBM開發。SQL語言分為3種類型:
#1、DDL語句 ? ?數據庫定義語言: 數據庫、表、視圖、索引、存儲過程,例如CREATE DROP ALTER
#2、DML語句 ? ?數據庫操縱語言: 插入數據INSERT、刪除數據DELETE、更新數據UPDATE、查詢數據SELECT
#3、DCL語句 ? ?數據庫控制語言: 例如控制用戶的訪問權限GRANT、REVOKE
(1)操作文件夾
增:create database db1 charset utf8;
查:show databases;
改:alter database db1 charset latin1;
刪除: drop database db1;
(2)操作文件
先切換到文件夾下:use db1
增:create table t1(id int, name char);
查:show tables
改:alter table t1 modify name char(3); alter table t1 change name name1 char(2);
刪:drop table t1;
(3)操作文件中的內容/記錄
增:insert into t1 values(1, 'egon1'), (2, 'egon2'), (3, 'egon3');
查:select * from t1;
改:update t1 set name = 'sb' where id = 2;
刪:delete from t1 where id = 1;
清空表:
? ? delete from t1; ?# 如果有自增id,新增的數據,仍然是以刪除前的最后一樣作為起始。
? ? truncate table t1; 數據量大,刪除速度比上一條快,且直接從零開始,
? ? auto_increment 表示:自增
? ? primary key ? ?表示:約束(不能重復且不能為空);加速查找
6、庫操作
(1)查看數據庫
show databases;
show create database db1;
select database();
(2)選擇數據庫
USE 數據庫名
(3) 刪除數據庫
DROP DATABASE 數據庫名;
(4)修改數據庫
alter database db1 charset utf8;
7、表操作
(1)創建表
#注意:
? ? ? ? 1. 在同一張表中,字段名是不能相同
? ? ? ? 2. 寬度和約束條件可選
? ? ? ? 3. 字段名和類型是必須的
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | mysql>?show?engines;??????????????????????#顯示所有的存儲引擎 mysql>?use?db1 mysql>?create?table?t1(id?int)engine=innodb; mysql>?create?table?t2(id?int)engine=myisam; mysql>?create?table?t3(id?int)engine=memory; mysql>?create?table?t4(id?int)engine=blackhole; mysql>?show?tables;??????????????????????????#查看db1庫下的所有的表名 mysql>?desc?t1;?? ????????????????????????????#查看t1表的表結構 #memory存儲引擎,在重啟mysql或者重啟機器后,表內數據清空 #blackhole存儲引擎,往表內插入任何數據,都相當于丟入黑洞,表內永遠不存記錄 mysql>?create?table?db1.f2?select?user,host?from?mysql.user;??????????#復制表 mysql>?create?table?db1.f3?select?user,host?from?mysql.user?where?1=2;????#只復制表結構(查詢的結果不存在,沒有值) mysql>?create?table?db1.f4?like?mysql.user;??????????????????????#只復制表結構 |
(2)日期類型
| 1 2 3 4 5 6 7 8 9 10 11 | create?table?student( ????id?int, ????name?char(16), ????born_year?year, ????birth_date?date, ????class_time?time, ????reg_time?datetime ); insert?into?student?values(1,'wang',now(),now(),now(),now());?????????????????????#插入當前時間 insert?into?student?values(2,'wang','1999','1999-11-11','11:11:11',"1990-11-11?11:11:11");??#插入指定時間 |
(3)字符類型
#char類型:定長,簡單粗暴,浪費空間,存取速度快
? ? 字符長度范圍:0-255(一個中文是一個字符,是utf8編碼的3個字節)
#varchar類型:變長,精準,節省空間,存取速度慢
? ? 字符長度范圍:0-65535(如果大于21845會提示用其他類型 。mysql行最大限制為65535字節,字符編碼為utf-8)
#常用字符串系列:char與varchar
注:雖然varchar使用起來較為靈活,但是char數據類型的處理速度更快,有時甚至可以超出varchar處理速度的50%。因此,用戶在設計數據庫時應當綜合考慮各方面的因素,以求達到最佳的平衡
#寬度代表的是字符的個數
create table t6(name char(5));
create table t7(name varchar(5));
(4)修改表ALTER TABLE
語法:
#1.修改表名
ALTER TABLE 表名 RENAME 新表名;
#2.增加字段
ALTER TABLE 表名
? ? ? ? ADD 字段名 數據類型[完整性約束條件…],
? ? ? ? ADD 字段名 數據類型[完整性約束條件…];
ALTER TABLE 表名
? ? ? ? ADD 字段名 數據類型[完整性約束條件…] ?FIRST;
ALTER TABLE 表名
? ? ? ? ADD 字段名 數據類型[完整性約束條件…] ?AFTER 字段名;
#3.刪除字段
ALTER TABLE 表名
? ? ? ? DROP 字段名;
#4.修改字段
ALTER TABLE 表名
? ? ? ? MODIFY 字段名 數據類型[完整性約束條件…];
ALTER TABLE 表名
? ? ? ? CHANGE 舊字段名 新字段名 舊數據類型[完整性約束條件…];
ALTER TABLE 表名
? ? ? ? CHANGE 舊字段名 新字段名 新數據類型[完整性約束條件…];
#5.刪除表
DROP TABLE 表名;
示例:
#1.修改存儲引擎
mysql > alter table service engine = innodb;
#2.添加字段
| 1 2 3 4 5 6 | mysql?>?alter?table?student10 ????????->?add?name?varchar(20)?not?null, ????????->?add?age?int(3)?not?null?default?22; ????????? mysql?>?alter?table?student10?add?stu_num?varchar(10)?not?null?after?name;??????????//?添加name字段之后 mysql?>?alter?table?student10?add?sex?enum('male',?'female')?default?'male'?first;?????//?添加到最前面 |
#3.刪除字段
mysql > alter table student10 drop sex;
mysql > alter table service drop mac;
#4.修改字段類型modify
mysql > alter table student10 modify age int(3);
mysql > alter table student10 modify id int(11) not null primary key auto_increment; ? ?// 修改為主鍵
#5.增加約束(針對已有的主鍵增加auto_increment)
mysql > alter table student10 modify id int(11) not null auto_increment;
#6.對已經存在的表增加復合主鍵
mysql > alter table service2 add primary key(host_ip, port);
#7.增加主鍵
mysql > alter table student1 modify name varchar(10) not null primary key;
#8.增加主鍵和自動增長
mysql > alter table student1 modify id int not null primary key auto_increment;
#9.刪除主鍵
a.刪除自增約束
mysql > alter table student10 modify id int(11) not null;
b.刪除主鍵
mysql > alter table student10 drop primary key;
(5)枚舉類型與集合類型
字段的值只能在給定范圍中選擇,如單選框,多選框
enum 單選 只能在給定的范圍內選一個值
set 多選 在給定的范圍內可以選擇一個或一個以上的值
| 1 2 3 4 5 6 7 8 | create?table?employee( ????id?int, ????name?char(10), ????sex?enum('male','female','other'), ????hobbies?set('play','eat','music','read') ); insert?into?employee?values(1,'li','male','music,read'); insert?into?employee?values(2,'wang','xxxx','music,read'); |
本文轉自 宋鵬超 51CTO博客,原文鏈接:http://blog.51cto.com/qidian510/2072077,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的mysql的库和表相关操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Juniper ScreenOS M
- 下一篇: Memcache 内存分配策略和性能(使