Mysql基礎知識

  1. 創建數據庫
    創建一個名稱爲mydb1的數據庫。
    create database mydb1;
    創建一個使用utf8字符集的mydb2數據庫。
    create database mydb2 character set gbk;
    創建一個使用utf8字符集,並帶校對規則的mydb3數據庫。
    create database mydb3 character set utf8 collate utf8_bin
  2. 查看、刪除數據庫
    顯示數據庫語句:
    SHOW DATABASES
    顯示數據庫創建語句:
    SHOW CREATE DATABASE db_name
    數據庫刪除語句:
    DROP DATABASE [IF EXISTS] db_name
  3. 修改數據庫
    ALTER DATABASE [IF NOT EXISTS] db_name
    [alter_specification [, alter_specification] …]
    alter_specification:
    [DEFAULT] CHARACTER SET charset_name | [DEFAULT]
    COLLATE collation_name
    查看服務器中的數據庫,並把其中某一個庫的字符集修改爲utf8;
    alter database mydb3 character set gbk;
    4 選擇數據庫
    use db_name;
    查看當前使用的數據庫:
    select database();
  4. 創建表(基本語句)
    在這裏插入圖片描述
    character set 字符集 , collate 校對規則
    field:指定列名, datatype:指定列類型
    注意:創建表時,要根據需保存的數據創建相應的列,並根據數據的類型定義相應的
    列類型。例:user對象
    在這裏插入圖片描述
    desc 表名 來查看錶結構
    6 MySQL常用數據類型
    ○ 字符串型
     VARCHAR、CHAR, name varchar(20)、 addr char(20) 最大限度255
    varchar相對於char在存儲數據上是可變的,數據長度有多少,就在數據庫當中
    存儲多少個字符,並不是每次都存儲20個字符。

char不計數據的長度每次都會固定讀取20個字符的數據,但是在查詢效率上char
比varchar更高,因爲varchar需要先獲取數據的長度,再讀取,而char可以直接讀
取。
○ 大數據類型
 BLOB、TEXT
○ 數值型
 TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
○ 邏輯型
 BIT 0 1
○ 日期型
 DATE、TIME、DATETIME、TIMESTAMP
3. 定義單表字段的約束
○ 定義主鍵約束
 primary key:不允許爲空,不允許重複
 刪除主鍵: 如果主鍵是自增的話,要現將主鍵的自增刪除,再刪除主鍵。
刪除自增:alter table tablename modify id int;
alter table tablename drop primary key ;
 主鍵自動增長 :auto_increment
○ 定義唯一約束 – 唯一索引
 unique
 例如:name varchar(20) unique
○ 定義非空約束
 not null
 例如:salary double not null
○ 外鍵約束
4. 查看錶信息
查看錶結構:
desc tabName
查看當前所有表:
show tables
查看當前數據庫表建表語句
show create table tabName;
9. 修改表
在上面員工表的基本上增加一個image列。
alter table employee add image blob;

	修改job列,使其長度爲60。modify
	alter table employee modify job varchar(60);
	刪除gender列。drop
	alter table employee drop gender;
	
	表名改爲emp。
	rename table employee to emp;
	
	修改表的字符集爲utf8
	alter table emp character set utf8;
	
	列名name修改爲username
	alter table emp change name username varchar(20);

	修改姓名爲唯一約束
	alter table emp change username username varchar(20) unique;
	修改salary字段爲非空約束
	alter table emp change salary salary double not null;
  1. 刪除表
    drop table tabName;

    數據庫表中的數據操作–CRUD

    1. 數據庫的CRUD
      insert – 插入數據
      select – 讀取數據
      update – 更新數據
      delete – 刪除數據
  2. 使用 INSERT 語句向表中插入數據。
    a. insert into table_name values(value1,value2….);
    (1)在插入數據的時候,可以在表名後添加上部分或全部字段的名
    稱,那麼在values後就需要填寫對應字段的全部數據。沒有指定
    填寫的字段,不需要values中書寫。
    (2)在書寫字段名稱部分,字段可以是無序的,書寫的字段順序是什
    麼,那麼values中書寫的值的順序就是什麼。
    c. 插入的數據應與字段的數據類型相同。
    d.數據的大小應在列的規定範圍內,例如:不能將一個長度爲80的字符串加入
    到長度爲40的列中。
    e. 在values中列出的數據位置必須與被加入的列的排列位置相對應。
    f. 字符和日期型數據應包含在單引號中
    g. 插入空值:不指定或insert into table value(null)
    h. 如果要插入所有字段可以省寫列列表,直接按表中字段順序寫值列表
    set names gbk;臨時修改當前CMD窗口和mysql的通信編碼字符集

  3. Update語句
    將所有員工薪水修改爲5000元。
    update employee set salary = 5000;
    將姓名爲’jack’的員工薪水修改爲3000元。
    update employee set salary = 3000 where name=‘jake’;
    將姓名爲’luce’的員工薪水修改爲4000元,job改爲ccc。
    update employee set salary = 4000,job=‘ccc’ where name= ‘luce’;
    將’tom’的薪水在原有基礎上增加1000元。
    update employee set salary = salary + 1000 where name=‘tom’;.

  4. Delete語句
    刪除表中名稱爲’ls’的記錄。
    delete from employee where name=‘ls’;
    刪除表中所有記錄。
    delete from employee;
    使用truncate刪除表中記錄
    truncate employee;
    拓展:
    truncate刪除表結構並會重新建立表結構,以此形式來刪除表中數據。這種刪除方式可能會影響到表與表直接的關係,

Select語句
查詢表中所有學生的信息。
select * from exam ;
查詢表中所有學生的姓名和對應的英語成績。
select name,english from exam;
過濾表中重複數據。distinct去重
select distinct english from exam;

	在所有學生分數上加10分特長分顯示。
		select name,chinese+10,math+10,english+10 from exam;
	統計每個學生的總分。
		select name,chinese+math+english from exam;
	使用別名表示學生總分。
		select name,chinese+math+english as sum from exam;
		select name,chinese+math+english sum from exam;

查詢姓名爲張飛的學生成績。
select * from exam where name=‘張飛’;
查詢英語成績大於90分的同學。
select * from exam where english > 90;
查詢總分大於200分的所有同學。
select name,chinese+math+english sum from exam where chinese+math+english>200;
在where字句中不能使用select語句裏的別名,因爲where關鍵字比select關鍵字執行順序靠前
from — where — select

查詢英語分數在 80-100之間的同學。
select * from exam where english between 80 and 100;
select * from exam where english >= 80 and english <= 100;
查詢數學分數爲65,75,77的同學。
select * from exam where math in(65,75,77);
查詢所有姓張的學生成績。
select * from exam where name like ‘張%’;
查詢數學分>70,語文分>80的同學。
select * from exam where math > 70 and chinese > 80;
select * from exam where math > 60 or chinese <90;
查詢數學成績爲null的學生
insert into exam values(null,‘ls’,60,null,90);
select * from exam where math is null;
order by
對語文成績排序後輸出。
select chinese from exam order by chinese desc;
對總分排序按從高到低的順序輸出
select name,chinese+math+english as sum from exam order by sum desc;
對姓張的學生成績排序輸出
insert into exam values(null,‘張飛飛’,11,12,13);
select name,chinese+math+english as sum from exam where name like ‘張%’ order by sum asc;

ifnull的使用:
	select name,ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0) from exam;
	#select math from exam;
	select ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0) as sum from exam order by sum;

聚集函數
count練習:
統計一個班級共有多少學生?
select count(name) from exam;
select count(math) from exam;
統計數學成績大於90的學生有多少個?
select count(math) from exam where math>90;
統計總分大於230的人數有多少?
select count(ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0)) from exam where ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0) > 230;
sum練習:
統計一個班級數學總成績?
select sum(math) from exam;
統計一個班級語文、英語、數學各科的總成績
select sum(math),sum(chinese),sum(english) from exam;
統計一個班級語文、英語、數學的成績總和
select sum(ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0)) from exam;
統計一個班級語文成績平均分
平均分 = 總分/總人數
select sum(chinese)/count(chinese) from exam;
avg練習:
求一個班級數學平均分?
select avg(math) from exam;
求一個班級總分平均分?
select avg(ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0)) from exam;
max/min函數
練習:
求班級最高分和最低分 (數值範圍在統計中特別有用)
select max(ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0)),min(ifnull(math,0)+ifnull(chinese,0)+ifnull(english,0)) from exam;
where和having區別:where在分組前進行條件過濾,having在分組後進行條件
過濾。使用where的地方都可以用having替換。但是having可以使用分組函
數,而where後不可以使用。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

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