mysql學習的筆記A Mysql和SQL的語法差不多是一樣的,分為以下幾個大類。 1、 數據定義語言(DDL):create , alter ,drop 等 2、 數據操作語言(DML):如插入,修改,刪除等 3、 數據控制語言(DCL):grant,revoke等 我們通過控制台的mysql進行數據庫操作,mysql語句的結束符是 ';' 當我們進入到mysql的控制台之後,可以查看有幾個數據庫 數據庫操作: 顯示所有數據庫:show databases ; 刪除數據庫:drop databases dbname ; 創建數據庫:create database [if not exists] dbname ; 切換數據庫:use dbname ; 表操作: 顯示當前使用數據庫所有的表對象:show tables; 顯示表結構:desc tablename ; (desc -->describe) 創建一張表: create table student( uid int, uname varchar(20), uscore float ) ; 子查詢的建表方式:注意,新表的列名要與子查詢的列明要對應,類型也要一樣。 create table somestudents( uid int , uname varchat(20) ) as select uid,uname from student ; 復制(備份)表: create table student2 as select * from student ; 刪除表:drop table tablename ; 清空表裡面的數據:truncate table tablename ; 與drop from tablename 相似。 重命名表:alter table student rename to students ; 字段操作: 添加一個表字段:alter table student add addr varchar(20) default ‘abcdefg’ ; (--在mysql中是不區分大小寫的,也不區分雙引號或單引號--) 添加多個表字段: alter table student add ( phone1 varchar(8) default ‘12345678’ phone2 varchat(11) default ‘0000000000’ ) ; 修改表字段:將phone1的長度擴展到9位,設置默認值,並設置為表的第一列。 alter table student modify phone1varchar(9) default ‘123456789’ first ; 將phone2設置在phone1字段後面 alter table student modify phone2varchar(11) after phone1 ; 修改多個字段:mysql中alter modify不允許一次修改多個列(就像insert一樣,一個insert可以插入多個行),但是oracle可以,但是mysql中可以通過多個modify來修改多個列。 alter table student modify phone2 varchar(11) default ‘12345678999’, modify phone1 varchar(9) default ‘987654321’ ; 刪除指定字段:alter table student drop phone1 ; 字段重命名:如果需要改變列名,建議使用change,如果只需要改變數據類型和顯示位置用modify。 alter table student change uname name varchar(20) ; 約束: not null :某列的值不能為空 unique: 唯一約束,不能重復,可以為空。 primary key :主見約束,不能重復,不能為空, foreign key :外鍵, check: 指定一個表達式,用於檢查指定數據。(mysql不支持,但是可以寫。) 向表中某一字段添加約束: 非空約束: 添加非空約束:alter table student modify uage int not null ; 取消非空約束:alter table student modify uage int null ; 添加默認約束:alter table student modify uage int default ‘20’ not null ; 唯一約束: 添加唯一約束:alter table student add unique (name ,psw) ;用戶名和密碼不能重復。 alter table student modify name varchar(23) unique ; 刪除唯一約束:alter table student drop index name ;去掉name列的唯一約束。 主鍵約束: 添加一個主鍵約束:alter table student modify uid int primary key ; 刪除主鍵約束: alter table student drop primary key ; 去除表中所有主鍵約束。 添加多個主鍵約束:alter table student add primary key(uid,uname) ; 將主鍵設置為遞增:alter table student modify uid int auto_increment ; 外鍵約束: 增加外鍵約束:alter table student add foreign key(phone,addr) references class(phone,addr) ; 刪除外鍵約束:alter table student drop foreign key phone ; alter table student drop foreign key addr ; 注意:當主表的記錄被從表依賴時,主表的記錄不允許被刪除,除非從表解除這中依賴關系。 check約束: create table temp( id int primary key , age int , check (age > 20 ) ) ; 這裡的約束age>20實際上是不會產生作用的。 索引: 創建索引方式: 自動:當表上定義主鍵約束、唯一、外鍵約束時,該表會被系統自動添加上索引。 手動:手動在相關表或列上增加索引,提高查詢速度。 刪除索引方式: 自動:當表對象被刪除時,該表上的索引自動被刪除 手動:手動刪除指定表對象的相關列上的索引 索引類似於書籍的目錄,可以快速定位到相關的數據,一個表可以有多個索引。 創建索引:create index indexname on student(uid,uname) ; 刪除索引:drop index indexname on student ; 視圖: 視圖就是一個表或多個表的查詢結果,它是一張虛擬的表,因為它並不能存儲數據。 視圖的作用、優點: 限制對數據的訪問 讓復雜查詢變得簡單 提供數據的獨立性 可以完成對相同數據的不同顯示 創建視圖: create view viewname as select uid,uname from student; 通常我們不對view做修改操作,我們可以加上with check option create view viewname as select uid,uname from student with check option ; 刪除視圖:drop view viewname ; 數據操作: 插入語句: insert into 插入: insert into student(uid,uname) vaules(1,’dxd’) ;指定列插入 insert into student values(2,’dd’,xx,xxx,xxxxx) ;完全列插入 insert into student values(3,’gg’,xxx,xxx,xxxxx), (4,’dg’,xxx,xxx,xxxxx), (5,’tg’,xxx,xxx,xxxxx) ;多個記錄插入。 set插入: insert into student set uid=6 , uname=’hh’ ; 更新數據: update student set uname=jdk where uid = 4 ; update student set sscore = sscore+10 ; 刪除數據: delete from student ;刪除全部數據,和truncate一樣。 delete from student where uid = 3 ; select查詢: 查詢表中所有信息:select * from student ; 查詢指定列和條件的數據: select uid,uname from student where uid > 3 ; as對列重命名 select uid ad id from student ; 常量查詢:select 9+1 ; 去掉重復查詢:distinct where查詢:比較,and,or,in,like,between and , order by, is null ,is not null , not , not in ,