萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 第十三天3月7日之MySQL基礎

第十三天3月7日之MySQL基礎

   一、SQL

  SQL:Structured Query Language的縮寫

  結構化查詢語言

  SQL工業標准:由ANSI(ISO(國際標准委員會international standard orgnation)核心成員)

  按照工業標准編寫的SQL能運行在任何數據庫上。

  方言:只能運行在特定數據庫上的SQL語句叫做方言。

  工業標准和方言:普通話和浙江話。

  二、SQL語言的組成:

  DDL:數據定義語言 Data Definition Language

  DML:數據操作語言 Data Manipulation Language

  DQL:數據查詢語言 Data Query Language

  TPL:事務處理語言 Transaction Process Language

  DCL:數據控制語言

  CCL:指針控制語言

  三、基本知識

  Java定義的類---------------表的結構

  Java對象-------------------表中的記錄

  MySQL:非windows環境下是嚴格區分大小寫的。

  約定:關鍵字都采用小寫。多個單詞組成用_分割。

  四、DDL

  作用:定義數據庫和表結構等的語句。

  關鍵字:create alter drop truncate(摧毀)

  練習:

  1、DDL之數據庫操作

  創建一個名稱為mydb1的數據庫。

  mysql>create database MYDB1;

  查看有哪些數據庫

  mysql>show databases;

  查看創建數據庫的具體細節

  mysql>show create database MYDB1;

  創建一個使用gbk字符集的mydb2數據庫。

  mysql>create database MYDB2 characterset gbk;

  創建一個使用gbk字符集,並帶校對規則的mydb3數據庫。

  mysql>create database MYDB3 characterset gbk collate gbk_chinese_ci;

  刪除前面創建的mydb3數據庫

  mysql>drop database MYDB3;

  查看服務器中的數據庫,並把mydb2的字符集修改為utf8;

  mysql>alter database MYDB2 character setutf8;

  2、DDL之表結構

  選擇一個庫

  mysql>use MYDB1;

  創建一個員工表

  mysql>create table EMPLOYEE(

  IDint,

  NAMEvarchar(200),

  GENDERvarchar(200),

  BIRTHDAYdate,

  ENTRY_DATEdate,

  JOBvarchar(200),

  SALARYfloat(8,2),

  RESUMEtext

  );

  顯示當前庫中的所有表

  mysql>show tables;

  查看表的結構

  mysql>desc EMPLOYEE;

  查看表的創建細節

  mysql>show create table EMPLOYEE;

  在上面員工表的基本上增加一個image列。

  mysql>alter table EMPLOYEE add IMAGEblob;

  修改job列,使其長度為60。

  mysql>alter table EMPLOYEE modify JOBvarchar(60);

  刪除image列。

  mysql>alter table EMPLOYEE drop IMAGE;

  表名改為user。

  mysql>rename table EMPLOYEE to USER;

  修改表的字符集為utf8

  mysql>alter table USER character setutf8;

  列名name修改為username

  mysql>alter table USER change NAMEUSERNAME varchar(100);

  五、DML:Data ManipulationLanguage

  用於向數據庫表中插入、刪除、修改數據

  常用關鍵字:INSERT UPDATEDELETE

  在MySQL中,字符串和日期時間類型,要使用單引號引起來。

  特殊值:null

  練習:

  使用insert語句向USER表中插入三個員工的信息。

  mysql>insert into USER(ID,USERNAME,GENDER,BIRTHDAY,ENTRY_DATE,JOB,SALARY,RESUME) values(1,'wangdongxue','female','1991-09-08','2014-02-17','CEO',100000,'beautygirl');

  mysql>insert into USER values(2,'wangdong','male','1990-09-08','2014-02-17','CTO',100000,'strong man');

  mysql>insert into USER values (3,'查顯成','男性','1988-09-08','2014-02-17','UFO',100000,'帥鍋');

  查看表中的所有記錄

  mysql>select * from USER;

  查看庫的所有的編碼:

  mysql>show variables like'character_set%';

  character_set_client:指示客戶端使用的字符集

  mysql>set character_set_client=gbk; 通知服務器,客戶端使用的是GBK字符集

  character_set_results:指示顯示的結果集使用的字符集

  mysql>setcharacter_set_results=gbk; 通知服務器,客戶端接受的結果使用的字符集為gbk

  將所有員工薪水修改為5000元。

  mysql>update USER set SALARY=5000;

  將姓名為’查顯成’的員工薪水修改為3000元。

  mysql>update USER set SALARY=3000 whereUSERNAME='查顯成';

  將姓名為’wangdong’的員工薪水修改為4000元,job改為CEO。

  mysql>update USER setSALARY=4000,JOB='CEO' where USERNAME='wangdong';

  將王冬雪的薪水在原有基礎上增加1000元。

  mysql>update USER set SALARY=SALARY+1000where USERNAME='wangdongxue';

  刪除表中名稱為’查顯成’的記錄。

  mysql>delete from USER where USERNAME='查顯成';

  刪除表中所有記錄。(DML語句)

  mysql>delete from USER; #一條一條的刪除

  使用truncate刪除表中記錄。 (DDL語句)

  mysql>truncate USER; #刪除整張表,重建的表結構

  六、DQL數據查詢語言

  查詢

  關鍵字:select

  查詢表中所有學生的姓名和對應的英語成績。(投影查詢)

  mysql>select NAME,ENGLISH from STUDENT;

  過濾表中重復數據。

  mysql>select distinct ENGLISH fromSTUDENT;

  在所有學生數學分數上加10分特長分。

  mysql>select NAME,MATH+10 from STUDENT;

  統計每個學生的總分。

  mysql>select NAME,CHINESE+ENGLISH+MATHfrom STUDENT;

  使用別名表示學生分數。

  mysql>select NAME as姓名,CHINESE+ENGLISH+MATH總分 from STUDENT;

  查詢姓名為王五的學生成績

  mysql>select * from STUDENT where NAME='王五';

  查詢英語成績大於90分的同學

  mysql>select * from STUDENT whereENGLISH>90;

  查詢總分大於200分的所有同學

  mysql>select * from STUDENT where(CHINESE+ENGLISH+MATH)>200;

  模糊查詢的pattern: _ 表示匹配一個字符 % 匹配任意字符

  查詢英語分數在 80-90之間的同學。

  mysql>select NAME,ENGLISH from STUDENTwhere ENGLISH between 80 and 90;

  查詢數學分數為89,90,91的同學。

  mysql>select NAME,MATH from STUDENTwhere MATH in(89,90,91);

  查詢所有姓李的學生成績。

  mysql>select * from STUDENT where NAMElike '李%';

  查詢數學分>80,語文分>80的同學。

  mysql>select * from STUDENT whereMATH>80 and CHINESE>80;

  滿足where條件的記錄才會顯示,邏輯運算的結果true。

  對數學成績排序後輸出。

  mysql>select NAME,MATH from STUDENTorder by MATH;

  對總分排序後輸出,然後再按從高到低的順序輸出

  mysql>select NAME,CHINESE+MATH+ENGLISH總分 from STUDENT order by總分 desc;

  注意:order是關鍵字。把關鍵字當做普通標示符對待,使用``(不是單引號,反引號)引起來

  對姓李的數學學生成績排序輸出

  mysql>select NAME,MATH from STUDENTwhere NAME like '李%' order by MATH desc;

  分頁查詢

  查詢前3條記錄

  limit M,N; M開始記錄的索引(從0開始),N一次要查詢的條數

  mysql>select * from STUDENT limit 0,3;

  七、數據的完整性

  數據完整性是為了保證插入到數據中的數據是正確的,它防止了用戶可能的輸入錯誤。

  1、域完整性(列完整性)

  指數據庫表的列(即字段)必須符合某種特定的數據類型或約束

  ID int(11):該字段必須是整數,長度不能超過11

  NAME varchar(100) not null:不能為null

  USERNAME varchar(100) unique:有的話必須唯一

  2、實體完整性(記錄完整性)

  規定表的一行(即每一條記錄)在表中是唯一的實體

  主鍵約束:primary key

  ID int primary key; ID就是主鍵(不能為null,而且是唯一的)

  或者

  ID int,

  primary key(ID)

  MySQL:主鍵可以自動增長。auto_increment(主鍵的值由MySQL數據來管理和維護)。oracle中沒有自動增長。

  create table T2(

  ID int primary keyauto_increment,//auto_increment是方言,不是標

copyright © 萬盛學電腦網 all rights reserved