一般,DQL(數據庫查詢語言)非標準的,因為數據庫主要用來查詢數據,所以把它單獨看做一個分類
這里建議將路徑配到環境變量path那里去
mysql -uroot -p
create database 庫名稱 [character set 碼表名稱 collate 字符校對集名稱]
create database student;-- 創建數據庫create database student character set utf8;-- 創建數據庫student,制定碼表為utf8(舊版寫為utf-8,新版為utf8)PS:只可以修改數據庫的碼表,不可以修改數據庫的名稱
alter database 數據庫名稱 character set 數據庫碼表 [collate 校對集名稱];
alter database student charset utf8 collate utf8_bin;-- 修改數據庫的碼表以及校對集
可以看到除了自己創建的庫之外,還有一些其他庫。其他庫(除了test)不要亂動。因為是保存mysql的配置信息,賬戶信息等等。 test庫 : 自動創建用于測試的。
use student;– 制定使用數據庫student
創建庫 create database 庫名 [character set 碼表 collate 字符校對集] 顯示所有庫 show databases; 刪除庫 drop database 庫名; 修改數據庫碼表 alter database 庫名 character set 碼表 collate 字符校對集 使用數據庫 use 庫名 查看當前使用的庫 select database(); 顯示創建庫語句 show create database 庫名;
CREATE TABLE table_name ( field1 datatype 約束/主鍵約束 auto_increment, field2 datatype 約束, field3 datatype 約束 )[character set 字符集 collate 校對規則]
create table student (name varchar(10),sex enum('男','女'),money int) charset utf8;-- 創建表studentalter table 表名 add 列名 類型;
alter table student add phone varchar(10);-- 表新增一列drop table 表名;
drop table student;-- 刪除數據庫alter table 表名 drop 列名;
alter table student drop money;--刪除列alter table 表名 modify 列名 類型;
alter table student modify phone varchar(11);-- 修改列屬性alter table 表名 change 舊列名 新列名 數據類型;
alter table student change sex gender enum('男','女');-- 修改列的名稱,類型一定需要寫出來rename table 舊表名 to 新名;
rename table student to teacher;--修改表名為teacher(如果創建表時不指定,默認使用數據庫的字符集)
alter table 表名 character set 字符集 collate 校對集;
alter table student charset utf8 collate utf8_bin;--極少使用,創表時候一般會制定,制定后極少修改
insert into 表名[(列名1,列名2…)] values (值1,值2…);
_匹配一個字符, %匹配0~n個字符
select * from student where name like '%a%';--查詢名字有a的同學信息null與任何數字計算結果都是null.上面的寫法是錯誤的. 使用IFNULL(參數1,參數2) 函數解決. 判斷參數1的值是否為null,如果為null返回參數2的值.
select sal*12 + IFNULL(comm,0) from emp;--如果comm為null,那么就將值設置為0asc: 升序(默認) desc:降序
select * from stu order by age asc;--升序排序查詢1.非空約束(not null) 指定非空約束的列, 在插入記錄時 必須包含值. 2.唯一約束(unique) 該列的內容在表中. 值是唯一的. 3.主鍵約束(PRimary key) 當想要把某一列的值,作為該列的唯一標示符時,可以指定主鍵約束(包含 非空約束和唯一約束). 一個表中只能指定一個主鍵約束列.主鍵約 束 , 可以理解為 非空+唯一. 注意: 并且一張表中只能有一個主鍵約束.
DOUBLE 和 DECIMAL 區別? DOUBLE類型在運算時會有精度的缺失。 DECIMAL 就是解決精度缺失問題的。(底層使用字符串來保存數字)
單純想表示小數屬性時,使用double。 需要頻繁參與運算的小數,使用decimal。
注意: 字符串類型要使用單引號包裹.
CHAR/VARCHAR (最大長度255字節) ====================================================
問題:char和varchar有什么區別? char定長字符串.varchar表示變長字符串. 同時指定長度為10。當存儲 abc char =》 ‘abc ’ varchar => ‘abc’ 結論: 開發中varchar用的最多。 char只在表示固定長度的枚舉中使用。例如 :性別(用01,02表示) ====================================================
*TEXT/CLOB 保存文本(字符流) –> 當要保存的內容超過255字節時使用. java中的writer 字符 BLOB 保存字節(字節流) –> 開發中用不到 java中的stream 字節 Character Large Object binary Large Object
區別: text:只能存儲字符數據. BLOB:可以存儲字符和多媒體信息(圖片 聲音 圖像)
問題: datatime 和 timestamp 區別? 這兩種類型記錄的數據是一模一樣. 區別在于插入的時候,如果插入datatime類型時,沒有 傳值,那么該類型默認值就是null; 如果插入timestamp類型時,沒有 傳值,那么該類型默認值就是當前時間;
新聞熱點
疑難解答