MySql數據庫操作

–登錄MySQL:——–

  • Windows環境進入cmd後,輸入mysql –h localhost –u root –p,再輸入密碼就可以啓動mysql;其中localhost是mysql服務器所在的ip,如果是本機可以用localhost。

數據庫相關操作——–

  • create database db_name(數據庫名稱):建名爲db_name的數據庫
  • show databases:查看已經存在的數據庫
  • drop database db_name:刪除名爲db_name的數據庫
  • use db_name:操作名爲db_name的數據庫
  • show tables:顯示數據庫中的表
  • desc table_name:查看錶名爲table_name的表的結構

– 數據庫中表(TABLE)的操作——–

  • Create table table_name(ID int primary key,NAME varchar(50),AGE int ,SEX varchar(10)):創建表且設置了ID爲主鍵
  • create table table_name(stu_id int, course_id int,name varchar(20),grade float,primary key(stu_id,course_id)):設置了表中stu_id和course_id兩個都爲主鍵
  • 外鍵:如果表A的某一個屬性值依賴於表B的主鍵,則稱B爲父表,A爲子表,A中的這個字段爲A的外鍵,如果父表中的信息改變,則對應子表的數據也會改變
    語法:create table table_name01(id int primary key,stu_id int,course_id int ,score float,grade int,constraint c_fk(外鍵別名) foreign key(stu_id,course_id) references table_name02(stu_id,course_id));table_name02是父表,table_name01是子表,給子表設置了兩個外鍵

  • 表字段的非空約束:create table table_name(id int primary key not null,name varchar(50) not null,stu_id int);設置not null表示字段不能爲空,也就是非空

  • 唯一約束,指字段中值不能重複:create table table_name(id int primary key auto_increment,stu_id int unique,name varchar(20) not null);其中設置了id自動增加,且unique設置了stu_id的值必須唯一性,不能有相同的值存在
    E,爲表設置默認值,即在沒有插入數據的時候會用默認值代替;
    Create table table_name(id int primary key auto_increment,stu_id int unique,name varchar(50) not null English varchar(20) default ‘zero’);即爲Englist字段設置了默認值爲zero;

  • show create table table_name;查看錶的詳細結構語句

–表的修改操作——–

  1. 修改表名:alter table 舊錶名 rename [to] 新表名;把表名更改
  2. 修改字段屬性:Alter table table_name modify 屬性名 數據類型(修改後的類型)
  3. 修改字段:alter table table_name change 舊字段名 新字段名 新數據類型
  4. 增加字段:alter table table_name add 字段1 數據類型 after 字段2;在字段2後面增加字段1;如果把字段2改成FIRST即加在最前面
  5. 刪除字段:alter table table_name drop 字段名
  6. 修改字段的位置:alter table table_name modify 字段名 First(第一個位置,after 字段,指定字段的後面)
  7. 更改表的引擎名:alter table table_name engine=Mylsam;
  8. 刪除表的外鍵約束:alter table table_name drop foreign key 外鍵別名
  9. 刪除表:
    9.1:普通的沒有關聯的表:drop table table_name;
    9.2:刪除有關聯的表:先用show create table table_name;查看錶的詳情,看到外鍵的另名,先刪除外鍵,再刪除表格就可以了。

–數據庫的增刪改查操作——–
數據庫的增(insert into)刪(delete)改(update)查(select)操作:
1.添加數據insert into

  • A增加數據分兩種:1,不指定具體字段名如:insert into table_name values(值1,值2…)
  • 指定字段名:insert into table_name(字段1,字段2….)values(值1,值2….);如果是爲指定的字段加數據,只需要寫出需要加數據的字段即可
  • 同事插入多條數據:insert into table_name [字段列表]values(取捨列表1),(取值列表2)…
  • 將一個表的數據插入到別個一張表中:
    Insert into table_name1(字段列表)select (表2字段)from table_name2 where 條件表達式;
    2.更新數據(改)操作update
  • 總體操作是:update table_name set 字段1=值1,字段2=值2…where條件表達式
  • 可以對一定範圍中的數據更改,主要是從where後面的條件來判斷
    3.刪除數據操作delete
  • delete from table_name where 條件表達式
  • Delete from table_name;將會刪除所有數據;
    4.查詢數據query
  • Select 字段名列表 from table_name [where 條件表達式1] [group by 字段名[having條件表達式2]][order by 字段名[ASC(升序)/DESC(降序)]]
  • 單表查詢:select 字段名 from table_name where 條件
  • 帶in關鍵字查詢:
    判斷某個字段的值是否在指定的集合中,是的話就查出來:select 字段名或* table_name where 字段名 in(值1,值2…..)
  • 帶between and 關鍵字的查詢:select *或字段名 from table_name where 字段名 between 值1 and 值2;查找的是範圍在值1與值2之間對應的數據;結果是包含兩端的值的
  • 帶like的匹配查詢一個完整字符串,可以加%或;%表示任意長度的字符串如b%k表示以b開頭,以k對事的任意字符串,而只表示單個字符,如b_k表示以b開始k結束的3個字符的字符串
    方法:select *或字段名 from table_name where 字段名 [not]like 條件;not表示不匹配時
    -空值查詢: select *或字段名 from table_name where 字段名 is [not]null;即查詢[不]爲空的數據

  • and與or的多條件查詢:select *或字段名 from table_name where 條件1 and 條件2;與 from table_name where 條件1 and 條件2;and表示所以條件都必須成立,而or表示只需要其中任何一個條件成立就可以
    F,查詢結果不重複:select distinct 字段名 from table_name;
    5.分組查詢

  • 單獨用group by 分組,結果只會顯示一個分組的一條記錄:
    Select *或字段名 from table_name group by 字段名
  • group by 和group_concat()函數使用:每個分組的所有字段都可以顯示
    Select 字段名,roup_coucat(字段名)from table_name group by字段名
    -group by與集合函數使用:select 字段名,count(字段名)from table_name group by 字段名 having count(字段名) 條件

  • 多字段分組:select * from table_name group by 字段1,字段2…
    E,group by與with rollup一起用
    Select 字段名,count(字段名)from table_name group by 字段名 with rollup

6.用limit限制查詢數據

  • Select * from table_name limit a或(limit a,b),前者是顯示從第一條到a條數據,後者是顯示從a條到b條間的數據

7.使用集合函數查詢數據

  • count()統計數據條數:Select count(*) from table_name
  • sum()求和:Select 字段名,sum(字段名) from table_name where 條件
  • avg()求平均數:Select avg(字段名) from table_name group by 字段名
  • max與min最大與最小值:Select max(字段名)/min(字段名) from table_name;

8.多表連接查詢
- 內連接查詢:兩個以上表中存在意義相同的字段時,可以用該字段來連接表進行查詢.如:select 字段1,字段2,字段3…from table_name1,table_name2 where table_name1.字段a=table_name2.字段b
- 外連接查詢:select 字段列表from table_name01 left/right join table_name02 on table_name01.字段名=talbe_name02.字段名。Letf表示左鏈接,right表示右鏈接
- 複合條件查詢:運用多條件精確查詢

9.用正則表達式查詢

  • 查詢以特定字符開頭的記錄:select * from table_name where 字段名 regexp ‘^a’以a頭
  • 查詢以特定字符結束的記錄:Select * from table_name where regexp ‘xx$;
  • 用符號“.”來代替字符串中任意一個字符:Select * from table_name where name regexp ‘^l..y$’;
    –表或字段取別名——–

  • 表的別名:select * from table_name t where t.字段=值;t就是表的別名
  • 字段的別名:用as關鍵字,如:select t_id as 字段id from table_name where t_id=值 ;t_id就是對應字段的別名,別名可以同真實名一樣使用

–數據庫備份——–

  • mysqldump命令備份:mysqldump –u username –p db_name table1,table2….>BackupName.sql;//其中db_name是數據庫的名稱,table1..是表名,如果沒有表名將備份 整個數據庫,backupname.sql表示備份文件的名稱,前面可以加個絕對路徑
  • 備份多個數據庫:Mysqldump -u username –p –databases db_name1 db_name2… > backupname.sql
  • 備份所有數據庫:Mysqldump –u root –p –all-databases > C:\all.sql
  • 用Mysqlhotcopy工具快速備份
  • 數據庫還原:Mysql –u root –p < backup.sql//其中backup.sql是保存的數據庫文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章