Mysql數據庫基本操作

Mysql數據庫基本操作

Mysql第一階段:

第一階段對於新手來說,主要是熟悉mysql中的語句有什麼作用,這段時間主要在文本框中敲打mysql語句,然後在MySQL的運行框中運行,以此來檢查自己所寫的語句是否正確。

Mysql中的一些語句使用方法:

#查看所有的數據庫

show databases;

注:Sql語句不區分大小寫  但是嚴重區分中英文符號,不允許使用中文符號

#創建數據庫

create database test1227;

#使用數據庫

use test1227;

注:使用數據庫時,千萬不要忘了這句,新手很容易忘記。

#創建表   需要創建主鍵  主鍵是唯一的,不能爲空  int(10):10代表的是數字長度

#若不定義長度,默認長度爲11  primary key爲主鍵(唯一標識) auto_increment:設置自增

#varchar:爲字符串  默認長度爲255  unique:唯一約束   not null 不爲空約束

create table student(

id  int(10)primary key  auto_increment,

name varchar(20) unique,

age int(5) default 16,

sex char(2) not null

);

#查看錶設計

desc student;

注:創建表之後,可以通過查看錶設計,來檢查創建的表是否滿足需求

增:

#不按照字段添加   那麼就需要按照表設計的字段順序添加

insert into student values(2,'李四',21,'男');

 

#按照字段添加   必須主鍵設置自增,否者必須給主鍵賦值

insert into student(name,age,sex) values('王五',25,'女');

 

insert into student(name,sex) values('趙六','男');

insert into student(name,age,sex) values('小凳子',27,'男');

#添加多條數據

insert into student(name,age,sex) values('小紅',22,'女'),('小華',26,'男'),('小白',29,'男');

刪:

 

#刪除表

drop table student;

 

#刪除數據庫

drop database test1227;

 

 

 

#刪除 drop  與delete 的區別:

#drop 是刪除表,表不存在  delete 是刪除表中的數據,表仍然存在

delete from student where id = 1;

 

delete from student where sex = '男';

 

delete from student where sex='女' and age = 22;

#刪除表中的所有數據,表存在

delete from student;

注:where這裏是判斷的意思

改:

#修改   切記:修改  set後面使用逗號分隔 而不是用and  只有where 條件語句後使用and  代表 並且

update student set name='小名',age = 26,sex='女' where id = 2;

update  studentset name='光頭強' where name = '小紅';

update student set age = 30 where name='王五' and sex = '女';

 

查:

查是數據庫中的重點!

# * 代表的是所有字段  查看當前表中的所有數據

select * from student;

 

 

#只查詢姓名和年齡 select  後爲查詢的字段  from  表

select name,age from student;

 

 

#查詢年齡爲26的學生信息

select id,name,age,sex from student where age = 26;

 

 

#查詢年齡不是26的學生信息  != <>

select id,name,age,sex from student where age !=26;

select id,name,age,sex from student where age <>26;

 

select id,name,age,sex from student where age >=26;

 

 

#查詢id 爲偶數的學生信息

select id,name,age,sex from student where id %2=0;

#查詢姓‘小’ 的學生名   %代表多個字符

select name from student where name like '小%';

 

#  _爲一個字符

select name from student where name like '小__';

 

 

insert into student(name,age,sex) values('白居易',29,'男');

insert into student(name,age,sex) values('王白石',26,'男');

 

#like 模糊查詢

#代表開頭有“白”

select name from student where name like '白%';

#代表結尾有“白”

select name from student where name like '%白';

#代表字符中間有“白”

select name from student where name like '%白%';

 

 

#查詢年齡在26-29之間(包含26,29)的學生信息

select id,name,age,sex from student where age between26 and 29;

 

#查詢id  包含 4,8,13,14的學生信息

 

select id,name,age,sex from student where  id in (13,8,4,14);

 

#分頁  第一個參數爲索引 ,通過索引得到頁數   第二個參數爲每次顯示的條數

select id,name,age,sex from student limit 4,2;

 

 

#將學生的年齡從小到大排序  order by 爲排序本身就有從小到大的功能  asc小-大   desc:大-小  

select id,name,age,sex from student order by age  desc;

 

 

#聚合函數 count(統計總數)  sum (求和) avg (平均值) max(最大值)  min(最小值)

 

select count(*) from student;

 

select count(id) from student;

#字段和表都可以定義別名

select count(1) from student; 定義別名  英語不需要定義單引號  中文需要定義單引號

 

#統計男 女分別的人數

select count(id) as '總數',sex as se fromstudent group by sex;

 

select count(id) '總數',sex '性別' from student group by sex;

 

 

#統計男女人數大於3的人數 having爲條件語句必須與group by 聯合使用 不能單獨使用  where     只有有條件判斷都可以使用

select count(id) '總數',sex '性別' from student group by sex having 總數 >3;

 

 

select count(id) co ,sex '性別' from student group by sex having co >3;

 

 

select sum(age) from student;

 

select avg(age) from student;

 

select max(age) from student;

 

select min(age) from student;

 

以上就是對數據的增刪改查,這些操作都是對數據庫中的數據操作,下面,我們來介紹對於表設計的修改

表設計修改:

#添加字段

alter table student add address varchar(50) not null;

 

 

#將name修改爲username

alter table student change name username varchar(20);

 

#sex char(2) 改爲varchar(2)

alter table student change sex sex varchar(2);

 

 

#將age 放到address 後面

alter table student modify age int(5) after address;

 

#刪除address

alter table student drop address;

 

 

#將student表名修改爲stu

alter table student rename stu;

 

接下來就來說下多表連接,多張表之間的聯繫

#表關係:  一對一  一對多   多對多

主鍵關聯主鍵  等值連接

select t.name,s.username,s.age,s.sex from teachert,stu s where s.id = t.id;

 

#交叉連接

 

select t.name,s.username,s.age,s.sex from teachert  cross join stu s on s.id = t.id;

 

 

#內連接:避免笛卡爾積,並且在數據量多的情況下 提高查詢的效率

 

select t.name,s.username,s.age,s.sex from teachert  inner join stu s on s.id = t.id

 

 

#以上三種連接 獲取的都爲表的交集

 

 

#外連接:左連接   右連接 

#左連接  查詢左邊表的所有數據  右邊只查詢關聯id 相同的數據

select t.name,s.username,s.age,s.sex from teachert  left join stu s on s.id = t.id;

 

 

select t.name,s.username,s.age,s.sex from stu s rightjoin teacher t on s.id = t.id;

 

#一張表的外鍵是另外一張表的主鍵  外鍵可以創建多個  但是主鍵只能創建一個  主鍵的值爲唯一  外鍵的值可以重複

 

#設置外鍵  必須先給主鍵的表創建了數據才能給外鍵表進行添加數據   ondelete cascade :級聯刪除

#設置了級聯刪除  既可以刪除主表數據又可以刪除外鍵表數據,一旦刪除主表數據,外鍵關聯的數據一併刪除

alter  tablestudent add constraint foreign key(tid) references teacher(id)  on delete cascade;

 

#創建視圖,視圖爲一張虛擬的表,創建視圖的目的是爲了提高查詢的效率,當一張表中有很多字段時,而在查詢過程中不需要那麼多的字段,那麼可以通過視圖創建一張虛擬的表

#表數據與原表的數據完全一致

 

create view stu_view as select id,name from student;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章