1. 程式人生 > >mysql學習筆記

mysql學習筆記

刪除表 union 運算 reg not null ins 修改 format 數據庫名

1、SQL語句分為數據操作語言(DML)和數據定義語言(DDL)

數據操作語言部分:

  • select 獲取數據
  • update 更新數據
  • delete刪除數據
  • insert into 插入數據

數據定義語言部分:

  • create database 創建新數據庫
  • alter database 修改數據庫
  • create table創建新表
  • alter table 修改數據表
  • drop table 刪除表
  • create index 創建索引
  • drop index 刪除索引

2、 語法
(1)select語句
  SELECT 列名稱 FROM 表名稱
  列名可以是*,會查詢出所有列
(2)select distinct語句
  SELECT DISTINCT 列名稱 FROM 表名稱
  只會查詢出值不同的行
(3)where子句
  SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 條件值
  為別的語句添加條件,運算符有=,!=,>,<,<=,>=,between,like
  條件值如果是字符串用‘‘括起來
  like的使用語法是select 列名稱 from 表名稱 where 列名稱 like 匹配條件
  匹配條件是‘a%‘,就是篩選出這個列中以a開頭的所有行,%是通配符
  and和or,用於分隔條件,and是與,or是或
(4)order by語句
  SELECT 列名稱 FROM 表名稱 order by 列名稱
  會根據列進行升序操作
  SELECT 列名稱 FROM 表名稱 order by 列名稱 desc
  會根據列進行降序操作
(5)insert into語句
  insert into 表名稱 (列1,列2) values(值1,值2)
  insert into 表名稱 values(值1,值2)
(6)update語句
  更新某一列
    update 表名稱 set 列名稱=值2 where 列名稱=值1
  更新某幾列
    update 表名稱 set 列1=值1,列2=值2 where 列1=值3
(7)delete語句
  刪除某一行
    delete from 表名稱 where 列1=值1
  刪除所有行,保留表結構
    delete from 表名稱
  delete * from 表名稱
(8)top子句和 top percent子句
  選取前2條記錄
  select 列名稱 from 表名稱 limit 2
  mysql不支持top子句,top percent子句也不支持
(9)in子句
  匹配多個值
  select 列名稱 from 表名稱 where 列名稱 in (值1,值2)
(10)between子句
  mysql的between查詢結果會包括值1和值2,數據庫不同這個結果可能不同
  select 列名稱 from 表名稱 where 列名稱 between 值1 and 值2
  在between前加個not,會查詢出相反的結果
  select 列名稱 from 表名稱 where 列名稱 not between 值1 and 值2

3、
(1)通配符
  使用通配符是一般是搭配like子句
  %代表任意多字符
  _代表任意一個字符
  [^asd]/[!asd]除了asd之外的任意一個字符(在mysql中!是沒用的,必須要用^)
  [asd]asd中的任意一個字符(在mysql中like是不能跟[]搭配的,[]必須要跟regexp搭配)
  當使用regexp時,匹配田間就不是%和_,而是^(非),*(匹配前面的子表達式0次或多次),+(匹配前面的子表達式一次或多次),{n}(例如a{2}匹配2個a),{n,m}(例如a{2,3}匹配a最少2個最多3個)
(2)alias別名
  表名的別名
    select 列名稱 from 表名稱 as 表別名
  列的別名
    select 列名稱 as 列別名 from 表名
(3)關聯2個表
  可以通過外鍵關聯
    select 表1.列1 表2.列1 from 表1,表2 where 表1主鍵名=表2列名
  也可以通過join:
    inner join:在表中存在至少一個匹配,返回該行
    left join:從左表返回所有行,即使右表沒有匹配
    right join:從右表返回所有行,即使左表沒有匹配
    full join:會返回所有行,即使左右表都沒有匹配
(4)合並多個結果集
  union語句
  合並不重復的值
    select語句1 union select語句2
  合並不重復的值
    select語句1 union all select語句2
(5)把列插入到另一個表中
  select 表名稱 into 新表名[數據庫名] from 舊表名
(6)sql約束
  not null 如果不向字段添加值,就無法更新數據或插入數據
  unique唯一,但是可為空 建表時在最後一行加上unique key(列名)即可
    撤銷unique約束alter table 表名稱 drop index 列名稱
  primary key主鍵
    撤銷主鍵使用alter table 表名稱 drop primary key
  foreign key 外鍵 foreign key (本表列名) references 其他表名稱(其他表主鍵)
    撤銷外鍵約束alter table 表名稱 drop foreign key 外鍵名
  check約束 用於約束列中值得範圍 check(類名稱>0)類中的值要大於0
    撤銷check約束alter table 表名稱 drop constraint 被check約束列名稱
  defuault默認
    將默認值添加到有default約束的列
    撤銷default約束alter table 表名稱 alter 列名稱 drop default
(7)索引
  create index語句用於創建索引,所有可以使用重復的值,索引值不能是數字
  create index 索引名 on 表名稱(列名稱)
  創建唯一索引:2行不能擁有一樣的索引值
  create unique index 索引名 on 表名稱(列名稱)
  刪除索引alter table 表名稱 drop index 索引名
(8)改變表結構操作
  刪除表中所有數據:drop table 表名稱
  刪除表中所有數據,保留表結構 :truncate table 表名稱
  添加列:alter table 表名稱 add 列名稱 數據類型
  刪除列:alter table 表名稱 drop column 列名稱
  改變列數據類型:alter table 表名稱 alter column 列名稱 新數據類型
(9)auto-increment自增,只有主鍵才能使用這個約束,每次更新加1,從1開始
  改變起始值:alter table 表名稱 auto-increment=值1
(10)時間函數
  now()當前日期時間
  curdate()當前日期
  curtime()當前時間
  date_format()格式化時間
(11)函數
  select 函數名(列名稱) from 表名稱
  avg()平局值
  count()行數
  max()最高值
  min()最低值
  sum()總和
  group by語句 用於對結果集進行分組,通常用於合計函數,合並相同名稱的行
  select 列名稱 sum(列名稱) from 表名稱 group by 列名稱
  having子句:合計函數不能增加where條件判斷,要使用having子句
  select 列名稱,函數名(列名稱) from 表名稱 having 函數名(列名稱)<200
  ucase()轉為大寫
  select ucase(列名稱) from 表名稱
  lcase()轉為小寫
  mid()從字段中提取字符
  select mid(列名,起始位置,提取長度)from 表名
    提取長度屬性是可選的
  len()返回字段長度
  round()格式化小數
  select round(列名稱,小數位數)from 表名稱

mysql學習筆記