MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下公司。MySQL 最流行的關系型數據庫管理系統;
MySQL是一個小型關系型數據庫管理系統,開發者為瑞典MySQLAB公司,在2008年1月16號被Sun公司收購。MySQL被廣泛地應用在 Internet,上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了 MySQL作為網站數據庫。與其他的大型數據庫例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規模小、功能有限(MySQL Cluster的功能和效率都相對比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本;
Mysql數據庫的數據類型
- 整型
bit:范圍為從1到64
tinyint:帶符號的范圍是-128到127。無符號的范圍是0到255
smallint:小的整數。帶符號的范圍是-32768到32767。無符號的范圍是0到65535
mediumint:中等大小的整數。帶符號的范圍是-8388608到8388607。無符號的范圍是0到16777215
int或integer:普通大小的整數。帶符號的范圍是-2147483648到2147483647。無符號的范圍是0到4294967295
bigint:大整數帶符號的范圍是-9223372036854775808到9223372036854775807。無符號的范圍是0到18446744073709551615 - 字符串
char 固定長度字符串 對字符串 0-255 它的特點是犧牲空間,提高效率
varchar 節約空間,降低效率
舉例:
char 4 varchar 4
ab[][] ab
text 最大字數數為:65535
tinytext 最大字數數為:255 - 浮點型
float:浮點數
有負號:允許的值是-3.402823466E+38到-1.175494351E-38
無負號:0和1.175494351E-38到3.402823466E+38 - 日期類型
date 日期
支持的范圍為'0000-01-01'到'9999-12-31' MySQL以'YYYY-MM-DD'格式顯示DATE值,但允許使用字符串或數字為DATE列分配值
datetime 日期和時間的組合
支持的范圍是'0000-01-01 00:00:00'到'9999-12-31 23:59:59'
建立數據庫
創建數據庫:字符編碼統一選擇‘utf8_general_ci’,防止中文亂碼;
字段根據實際情況選擇,字符編碼可默認(數據庫是utf8);
字段名字規定名字由英文、數字或下劃線組成,且只能以英文開頭,全部使用小寫。雖然可以用中文,但非常不建議。
每個數據表應該都要有一個主鍵;
主鍵:在數據表,該列字段是唯一標識(該值在數據表沒有重復)該行的字段,稱為主鍵,每個數據表,最多只能有1個主鍵,一般一個自動增加的整型類型字段;
Mysql常用操作命令
操作技巧:
① 如果你打命令時,回車后發現忘記加分號,你無須重打一遍命令,只要打個分號回車就可以了。也就是說你可以把一個完整的命令分成幾行來打,完后用分號作結束標志就OK。
② 你可以使用光標上下鍵調出以前的命令。
1、更改數據庫密碼
mysql>use mysql(選擇名為Mysql的數據庫);
mysql>update user set password=password('你設置的密碼') where user = 'root';
mysql>flush privileges; 刷新一下
2、顯示數據庫列表
mysql>show databases;
剛開始時才兩個數據庫:mysql和test。mysql庫很重要它里面有MYSQL的系統信息,我們改密碼和新增用戶,實際上就是用這個庫進行操作。
3、創建一個數據庫mydatabase
mysql> create database mydatabase;
4、選擇你所創建的數據庫
mysql> use mydatabase; (按回車鍵出現Database changed 時說明操作成功!)
5、查看當前數據庫中存在什么表
mysql> show tables;
6、創建一個數據庫表
create table <表名> ( <字段名1> <類型1> [,..<字段名n> <類型n>]);
mysql> create table mytable
->(
-> id int(10) not null primary key auto_increment,
-> name char(20) not null,
-> sex int(1) not null,
-> age int(3) not null
->);
7、獲取表結構
命令: desc 表名,或者show columns from 表名
mysql> desc mytable;
mysql> show columns from mytable;
8、往數據表中加入記錄
命令:insert into <表名> ( <字段名1>[,..<字段名n > ]) values ( 值1 )[, ( 值n )]
mysql> insert into mytable(name,sex,age) values ("張三","1",'28');
9、查詢表中所有的數據
① 查詢所有行
命令: select <字段1,字段2,...> from < 表名 > where < 表達式 >
例如:查看表 mytable中所有數據
mysql> select * from mytable;
② 查詢前幾行數據
例如:查看表 mytable中前2行數據
mysql> select * from mytable order by id limit 0,2;
或者:
mysql> select * from mytable limit 0,2;
10、刪除數據表中某條數據
命令:delete from 表名 where 表達式
mysql> delete from mytable where id=1;
注意:
刪除表中數據時一定要帶上where表達式,否則將是毀滅性的災難,導致表中數據全部刪除;
11、修改數據表中某條數據
命令:update 表名 set 字段=新值,… where 條件
mysql> update mytable set name='Mary' where id=1;
注意:
修改表中數據時一定要帶上where表達式,否則將是毀滅性的災難,導致表中數據全部修改;
12、在表中增加字段
命令:alter table 表名 add字段 類型 其他;
例如:在表mytable中添加了一個字段email,類型為char(24),默認值為0;
mysql> alter table mytable add email char(24) default '0';
13、更改數據表名
命令:rename table 原表名 to 新表名;
例如:將表mytable名字更改為user;
mysql> rename table mytable to newtable;
14、刪除數據表
命令:drop table <表名>
mysql> drop table newtable;
15、刪除數據庫
mysql> drop database mydatabase;
16、退出MySQL:quit或exit
phpMyAdmin
打開本地phpMyAdmin,如果發現報錯嘗試連接到 MySQL 服務器,但服務器拒絕連接。您應該檢查配置文件中的主機、用戶名和密碼,并確認這些信息與 MySQL 服務器管理員所給出的信息一致。
解決方案:
打開安裝目錄wamp\apps\phpmyadmin4.1.14,然后打開config.inc.php 文件,查找文件中的主機、用戶名和密碼是否正確;
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '你的數據庫密碼';
$cfg['Servers'][$i]['host'] = '127.0.0.1';
Mysql用戶權限設置
關于mysql的用戶管理,筆記
1、創建新用戶
通過root用戶登錄之后創建
//創建新用戶,用戶名為testuser,密碼為123456 ;
grant all privileges on *.* to testuser@localhost identified by "123456" ;
//設置用戶testuser,可以在本地訪問mysql
grant all privileges on *.* to testuser@localhost identified by "123456" ;
//設置用戶testuser,可以在遠程訪問mysql
grant all privileges on *.* to testuser@"%" identified by "123456" ;
//mysql 新設置用戶或更改密碼后需用flush privileges刷新MySQL的系統權限相關表,否則會出現拒絕訪問,還有一種方法,就是重新啟動mysql服務器,來使新設置生效
flush privileges ;
2、設置用戶訪問數據庫權限
//設置用戶testuser,只能訪問數據庫test_db,其他數據庫均不能訪問 ;
grant all privileges on test_db.* to testuser@localhost identified by "123456" ;
//設置用戶testuser,可以訪問mysql上的所有數據庫 ;
grant all privileges on *.* to testuser@localhost identified by "123456" ;
//設置用戶testuser,只能訪問數據庫test_db的表user_infor,數據庫中的其他表均不能訪問 ;
grant all privileges on test_db.user_infor to testuser@localhost identified by "123456" ;
3、設置用戶操作權限
//設置用戶testuser,擁有所有的操作權限,也就是管理員 ;
grant all privileges on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION;
//設置用戶testuser,只擁有【查詢】操作權限 ;
grant select on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION;
//設置用戶testuser,只擁有【查詢\插入】操作權限 ;
grant select,insert on *.* to testuser@localhost identified by "123456" ;
//設置用戶testuser,擁有【查詢\插入\更新\刪除】操作權限 ;
grant select,insert,update,delete on *.* to testuser@localhost identified by "123456" ;
//取消用戶testuser的【查詢\插入】操作權限 ;
REVOKE select,insert ON what FROM testuser;
4、設置用戶遠程訪問權限
//設置用戶testuser,只能在客戶端IP為192.168.1.100上才能遠程訪問mysql ;
grant all privileges on *.* to testuser@“192.168.1.100” identified by "123456" ;
5、關于root用戶的訪問設置
設置所有用戶可以遠程訪問mysql,修改my.cnf配置文件,將bind-address = 127.0.0.1前面加“#”注釋掉,這樣就可以允許其他機器遠程訪問本機mysql了;
//設置用戶root,可以在遠程訪問mysql
grant all privileges on *.* to root@"%" identified by "123456" ;
select host,user from user; //查詢mysql中所有用戶權限
關閉root用戶遠程訪問權限
//禁止root用戶在遠程機器上訪問mysql
delete from user where user="root" and host="%" ;
flush privileges ; //修改權限之后,刷新MySQL的系統權限相關表方可生效
任務
使用navicat客戶端軟件創建一個人員信息表;
使用mysql命令創建一個人員信息表;