MySQL進入,day07_mysql基本操作

 2023-11-18 阅读 23 评论 0

摘要:1、數據存放目錄datadir=/app/mysql/data2、從配置文件中過濾cat /etc/my.cnf |grep datadir3、Mysql分服務器端和客戶端典型的 C/S結構mysql-servermysql-client4、連接服務器格式: mysql -h 服務器IP -u 用戶名 -p密碼1、服務器和客戶端在一臺機器,可以把-h省略2
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)


轉載于:https://www.cnblogs.com/xiaoxiao5ya/p/61b3843cd1b73ed6a00453d3e4c1cf87.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/174768.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息