MySQL數據庫的認識和常見命令


MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發。MySQL 是最流行的關系型數據庫管理系統之一,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。

@

一、MySQL數據庫是什么?

數據庫有很多種,按照時間發展來,大致分為網狀形數據庫、層次型數據庫、關系型數據庫、面向對象數據庫。其中關系數據庫是理論最成熟,應用最廣泛的數據庫。目前關系型數據庫有 Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL。

其中MySQL具有功能強使用簡單管理方便運行速度快可靠性高安全保密性強等優點(而且是免費的。。。),使用得很廣泛。

二、SQL語句是什么?

SQL的全稱是 Structured Query Language ,也就是結構化查詢語言。是操作和檢索關系數據庫的標准語言,標准的SQL語言可用於操作任何關系型數據庫

通常SQL語句可分為:

查詢語言:主要有select關鍵字完成,查詢語言是SQL語言里功能最多的語句
DML語句:數據操作語言,主要由 insertupdatedelete關鍵字完成
DDL語句:數據定義語言,主要由createalterdroptruncate四個關鍵字構成
DCL語句:數據控制語言,主要由 grantrevoke兩個關鍵字完成,一般不用程序員完成,用的很少
事務控制語句:主要由commitrollbacksavepoint三個關鍵字完成

三、關於數據庫的基本命令

登錄數據庫(為了安全,語句中的密碼也可以先不寫)

mysql  -u  用戶名  -p  密碼 ;

用戶創建新的數據庫

create  database  數據庫名;

用戶刪除指定數據庫

drop  database  數據庫名;

使用指定數據庫

use    數據庫名;

查看數據庫的所有表(先使用數據庫)

show  tables;

查看表結構

desc  表名

四、DDL語句

DDL語句是操作數據庫對象的語句,可以創建(create)、刪除(drop)和修改(alter)數據庫對象,而最基本的數據庫對象是表(數據庫不僅僅只有表)

1. 要創建一張 test 表
編號 姓名 年齡 性別

建表語句,需要約束,以保證數據的完整性,后面說,這里只是定義了表的結構,定義簡單的類型,還沒添加數據

create table test(
	-- 可以有多個列定義,每列逗號分隔,最后一列沒有
	test_id      int , --定義第一列名為 test_id,數據為 int 類型
	test_name    varchar(20),--第二列名為 test_name,數據長度不超過20的字符串
	test_age     int,--第三列名為 test_age ,數據為 int 類型
	test_gender  char(1)--第四列名為 test_gender ,字符串
	......
);
2. 修改表結構的語法

使用alert table ,可以增加列修改列刪除列重命名等操作

增加列定義語法:

alert table test add(
	-- 可以有多個列定義
	test_add  varchar(50)
	......
);

修改列定義語法:

--將test表中的 test_id 列該成 int 類型的 test_day 列
alert table test test_age modify test_day int;

刪除列定義語法:

--將test表中的 test_day 列刪除
alert table test drop test_day;

數據表的重命名語法:

--將 test 表中的改名為 demo 表
alert table test rename to demo;
  1. 刪除表的語法
    刪除表的語法為:drop table 表名
--例如刪除 demo 表
--drop table  表名
drop table demo;

五、數據庫的約束

在創建數據表時,不僅僅是向前面那樣指定列定義,具備數據表的基本功能,還需要增加約束,約束是在表上強制執行數據的校驗規則,可以更好的保證數據表里數據的完整性,而且,當多張表之間存在依賴關系時,還可以保護相關的數據不被刪除

5種完整性約束(大部分數據庫都支持),可以在建表的時候指定,也可以在建表完成后再進行修改表操作,完成增加約束:

NOT NULL非空約束,指定某列不能為空
NUIQUE唯一約束,指定某列或者幾列組合不能重復
PRIMARY KEY主鍵,指定該列的值可以唯一的標識該條記錄
FOREIGN KEY外鍵,指定該行記錄從屬主表中的一條記錄,用於保證參照的完整性
CHECK檢查,指定一個布爾表達式,用於指定對應列的值必須滿足該表達式

例如重新創建上面的 test 表

create table test(
	-- 可以有多個列定義
	test_id  int  primary key,   --主鍵(唯一,默認非空)	
	test_name  varchar(20) unique,  --唯一(該表數據名字不能重復)
	test_age  int not null,    --非空
	test_gender  char(1)--第四列名為 test_gender ,字符串
	check(test_age>0) --CHECK約束 
	......
);

外鍵約束,下面創建教師表和學生表

--先創建主表
create table teacher(
	t_id int auto_increment, --自動增長
	t_name varchar(30) ,
	primary key (t_id) --這種方式同樣可以設置主鍵
);
create table student(
	s_id in auto_increment primary key,
	s_name varchar(30),
	--外鍵格式:foreign key(外鍵列列名) references 主表名(主表的主鍵)
	foreign key(mysql_teacher) references teacher(t_id)
);

六、DML語句是什么?

DDL操作的是數據庫對象,而DML操作的是數據表里的數據,可以完成:插入新數據、修改數據、刪除數據

1. insert into 語句

往這張表插入數據("1","張無忌","24","男")

編號 姓名 年齡 性別
語法格式:
--insert  into 表名(列1,列2...)value(列1值,列2值...);
insert into test(t_id,t_name,t_age,t_gender) value("1","張無忌","24","男");

或者可以這樣寫,省略列名,但是后面的值注意要和表的列一致

insert into test value("2","葉孤城","31","男");

結果為

編號 姓名 年齡 性別
1 張無忌 24
2 葉孤城 31
2. update 語句

用於修改數據表的記錄,通過使用 where 限定條件,省略 where 條件會將該表該列同時修改,比如將上表的張無忌年齡改成30

語法格式為:

--update 表名 set 列名=30 where 條件;
update test set t_age=30 where t_id=1;
3. delete from語句

用於刪除指定數據表的記錄,不需要指定列名,因為是整行刪除,后面可以用 where 指定記錄,當不寫where條件時,整張表數據都被刪除

語法格式為:

--刪除test表中 t_id等於1的記錄
--delete from 表名  [ where  條件 ]
delete from test  where t_id=1;

七、功能最豐富的查詢語句

select語句的功能就是查詢數據,也是SQL語句里面功能最豐富的語句,select不僅可以單表查詢,還可以多表查詢子查詢

1. 單表查詢

查詢語句:

--查詢 test表所有age大於20的數據的id和名字
select t_id,t_name from test where t_age > 20;
--查詢 tes 表所有 age大於20的所有數據
select * from test where t_age > 20;
--將在test表中查詢到的 t_name 拼接上 "拼接的內容"
select concat(t_name,"拼接的內容") from test;
2. 分組查詢

查詢語句:

--將查詢到的數據按照gender分組
select * from student group by gender;
3. 多表查詢

查詢語句:

--查詢 teacher(教師表)和student(學生表)為男性的數據
select * from teacher,student where gender="男";

去除重復行:distinct

--就算有同名,也只會顯示一個名字
select distinct nane from teacher where gender="男";

自然連接查詢:natural join (自然連接查詢會以兩表中同名列作為連接條件

--查詢兩張表中,學生表的全部和教師表的名字,語句中的student s ,用於簡寫,前面可以用 s 表示student表,因為先運行后面的代碼
select s.*,t.t_name from student s natural join teacher t;

on 子句查詢:也是很常用的連接方式

--join 連接另一張表,使用 on 來指定條件
select student.s_name,course.* from student join course on student.s_id = course.c_id;
4. 子查詢

子查詢其實就是在查詢語句中嵌套另外一個查詢,子查詢可以多層嵌套

--將(select * from teacher)當成數據表來用
select * from (select * from teacher) where age>20;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM