新建資料庫、操作資料庫、建立資料庫表等
1、連線資料庫
命令列連線
1. mysql -u root -p123456 --連線資料庫
2. update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost'; --修改密碼
3.flush privileges; --重新整理許可權
-------------------------------------------
--所有的語句都是用;結尾
show databases; --檢視所有的資料庫
mysql> use school --切換資料庫 use 資料庫名
Database changed
show tables --檢視資料庫中所有的表
describe student; --顯示資料庫中所有的表的資訊
create database westos; --建立一個數據庫
exit --退出連線
ctrl+C是強行終止
-- 單行註釋(SQL的本來的註釋)
/*
多行註釋
*/
2、操作資料庫
操作資料庫>操作資料庫中的表>操作資料庫中表的資料
2.1操作資料庫(瞭解)
1、建立資料庫
CREATE DATABASE [IF NOT EXISTS] student3;
2、刪除資料庫
drop database [IF EXISTS] student3
3、使用資料庫
-- 如果你的表名或者欄位名是一個特殊字元,就需要帶``
USE `school`
4、檢視資料庫
show databases -- 檢視所有的資料庫
學習思路:
-
對照sqlyog視覺化歷史記錄檢視sql
-
固定的語法或關鍵字必須要強行記住!
2.2資料庫的列型別
數值
-
tinyint 十分小的資料 1個位元組
-
smallint 較小的資料 2個位元組
-
mediumint 中等大小的資料 3個位元組
-
int 標準的資料 4個位元組 常用的
-
bigint 較大的資料 8個位元組
-
float 浮點數 4個位元組
-
double 浮點數 8個位元組 (精度問題)
-
decimal 字串形式的浮點數 金融計算的時候,一般使用decimal
字串
-
char 字串固定大小的 0~255
-
varchar 可變字元 0~65535 常用的 String
-
tinytext 微型文字 2^8-1
-
text 文字串 2^16-1 儲存大文字
時間日期
java.util.Date
-
date YYYY-MM-DD 日期格式
-
time HH:mm:ss 時間格式
-
datetime YYYY-MM-DD HH:mm:ss 最常用的時間格式
-
timestamp 時間戳 1970.1.1到現在的毫秒數! 也較為常用!
-
year 年份表示
null
-
沒有值,未知
-
<!--注意,不要使用NULL進行運算,結果為NULL-->
2.3資料庫的欄位屬性(重點)
Unsigned:
-
無符號的整數
zerofill:
-
0填充的
-
不足的位數,使用0來填充,int(3), 5---005
自增:
-
通常理解為自增,自動在上一條記錄的基礎上+1(預設)
-
通常用來設計唯一的主鍵 ~ index,必須是整數型別
-
可以自定義設計主鍵自增的起始值和步長
非空 NULL not null
-
假設設定為 not null ,如果不給它賦值,就會報錯!
-
NULL,如果不填寫值,預設就是null!
預設:
-
設定預設的值
-
sex,預設值為男,如果不指定該列的值,則會有預設的值
2.4、建立資料庫表(程式碼方式)(重點)
-- 目標:建立一個school資料庫
-- 建立學生表(列,欄位) 使用SQL 建立
-- 學號int 登入密碼varchar(20) 姓名,性別varchar(2),出生日期(datatime),家庭地址,email
-- 注意點,使用英文(),表的 名稱 和 欄位 儘量使用 `` 括起來
-- auto increment 自增
-- 字串使用 單括號括起來!
-- 所有的語句後面加,(英文的),最後一個不用加
-- PRIMARY KEY(主鍵),一般一個表只有唯一的主鍵!
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學號',
`gradeid` VARCHAR(30) NOT NULL COMMENT'年級號碼',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密碼',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性別',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭地址',
`email` VARCHAR(50) DEFAULT NULL COMMENT'郵箱',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
格式
CREATE TABLE IF NOT EXISTS `表名`(
`欄位名` 列型別 [屬性] [索引] [註釋],
`欄位名` 列型別 [屬性] [索引] [註釋],
...
`欄位名` 列型別 [屬性] [索引] [註釋] --最後一個不加逗號
) [表型別][字符集設定][註釋]
常用命令
SHOW CREATE DATABASE school -- 檢視建立資料庫的語句
SHOW CREATE TABLE student -- 檢視student資料表的定義語句
DESC student -- 顯示錶的結構
2.5、資料表的型別
-- 關於資料庫引擎
/*
INNODB 預設使用~
MYISAM 早些年使用的
*/
MYISAM | INNODB | |
---|---|---|
事務支援 | 不支援 | 支援 |
資料行鎖定 | 不支援 | 支援 |
外來鍵約束 | 不支援 | 支援 |
全文索引 | 支援 | 不支援 |
表空間的大小 | 較小 | 較大,約為M的2倍 |
常規使用操作:
-
MYISAM 節約空間,速度較快
-
INNODB 安全性高,事務的處理,多表多使用者操作
在物理空間存在的位置
所有的資料庫檔案都存在data目錄下
本質還是檔案的儲存!
2.6 修改刪除表
修改:
-- 修改表:ALTER TABLE 舊錶名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teacher1
-- 增加表的欄位:ALTER TABLE 表名 ADD 欄位名 列屬性
ALTER TABLE teacher1 ADD age INT(11)
-- 修改表的欄位 (重新命名,修改約束!)
-- ALTER TABLE 表名 MODIFY 欄位名 列屬性()
ALTER TABLE teacher1 MODIFY age VARCHAR(11) -- 修改約束
-- ALTER TABLE 表名 CHANGE 舊名字 a新名字 列屬性()
ALTER TABLE teacher1 CHANGE age age1 INT(1) -- 欄位重新命名
-- 刪除表的欄位:ALTER TABLE 表名 DROP 欄位名
ALTER TABLE teacher1 DROP age1
刪除:
-- 刪除表
DROP TABLE IF EXISTS teacher1
所有的建立和刪除操作儘量加上判斷,以免報錯~
注意點:
-
`` 欄位名,使用這個包裹!
-
註釋 -- /**/
-
sql關鍵字大小寫不敏感,建議大家寫小寫
-
所有的符號全部用英文!
-