MYSQL
SQL分類
- 數據庫定義語言:DDL用來定義數據庫對象:數據庫database,表table,列column等。關鍵字:創建create,修改alter,刪除drop等(結構)
- 數據操作語言:DML,用來對數據高庫中表的記錄進行更新。關鍵字,插入insert,刪除delete,更新update等(數據)
- 數據查詢語言:DQL,用來查詢數據庫中表的記錄。關鍵字:select,from,where等
- 數據控制語言:DCL用來定義數據庫的訪問權限和安全級別及創建用戶;關鍵字:grant
數據庫操作
- 創建數據庫
- create database 數據庫名;
- create database 數據庫名 character set 字符集;
- 查看數據庫
- show databases;(查看數據庫服務器中所有的數據庫)
- show create database 數據庫名;(查看某個數據庫的定義的信息)
- 刪除數據庫
- drop database 數據庫名;
- 其他的數據庫操作命令
- 切換數據庫:use 數據庫名;
- 查看正在使用的數據庫:select database();
表操作
- 創建表
- create table 表名(字段名 類型(長度) [約束],表名(字段名 類型(長度) [約束]);
- 單列約束
- 主鍵約束:primary key,要求被修飾的字段:唯一和非空
- 唯一約束:unique,要求被修飾的字段:唯一
- 非空約束:not null,要求被修飾的字段:非空
- 查看錶
- 查看數據庫中的所有表:show tables;
- 查看錶結構
- desc 表名;
- 查看錶的字符集:show create table 表名;
- 刪除表
- drop table 表名;
- 修改表
- 添加一列 alter table 表名 add 字段名 類型(長度)[約束];
- 修改列的類型(長度、約束):alter table 表名 modify 要修改的字段名 類型(長度)[約束]
- 一系列的修改
- alter table 表名 change 舊列名 新列名 類型(長度)[約束]; 修改表的列名
- alter table 表名 drop 列名; 刪除列
- rename table 表名 to 新表名; 修改表名
- alter table 表名 character set 字符集; 修改字符集
- 查看錶數據
- select * from 表名;
表記錄的操作
插入記錄
- 語法
- insert into 表 (列名1,列名2) values (值1,值2); 向表中插入某些列
- insert into 表 values (值1,值2); 向表中插入所有列,這個必須爲每個字段設置數據
- 注意
- 列名數與values後面的值的個數相等
- 列的順序與插入的值的順序一致
- 列名的類型與插入的值要一致
- 插入值的時候不能超過最大長度
- 值如果是字符串或者日期需要加引號
- 例如
- insert into 表 (字段) values (‘值’);
更新記錄
- 語法
- update 表 set 字段名=值,字段名=值; 這個修改數據庫裏面該列的所有全部修改
- update 表 set 字段名=值,字段名=值 where 條件; 通過條件修改某一個需要修改的字段
刪除記錄
- 語法
- delete from 表名; 刪除所有的數據
- delete from 表名 where 條件; 通過條件刪除某一個需要刪除的字段
注:
- 數據刪除後自增id不會重置
- delete與truncate的區別
- delete刪除的時候是一條一條的刪除記錄的,通過回滾可以找回數據rollback;
- Tryncate刪除,它是將整個表刪除,會創建一張一樣的表,Tryncate刪除的數據無法找回
查詢數據
- 語法
- select [distinct]* | 列名 from 表名;查詢表中的指寫列或所有數據 *代表所有列
- select [distinct]* | 列名 from 表名 where 條件; 根據條件查詢所有的數據
- select * from 表名 as t; 使用表的別名查詢數據
- 例:select * from table as t; 別名在多表的時候可以使用,這裏先了解下
- select 列名 as 別名 from 表名; 使用列別名查詢數據 查詢某一列
- select distinct(列名) from 表名; 去掉重複值,這裏只是查詢,別理解錯誤
- select 列名,數值型數據 from 表名; 這裏是將數值類型的數據加值操作
- 注:多個列名使用逗號隔開
- select * from 表名 where 列名 in (條件);查詢某個範圍中的值
- select * from 表名 where 字段 = 條件 or 字段 = 條件;
- select * from 表名 where 字段 like ‘%條件%’;模胡查詢
- select * from 表名 where 列名 條件 and 列名 條件; 多個條件成立
- select * from 表名 where 列名 條件 or 列名 條件; 或條件成立,其中某一個條件成立既可
常見問題
- 插入數據中文亂碼的問題或者是不能插入中文
- 兩種修改方式
- 在mysql的安裝路徑裏面有一個my.ini的配置文件裏面有一行:default-character-set=utf8和character-set-server=utf8將這裏的utf8修改成gbk,在命令行裏面重啓mysqle服務
net stop mysql關閉mysql服務net start mysql開啓mysql服務既可
- 登陸mysql,在執行
set names gbk;
既可,這裏推薦使用第二種寫法
- 在mysql的安裝路徑裏面有一個my.ini的配置文件裏面有一行:default-character-set=utf8和character-set-server=utf8將這裏的utf8修改成gbk,在命令行裏面重啓mysqle服務
- 兩種修改方式