1、數據存放目錄
datadir=/app/mysql/data
2、從配置文件中過濾
cat /etc/my.cnf |grep datadir
3、Mysql分服務器端和客戶端
典型的 C/S結構
mysql-server
mysql-client
4、連接服務器
格式: mysql -h 服務器IP -u 用戶名 -p密碼
1、服務器和客戶端在一臺機器,可以把-h省略
2、默認會有root用戶
(1)mysql中的root用戶和linux中的root用戶,只是巧合同名。
(2)它們存放用戶名和密碼的地方都不一樣:?
linux中的root用戶 /etc/passwd ??
mysql中的root用戶存放在庫中系統表中
3、密碼默認為空
4、默認拒絕遠程登錄
例:?
mysql -h 192.168.8.100 -u root -pmysql
mysql -u root -pmysql ?【如果是登錄本機,可以省略 -h選項】
5、退出服務器
quit或ctrl+c(建議使用,更安全一些)
----------庫操作----------
在操作系統中往文本中寫數據
比如:vim /tmp/haha.txt
在Mysql數據庫中,組織數據用表來組織數據,mysql是關系型數據庫。
什么是關系呢?關系就是表。
什么是數據庫的表?可以把表想成咱們平時填寫的紙質表格文件
什么是數據庫?
平時紙質表格文件多了,就會存放在檔案袋里,這個檔案袋就是數據庫。MySQL進入。
平時紙質表格文件多了,就會存放在箱子里,這個箱子就是數據庫。
平時紙質表格文件多了,就會存放在你包里,你包就是數據庫。
如何操作數據庫?如何操作表?如何操作表內的數據?增 刪 查 改
mysql>show databases; 【查看當前有哪些數據庫】
information_schema庫 【主要存放mysql運行中的一些狀態】
cd /app/mysql/data
mkdir vfast
mysql>show databases; 【在Mysql中:數據庫就是一個目錄】
cd /app/mysql/data
ll ? 查看【數據庫目錄的owner和group應該全是Mysql,否則無法正常使用】
ls -ld /app/mysql/data 【此目錄及其子目錄,owner和group應該全是Mysql】
cd /app/mysql/data
rm -rf vfast
mysql>show databases;?
mysql>create database `vfast`; (增加數據庫,如果名子以數字開頭,加上``)
mysql>show databases;?
cd /app/mysql/data
ll ? 查看【數據庫目錄的owner和group全是Mysql】
mysql>show databases;?
mysql>drop database vfast;(刪除數據庫,線上生產庫不要輕易執行,非常危險,如果工作中非常執行,要有郵件證明)
mysql>show databases;?
mysql>create database `數據庫名`;?
cd /app/mysql/data
mv vfast haha
mysql>show databases;
----------表操作----------
咱們要刪除一個文件
1、刪除絕對路徑 ? ? ?rm -rf /tmp/123.txt
2、進入目錄后,再刪除 ? cd /tmp ? ? ? ? ? ?rm -rf 123.txt
咱們mysql的庫就是一個目錄,咱們創建表也和上面原理一樣
(1)create table 庫名.表名(name char(10),age int);
(2)use 庫名
create table 表名(name char(10),age int);
(3)show tables
(4)drop table 表名
mysql>create table v1(name char(10),age int);
ERROR 1046 (3D000):No database selected【你登錄到Mysql后,沒有選擇任何庫】
mysql>
mysql>show databases;
mysql>create database vfast;
mysql>show databases;
(1)
mysql>create table vfast.v1(name char(10),age int);【我要在vfast庫中創建一個v1表】
(2)
mysql>use vfast
mysql>create table v2(name char(10),age int);
mysql>show tables;
mysql>drop table v1;
--------【數據類型】--------
int 整形
bigint 長整形
float 浮點
char 字符
varchar 長度可變字符(比較消耗CPU)
比如:你去酒店訂房間,如果是char訂了2個房間,只有1個房間你住了,另一個退不了款
你去酒店訂房間,如果是varchar訂了2個房間,只有1個房間你住了,另一個能退款
char(5) 不管你用多少,5個空間全分配給你
varchar(5) 你用了幾個,就給你分配幾個空間?
所以,從存放數據的角度看,varchar更經濟一些。
但是反事有一利就有一弊端,它得先計算吧,查一下,一涉及到計算就比較消耗cpu。登錄MySQL, ? ?
建議使用char類型 ? ? ?
date 日期 20130101和'2013-01-01'?
create table a6(dd date);
insert into a6 values(20130101);
insert into a6 values('2013-01-01');
select * from a6;
time 時間 ?
datetime 具體日期時間
enum 枚舉 ? enum('M','F') 65535選1,單選
mysql> create table a7(sex enum('NAN','NV'));【限制取值只能是'NAN','NV'】
mysql> insert into a7 values('NAN');
mysql> insert into a7 values('NV');
mysql> insert into a7 values('WEIZHI');
ERROR 1265 (01000): Data truncated for column 'sex' at row 1
set 集合 ? ?set('NAN,NV') 可以64選多,多選
mysql> create table a8(sex set('NAN','NV'));【限制取值只能是'NAN','NV'】
mysql> insert into a8 values('NAN,NV');
mysql> insert into a8 values('NAN');
mysql> select * from a8;
blob 二進制 存放圖片
text 大文本 ?65535個byte
----------------------------------------
desc 表名
alter table 表名 modify 列名 類型(長度),類型(長度) ? 【修改表的字段長度】
alter table 表名 add 列名 類型(長度) ? ?【為表增加新列及類型】
alter table 表名 drop 列名 類型 ? ? 【刪除表的指定列】
alter table 表名 change 列名 新列名 類型 ? ?【修改指定列的名字、類型】
alter table 表名 rename 新表名 ? 【修改表的名字】
? alter table 【使用系統幫助】
舉例:
mysql> create table t1(a int,b int);
mysql> alter table t1 modify a char(10);
mysql> desc t1;
mysql> alter table t1 add c int;
mysql> desc t1;
mysql> alter table t1 drop b;
mysql> desc t1;
mysql> alter table t1 change a aa int;
mysql> desc t1;
mysql> alter table t1 rename t2;
mysql> desc t1;
mysql> desc t2;
--------------數據操作-------------
create table b(a1 int,a2 char(10));
insert into b values(1,'a');
select * from b;
insert into b values(2,'b'),(3,'c');
select * from b;
insert into b(a1) values(4);
select * from b;
delete from b where a1=1;
select * from b;
delete from b;【全刪除,一行一行刪除】?
truncate b;【全刪除,比較快】
insert into b values(1,'a');
insert into b values(2,'b');
select * from b;
update b set a1=100 where a2='a';
select * from b;
update b set a1=66;
select * from b;
select 1>=1; 【邏輯值1】
select 1>=11;【邏輯值0】
select 1+11; 【數據值12】
select not 1>=11;【邏輯值1】
select 1>=11 and 1>0;【邏輯值0】
select 1>=11 or 1>0;【邏輯值1】
select not(1>=11 or 1>0);【邏輯值0】
select 5 between 1 and 10;【邏輯值1】
輸出美觀,別名
select name,shuxue+yuwen+yingyu as total from score;
聚集函數
sum
max
min
avg
count
select count(*) from 表 一共多少行
limit 1 ?取第1條記錄
1 ?語文
2 ?Oracle
create table score(sno int,cno int,chengji int);
insert into score values(1,1,100),(1,2,100),(2,1,90),(2,2,100),(3,1,80),(3,2,60),(4,1,70),(4,2,50);
語文成績降序排列,取出第1行記錄,詳細信息
select * from score where cno=1 order by 成績 desc limit 1;【排序后,取1行記錄】
select * from score where cno=1 order by chengji desc limit 1;
語文成績降序排列,取出前3行記錄,詳細信息
select * from score order by 語文成績 desc limit 3;【排序后,取3行記錄】
select * from score where cno=1 order by chengji desc limit 3;
語文成績降序排列,取出前第2行和第3行記錄,詳細信息
select * from score order by 語文成績 desc limit 1,2;【排序后,從第1行之后,取2行,實際是第2和第3名】
select * from score where cno=1 order by chengji desc limit 1,2;
group by
select sex,count(*) from student group by sex;
select sex,count(*) from student group by sex having count(*) >1;
不同數據庫實現分頁操作:
oracle rownum
mysql limit
sqlserver top
來自為知筆記(Wiz)